index.html 13 KB

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