123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <div class="container">
- <h2>配置面板</h2>
- <ui-box-container class="layout vertical left">
- <div>
- <ui-prop name="构建后自动混淆" type="boolean" v-value="auto" tooltip="· 项目构建完成后根据已保存配置自动混淆代码。"></ui-prop>
- <hr />
- <ui-prop name="需要混淆的文件" style='height: 50;'
- tooltip="· 默认根目录为项目导出目录 build/{dest}/ · 绝对路径如:E:\hahaha\build\web-mobile\src\project.js * 多个值之间用 ',' 隔开">
- <ui-checkbox v-value="useAbsPath">绝对路径?</ui-checkbox>
- <ui-text-area class="flex-1" type="string" v-value="files"></ui-text-area>
- </ui-prop>
- <hr />
- <ui-prop name="预设"
- tooltip="· 可用值: - 高度混淆,性能较低:性能比不混淆慢 50 - 100% - 中度混淆,性能均衡:性能比不混淆慢 30 - 50% - 轻度混淆,性能较高:性能只会比不混淆稍微慢一点点">
- <ui-select class="flex-1" v-value="preset">
- <option value="default">默认(全部参数设为默认值)</option>
- <option value="high">高度混淆,性能较低(降低 50 - 100% 性能)</option>
- <option value="mid">中度混淆,性能均衡(降低 30 - 50% 性能)</option>
- <option value="low">轻度混淆,性能较高(对性能影响较小)</option>
- <option value="lower">究极轻度混淆(轻到飞起啦)</option>
- </ui-select>
- <ui-button class="tiny green" @click="getPreset()">读取</ui-button>
- </ui-prop>
- <div class="layout horizontal justified">
- <ui-hint class="tiny top" position="-288px">参数太多不知道怎么选?试试预设吧!一般项目轻度混淆就足够啦~</ui-hint>
- <ui-hint class="tiny top" position="-26px">读取预设不会自动保存</ui-hint>
- </div>
- <hr />
- <ui-hint>
- · 鼠标移到参数上有中文(人话)说明,另外中文文档在这里 <a href="https://gitee.com/ifaswind/ccc-obfuscated-code">传送门</a>
- <br>
- · 不适用于 Cocos 的参数已经隐藏,但是不同平台间参数具体表现有差异,不一定都能用,建议多多测试~
- <br>
- · 选好参数不要忘记保存!保存按钮在页面底部~
- </ui-hint>
- <ui-prop readonly name="compact" type="boolean" v-value="options.compact" tooltip="· 将代码压缩至一行。"></ui-prop>
- <ui-prop name="controlFlowFlattening" type="boolean" v-value="options.controlFlowFlattening"
- tooltip="· 皮皮:就是将代码逻辑扁平化了。 · 注意:该选项将严重影响性能,影响高达 1.5 倍。使用 controlFlowFlatteningThreshold 选项来控制转换概率。 · 开启代码控制流扁平化。控制流扁平化会转换源代码的结构,阻碍程序的阅读理解。">
- </ui-prop>
- <ui-prop name="controlFlowFlatteningThreshold" v-if="options.controlFlowFlattening" indent="1" type="number"
- v-value="options.controlFlowFlatteningThreshold" step="0.01" min="0" max="1" tooltip="· 应用控制流扁平化的概率。"></ui-prop>
- <ui-prop name="deadCodeInjection" type="boolean" v-value="options.deadCodeInjection"
- tooltip="· 皮皮:就是往代码里面随机加一些没有用的代码,迷惑敌人~ · 注意:该选项会大大增加代码的体积(甚至高达 200%)。可以使用 deadCodeInjectionThreshold 来设置添加的比例。 · 注意:开启这个选项会强制使用 stringArray 。">
- </ui-prop>
- <ui-prop name="deadCodeInjectionThreshold" v-if="options.deadCodeInjection" indent="1" type="number"
- v-value="options.deadCodeInjectionThreshold" step="0.01" min="0" max="1" tooltip="· 设置无用代码注入的比例。">
- </ui-prop>
- <ui-prop name="debugProtection" type="boolean" v-value="options.debugProtection"
- tooltip="· 皮皮:开启该选项之后开着 DevTools 就进不了游戏,但是进游戏之后再打开 DevTools 是没问题的。如果想要完全没法使用 DevTools ,需要配合 debugProtectionInterval 一起使用。">
- </ui-prop>
- <ui-prop name="debugProtectionInterval" v-if="options.debugProtection" type="boolean"
- v-value="options.debugProtectionInterval" tooltip="· 皮皮:让 DevTools 一直没法用!">
- </ui-prop>
- <ui-prop name="disableConsoleOutput" type="boolean" v-value="options.disableConsoleOutput"
- tooltip="· 禁用 console.log, console.info, console.error, console.warn, console.debug, console.exception, console.trace · 原理是用空的函数替换掉这些函数。">
- </ui-prop>
- <ui-prop name="domainLock" type="string" v-value="options.domainLock"
- tooltip="· 让程序只能运行在特定的域名或子域名下。 · 可以同时锁定多个域名。举个栗子,要让程序只能运行在 www.example.com 就添加 www.example.com 。要运行在 example.com 的所有子域名下的话就用 .example.com 。 * 多个值之间用 ',' 隔开">
- </ui-prop>
- <ui-prop name="identifierNamesGenerator" type="enum" v-value="options.identifierNamesGenerator"
- tooltip="· 设置标识符生成器。 · 可用值: - dictionary:从 identifiersDictionary 列表中获取标识符 - hexadecimal:和 _0xabc123 类似的标识符 - mangled:和 a 、 b 、 c 类似的短标识符">
- <div class="user-content">
- <option disabled value="dictionary">dictionary (不可用)</option>
- <option value="hexadecimal">hexadecimal</option>
- <option value="mangled">mangled (推荐)</option>
- </div>
- </ui-prop>
- <ui-prop name="identifiersDictionary" v-if="options.identifierNamesGenerator == 'dictionary'" type="string"
- v-value="options.identifiersDictionary" tooltip="· 设置 identifierNamesGenerator 的标识符字典。 * 多个值之间用 ',' 隔开">
- </ui-prop>
- <ui-prop name="identifiersPrefix" type="string" v-value="options.identifiersPrefix"
- tooltip="· 设置全局标识符的前缀。 · 当你需要混淆多个文件的时候使用这个。开启后可以避免多个文件之间的全局标识符冲突。每个文件的前缀都应该不一样。"></ui-prop>
- <!-- <ui-prop name="log" type="boolean" v-value="options.log" tooltip="· 打印日志到控制台。"></ui-prop> -->
- <ui-prop name="renameGlobals" type="boolean" v-value="options.renameGlobals"
- tooltip="· 混淆全局变量和函数。 · 注意:可能会让你的代码笋干爆炸。(害怕.jpg)"></ui-prop>
- <ui-prop name="reservedNames" type="string" v-value="options.reservedNames"
- tooltip="· 保留标识符,让其不被混淆,支持正则表达式。 * 多个值之间用 ',' 隔开"></ui-prop>
- <ui-prop name="reservedStrings" type="string" v-value="options.reservedStrings"
- tooltip="· 保留字符串,让其不被混淆,支持正则表达式。 * 多个值之间用 ',' 隔开"></ui-prop>
- <ui-prop name="seed" type="string" v-value="options.seed"
- tooltip="· 设置随机种子(number | string)。 · 当种子为 0 时,随机生成器就不会使用随机种子。"></ui-prop>
- <ui-prop name="selfDefending" type="boolean" v-value="options.selfDefending"
- tooltip="· 警告:微信平台请勿开启此选项! · 注意:开启这个选项之后不要对混淆后的代码进行任何更改,因为任何更改(例如丑化代码)都会触发自我保护导致代码无法运行。 · 注意:开启这个选项会强制将 compact 设为 true · 开启这个选项之后就不能对代码进行格式化或者重命名变量。任何人尝试美化混淆后的代码,都会让代码无法运行,使得代码难以理解和更改。">
- </ui-prop>
- <!-- <ui-prop name="sourceMap" type="boolean" v-value="options.sourceMap"
- tooltip="· 生成混淆后的代码的 source map 。 · Source maps 对于调试混淆后的代码很有帮助。如果你想要或者需要对产品进行调试,可以上传单独的 source map 文件到一个安全的地方,然后引用到浏览器中。">
- </ui-prop>
- <ui-prop name="sourceMapMode" v-if="options.sourceMap" indent="1" type="enum" v-value="options.sourceMapMode"
- tooltip="· 指定 source map 的生成模式。 - inline:发送包含 source map 的单个文件而不是生成单独的文件。 - separate:生成与 source map 对应的 '.map' 文件。">
- <div class="user-content">
- <option value="inline">inline</option>
- <option value="separate">separate</option>
- </div>
- </ui-prop>
- <ui-prop name="inputFileName" v-if="options.sourceMap" indent="1" type="string" v-value="options.inputFileName"
- tooltip="· 设置源代码的输入文件名字。这个名字将用于内部生成 source map 。"></ui-prop>
- <ui-prop name="sourceMapBaseUrl" v-if="options.sourceMap && options.sourceMapMode == 'separate'" indent="1"
- type="string" v-value="options.sourceMapBaseUrl"
- tooltip="· 设置当 sourceMapMode: 'separate' 时的 source map 导入 url 的 BaseUrl。">
- </ui-prop>
- <ui-prop name="sourceMapFileName" v-if="options.sourceMap && options.sourceMapMode == 'separate'" indent="1"
- type="string" v-value="options.sourceMapFileName" tooltip="· 设置当 sourceMapMode: 'separate' 时的 source map 输出名称。">
- </ui-prop> -->
- <ui-prop name="splitStrings" type="boolean" v-value="options.splitStrings"
- tooltip="· 根据 splitStringsChunkLength 将字符串分成指定长度的块。"></ui-prop>
- <ui-prop name="splitStringsChunkLength" v-if="options.splitStrings" indent="1" type="number"
- v-value="options.splitStringsChunkLength" tooltip="· 设置字符串块的最大长度。"></ui-prop>
- <ui-prop name="stringArray" type="boolean" v-value="options.stringArray"
- tooltip="· 移除并用指定的列表替换字符串。 · 举个栗子, var m = 'Hello World'; 中的字符串 Hello World 将会被替换,语句会变成类似 var m = _0x12c456[0x1]; 的形式。">
- </ui-prop>
- <ui-prop name="stringArrayThreshold" v-if="options.stringArray" indent="1" type="number"
- v-value="options.stringArrayThreshold" step="0.01" min="0" max="1"
- tooltip="· 设置字符串替换的概率。 · stringArrayThreshold: 0 等同于 stringArray: false 。">
- </ui-prop>
- <ui-prop name="stringArrayEncoding" v-if="options.stringArray" indent="1" type="enum"
- v-value="options.stringArrayEncoding"
- tooltip="· 这个选项会降低脚本的运行速度。 · 用 base64 或者 rc4 来加密字符串列表中的字符串,并且插入特定的代码用来运行时解密。 · 可用值: - true(boolean):用 base64 加密 stringArray 字符串 - false(boolean):不加密 stringArray 字符串 - base64(string):用 base64 加密 stringArray 字符串 - rc4(string):用 rc4 加密 stringArray 字符串。比 base64 慢大概 30 - 50% ,但是让人更难获取初始值。">
- <div class="user-content">
- <option value="true">true</option>
- <option value="false">false</option>
- <option value="base64">base64</option>
- <option value="rc4">rc4</option>
- </div>
- </ui-prop>
- <ui-prop name="shuffleStringArray" v-if="options.stringArray" indent="1" type="boolean"
- v-value="options.shuffleStringArray" tooltip="· 皮皮:对字符串列表进行随机洗牌打乱。"></ui-prop>
- <ui-prop name="rotateStringArray" v-if="options.stringArray" indent="1" type="boolean"
- v-value="options.rotateStringArray" tooltip="· 皮皮:随机变换字符串列表中元素的位置。 · 变幻莫测,女少 口阿 !">
- </ui-prop>
- <!-- <ui-prop disabled name="target" type="enum" v-value="options.target"
- tooltip="· 允许你设置混淆后的代码的运行环境。 · 可用值: - browser; - browser-no-eval; - node。 · 目前 browser 和 node 的输出代码是完全一样的,但是某些特定的浏览器不能用 node 。 browser-no-eval 的输出代码没有使用 eval 。">
- <div class="user-content">
- <option value="browser">browser</option>
- <option value="browser-no-eval">browser-no-eval</option>
- <option value="node">node</option>
- </div>
- </ui-prop> -->
- <ui-prop name="transformObjectKeys" type="boolean" v-value="options.transformObjectKeys"
- tooltip="· 开启 Object 的 key 转换。 · 皮皮:将对象转换成多个复杂变量的组合(反正就是丑)。"></ui-prop>
- <ui-prop name="unicodeEscapeSequence" type="boolean" v-value="options.unicodeEscapeSequence"
- tooltip="· 皮皮:将字符转为 Unicode 格式,看起来又长又臭,但是实际上很容易恢复。 · 而且开启该选项会大大增加代码的体积(不骗你)。"></ui-prop>
- </div>
- <br>
- <ui-button class="button blue big" v-disabled="isSaving" @click="saveConfig()">保存</ui-button>
- </ui-box-container>
- <br>
- </div>
|