Files
ccc-obfuscated-code/panel/index.html
陈皮皮 dc349b6966 update
2020-08-02 19:19:28 +08:00

149 lines
14 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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}/&#10;· 绝对路径如E:\hahaha\build\web-mobile\src\project.js&#10;* 多个值之间用 ',' 隔开">
<ui-checkbox v-value="useAbsPath">绝对路径?</ui-checkbox>
<ui-text-area v-show="extraFiles != ''" class="flex-1" type="string" v-value="extraFiles"></ui-text-area>
<ui-input v-show="extraFiles == ''" class="flex-1" type="string" v-value="extraFiles"></ui-input>
</ui-prop>
<hr /> -->
<ui-prop name="预设"
tooltip="· 可用值:&#10;- 高度混淆,性能较低:性能比不混淆慢 50 - 100%&#10;- 中度混淆,性能均衡:性能比不混淆慢 30 - 50%&#10;- 轻度混淆,性能较高:性能只会比不混淆稍微慢一点点">
<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="· 皮皮:就是将代码逻辑扁平化了。&#10;· 注意:该选项将严重影响性能,影响高达 1.5 倍。使用 controlFlowFlatteningThreshold 选项来控制转换概率。&#10;· 开启代码控制流扁平化。控制流扁平化会转换源代码的结构,阻碍程序的阅读理解。">
</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="· 皮皮:就是往代码里面随机加一些没有用的代码,迷惑敌人~&#10;· 注意:该选项会大大增加代码的体积(甚至高达 200%)。可以使用 deadCodeInjectionThreshold 来设置添加的比例。&#10;· 注意:开启这个选项会强制使用 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 &#10;· 原理是用空的函数替换掉这些函数。">
</ui-prop>
<ui-prop name="domainLock域名锁定" type="string" v-value="options.domainLock"
tooltip="· 让程序只能运行在特定的域名或子域名下。&#10;· 可以同时锁定多个域名。举个栗子,要让程序只能运行在 www.example.com 就添加 www.example.com 。要运行在 example.com 的所有子域名下的话就用 .example.com 。&#10;* 多个值之间用 ',' 隔开">
</ui-prop>
<ui-prop name="identifierNamesGenerator标识符生成器" type="enum" v-value="options.identifierNamesGenerator"
tooltip="· 设置标识符生成器。&#10;· 可用值:&#10;- dictionary从 identifiersDictionary 列表中获取标识符&#10;- hexadecimal和 _0xabc123 类似的标识符&#10;- 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 的标识符字典。&#10;* 多个值之间用 ',' 隔开">
</ui-prop>
<ui-prop name="identifiersPrefix标识符前缀" type="string" v-value="options.identifiersPrefix"
tooltip="· 设置全局标识符的前缀。&#10;· 当你需要混淆多个文件的时候使用这个。开启后可以避免多个文件之间的全局标识符冲突。每个文件的前缀都应该不一样。"></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="· 混淆全局变量和函数。&#10;· 注意:可能会让你的代码笋干爆炸。(害怕.jpg"></ui-prop>
<ui-prop name="reservedNames保留变量名" type="string" v-value="options.reservedNames"
tooltip="· 保留标识符,让其不被混淆,支持正则表达式。&#10;* 多个值之间用 ',' 隔开"></ui-prop>
<ui-prop name="reservedStrings保留字符串" type="string" v-value="options.reservedStrings"
tooltip="· 保留字符串,让其不被混淆,支持正则表达式。&#10;* 多个值之间用 ',' 隔开"></ui-prop>
<ui-prop name="seed随机种子" type="string" v-value="options.seed"
tooltip="· 设置随机种子(number | string)。&#10;· 当种子为 0 时,随机生成器就不会使用随机种子。"></ui-prop>
<ui-prop name="selfDefending修改保护" type="boolean" v-value="options.selfDefending"
tooltip="· 警告:微信平台请勿开启此选项!&#10;· 注意:开启这个选项之后不要对混淆后的代码进行任何更改,因为任何更改(例如丑化代码)都会触发自我保护导致代码无法运行。&#10;· 注意:开启这个选项会强制将 compact 设为 true &#10;· 开启这个选项之后就不能对代码进行格式化或者重命名变量。任何人尝试美化混淆后的代码,都会让代码无法运行,使得代码难以理解和更改。">
</ui-prop>
<!-- <ui-prop name="sourceMap" type="boolean" v-value="options.sourceMap"
tooltip="· 生成混淆后的代码的 source map 。&#10;· 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 的生成模式。&#10;- inline发送包含 source map 的单个文件而不是生成单独的文件。&#10;- 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="· 移除并用指定的列表替换字符串。&#10;· 举个栗子, 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="· 设置字符串替换的概率。&#10;· stringArrayThreshold: 0 等同于 stringArray: false 。">
</ui-prop>
<ui-prop name="stringArrayEncoding加密" v-if="options.stringArray" indent="1" type="enum"
v-value="options.stringArrayEncoding"
tooltip="· 这个选项会降低脚本的运行速度。&#10;· 用 base64 或者 rc4 来加密字符串列表中的字符串,并且插入特定的代码用来运行时解密。&#10;· 可用值:&#10;- trueboolean用 base64 加密 stringArray 字符串&#10;- falseboolean不加密 stringArray 字符串&#10;- base64string用 base64 加密 stringArray 字符串&#10;- rc4string用 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="· 皮皮:随机变换字符串列表中元素的位置。&#10;· 变幻莫测,女少 口阿 ">
</ui-prop>
<!-- <ui-prop disabled name="target" type="enum" v-value="options.target"
tooltip="· 允许你设置混淆后的代码的运行环境。&#10;· 可用值:&#10;- browser;&#10;- browser-no-eval;&#10;- node。&#10;· 目前 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 转换。&#10;· 皮皮:将对象转换成多个复杂变量的组合(反正就是丑)。"></ui-prop>
<ui-prop name="unicodeEscapeSequence转 Unicode" type="boolean" v-value="options.unicodeEscapeSequence"
tooltip="· 皮皮:将字符转为 Unicode 格式,看起来又长又臭,但是实际上很容易恢复。&#10;· 而且开启该选项会大大增加代码的体积(不骗你)。"></ui-prop>
</div>
<br>
<ui-button class="button blue big" v-disabled="isSaving" @click="saveConfig()">保存</ui-button>
</ui-box-container>
<br>
</div>