本文主要是介绍COC 来啦!!!困扰许多人的代码安全,终于找到解决办法了!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
不论是保护自己的代码安全,还是从晓衡微店购买开发者出售的游戏代码上线,有一个长期困扰大家的问题:“代码混淆”。
今天给大家推荐一款社区开发者「陈皮皮」的最新作品:COC 混淆插件
COC全称是:ccc-obfuscated-code,为什么要取这个名字呢?因为我猜想大多数人都玩过或听过 COC 这个词吧!
写文章、做游戏、卖东西都有一个共通的地方响亮的名字,可以提高打开机率!一点点小心得,在这里分享一下!言归正传,还是讲下 COC 插件的功能和使用方法:
安装步骤
step by setp
首先解压插件放到 CocosCreator 项目 packages 目录
打开项目,点击 [ 扩展 -> 代码混淆工具 -> 构建后自动混淆 ] (建议两步进入)
在弹出的COC 混淆工具面板上,勾选构建后自动混淆选项即可
新手引导
start
一般情况下,在我们仅需要在项目开发内部测试之后才会开启混淆功能,只需要将构建后自动混淆勾选上!
COC插件是基于 obfuscated 的,它提供了大量的可选择参数,COC 插件已经将这些参数可视化,一起来看看:
参数非常丰富,而且皮皮为了方便大家使用,还做了中文提示,只需要将鼠标移动到参数名字上就能显示了,看下图所示。
晓衡在使用时发现,构建到微信小游戏时需要将 selfDefending 选择关闭才行,不然游戏不能正常启动。还需要注意,一定要点击窗口最底部的保存按钮才能生效哦!更多参数的说明!
24小时秒杀进行中,仅要6.66元
感谢大家支持一下骨瘦如柴的陈皮皮
参数详解
arguments
以下为陈皮皮人通俗易懂的翻译,如果有不懂,欢迎留言!!!
compact
类型:boolean
| 默认值:true
将代码压缩至一行。
controlFlowFlattening
类型:boolean
| 默认值:false
注意:该选项将严重影响性能,影响高达 1.5 倍。使用
controlFlowFlatteningThreshold
选项来控制转换概率。开启代码控制流扁平化。控制流扁平化会转换源代码的结构,阻碍程序的阅读理解。
controlFlowFlatteningThreshold
类型:number
| 默认值:0.75
| 最小值:0
| 最大值:1
应用控制流扁平化的概率。
这个设置对于代码体积大的情况非常有用,因为大量的控制流转换会降低代码的运行速度并且增加代码的体积。
controlFlowFlatteningThreshold:0
等同于controlFlowFlattening:false
。
deadCodeInjection
类型:boolean
| 默认值:false
注意:该选项会急剧增加代码的体积(甚至高达 200%),如果不在乎代码体积可以使用该选项。可以使用
deadCodeInjectionThreshold
来设置添加无用代码的比例。注意:开启这个选项会强制开启
stringArray
选项。开启这个选项时会向源代码随机添加无用的代码。
deadCodeInjectionThreshold
类型:number
| 默认值:0.4
| 最小值:0
| 最大值:1
设置
deadCodeInjection
的比例。
debugProtection
类型:boolean
| 默认值:false
注意:打开 DevTools 可能会让浏览器卡住。
开启这个选项之后 DevTools 的 console 栏基本上就不能用了(基于 WebKit 的浏览器和火狐都通杀)。
debugProtectionInterval
类型:boolean
| 默认值:false
注意:会让浏览器卡住!后果自负。
开启之后,会让调试模式定期聚焦到 Console 栏,让 DevTools 的其他功能也没法用。这个选项需要开启了
debugProtection
才有效。
disableConsoleOutput
类型:boolean
| 默认值:false
禁用
console.log
、console.info
、console.error
、console.warn
、console.debug
、console.exception
和console.trace
,具体实现是用空的函数替换掉这些函数。让人更难调试程序。
domainLock
类型:string[]
| 默认值:[]
注意:当
target:node
时这个选项无效让程序只能运行在特定的域名或子域名下。这让那些只是复制粘贴代码的人(CV工程师~)更难受了。
可以同时锁定多个域名。举个栗子,要让程序只能运行在 www.example.com 就添加
www.example.com
。要运行在 example.com 的所有子域名下的话就用.example.com
。
exclude
类型:string[]
| 默认值:[]
需要在混淆过程中排除的文件名。
identifierNamesGenerator
类型:string
| 默认值:'hexadecimal'
设置标识符生成器。
可用值:
dictionary
:从identifiersDictionary
列表中获取标识符
hexadecimal
:和_0xabc123
类似的标识符
mangled
:和a
、b
、c
类似的短标识符
identifiersDictionary
类型:string[]
| 默认值:[]
设置
identifierNamesGenerator
的标识符字典。
identifiersPrefix
类型:string
| 默认值:''
设置全局标识符的前缀。
当你需要混淆多个文件的时候使用这个。开启后可以避免多个文件之间的全局标识符冲突。每个文件的前缀都应该不一样。
inputFileName
类型:string
| 默认值:''
设置源代码的输入文件名字。这个名字将用于内部生成 source map 。
log
类型:boolean
| 默认值:false
打印日志到控制台。
renameGlobals
类型:boolean
| 默认值:false
注意:可能会让你的代码爆炸。如果你是大佬,当我没说。
混淆自定义的全局变量和函数。
reservedNames
类型:string[]
| 默认值:[]
保留标识符,支持正则表达式。
reservedStrings
类型:string[]
| 默认值:[]
保留字符串,支持正则表达式。
rotateStringArray
类型:boolean
| 默认值:true
注意:要开启
stringArray
才有用根据一个固定和随机(混淆时生成)的位置变换
stringArray
。这会让人难以匹配字符串到他们原来的位置。如果你的代码体积不小那建议你使用这个。
seed
类型:string|number
| 默认值:0
设置随机种子。
当种子为
0
时,随机生成器就不会使用随机种子。
selfDefending
类型:boolean
| 默认值:false
注意:开启这个选项之后不要对混淆后的代码进行任何更改,因为任何更改(例如丑化代码)都会触发自我保护导致代码无法运行。
注意:开启这个选项会强制将
compact
设为true
开启这个选项之后就不能对代码进行格式化或者重命名变量。任何人尝试美化混淆后的代码,都会让代码无法运行,使得代码难以理解和更改。
shuffleStringArray
类型:boolean
| 默认值:true
注意:要开启
stringArray
才有用对
stringArray
的内容随机洗牌。
sourceMap
类型:boolean
| 默认值:false
生成混淆后的代码的 source map 。
Source maps 对于调试混淆后的代码很有帮助。如果你想要或者需要对产品进行调试,可以上传单独的 source map 文件到一个安全的地方,然后引用到浏览器中。
sourceMapBaseUrl
类型:string
| 默认值:''
设置当
sourceMapMode:'separate'
时的 source map 导入 url 的 BaseUrl。
sourceMapFileName
类型:string
| 默认值:''
设置当
sourceMapMode:'separate'
时的 source map 输出名称。
sourceMapMode
类型:string
| 默认值:'separate'
指定 source map 的生成模式。
inline
- 发送包含 source map 的单个文件而不是生成单独的文件。
separate
- 生成与 source map 对应的 '.map' 文件。
splitStrings
类型:boolean
| 默认值:false
根据
splitStringsChunkLength
将字符串分成指定长度的块。
splitStringsChunkLength
类型:number
| 默认值:10
设置
splitStrings
的块长度。
stringArray
类型:boolean
| 默认值:true
移除并用指定的列表替换字符串。举个栗子,
varm="Hello World";
中的字符串HelloWorld
将会被替换,语句会变成类似varm=_0x12c456[0x1];
的形式。
stringArrayEncoding
类型:boolean|string
| 默认值:false
注意:要开启
stringArray
才有用这个选项会降低脚本的速度。
用
base64
或者rc4
来加密stringArray
中的字符串,并且插入特定的代码用来运行时解密。可用值:
true
(boolean
):用base64
加密stringArray
字符串
false
(boolean
):不加密stringArray
字符串
base64
(string
):用base64
加密stringArray
字符串
rc4
(string
):用rc4
加密stringArray
字符串。比base64
慢大概 30 - 50% ,但是让人更难获取初始值。
stringArrayThreshold
类型:number
| 默认值:0.75
| 最小值:0
| 最大值:1
注意:要开启
stringArray
才有用你可以设置这个来调整字符串插入
stringArray
的概率。这个设置对于代码体积大的情况特别有用。
stringArrayThreshold:0
等同于stringArray:false
。
target
类型:string
| 默认值:'browser'
允许你设置混淆后的代码的运行环境。
可用值:
browser
;
browser-no-eval
;
node
。目前
browser
和node
的输出代码是完全一样的,但是某些特定的浏览器不能用node
。browser-no-eval
的输出代码没有使用eval
。
transformObjectKeys
类型:boolean
| 默认值:false
开启 Object 的 key 转换。
unicodeEscapeSequence
类型:boolean
| 默认值:false
开启或禁用字符串的 Unicode 转义序列。
开启该选项会大大增加代码的体积,同时字符串也不难被恢复。只建议代码体积小的情况下使用这个选项。
这篇关于COC 来啦!!!困扰许多人的代码安全,终于找到解决办法了!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!