由于 JavaScript 暂时无法直接编译成可执行的二进制代码,对 JavaScript 代码进行混淆加密,就是 JavaScript 代码保护的正确方法。
JavaScript 混淆加密有不少产品可用,有免费开源的,也有商业的。免费的比如uglifyjs 、javascript-obfuscator、商业的比如jscrambler、JShaman,特别值的一提的是jshaman,不但强大,而且是国产的,是具备研发能力,有核心竞争力的国内产品,在js代码保护领域,jscrambler是国际顶级的厂商,而国内的jshaman比它毫不逊色。比如一段js代码:function NewObject(prefix)。
在 JavaScript 开发中,有时候为了保护源码,需要对源码进行混淆加密。常见的混淆加密工具有不少,免费的比如 uglify.js 、ob、商业的比如jscrambler、JShaman。
uglify.js 官方定位并不是一款 JavaScript 加密工具。 所以 javascript-obfuscator 成了最好的选择。
安装:
npm install --g javascript-obfuscator
命令行使用方法:
javascript-obfuscator input_file_name.js [options] javascript-obfuscator input_file_name.js --output output_file_name.js [options] javascript-obfuscator input_file_name.js --output output_folder_name [options] javascript-obfuscator input_folder_name --output output_folder_name [options]
例子:
文件 test.js
'use strict'; let o = [,,,,,,,,,,,,,,,,,]; function getRandom(d) { return Math.random() * d; } for (var i = o.length - 1; i >= 0; i--) { o[i] = getRandom(100); } console.log(o);
执行命令:
javascript-obfuscator test.js --output m.js
输出文件 test_out.js
'use strict';(function(_0x17013f,_0x260db8){const _0x274df0=a0_0x2852,_0x1c2c50=_0x17013f();while(!![]){try{const _0x41e7ed=parseInt(_0x274df0(0x1ab))/0x1*(parseInt(_0x274df0(0x1b1))/0x2)+parseInt(_0x274df0(0x1a5))/0x3+-parseInt(_0x274df0(0x1b0))/0x4*(parseInt(_0x274df0(0x1ac))/0x5)+-parseInt(_0x274df0(0x1aa))/0x6*(parseInt(_0x274df0(0x1ad))/0x7)+parseInt(_0x274df0(0x1a7))/0x8*(-parseInt(_0x274df0(0x1af))/0x9)+parseInt(_0x274df0(0x1a6))/0xa*(-parseInt(_0x274df0(0x1a8))/0xb)+-parseInt(_0x274df0(0x1ae))/0xc*(-parseInt(_0x274df0(0x1a9))/0xd);if(_0x41e7ed===_0x260db8)break;else _0x1c2c50['push'](_0x1c2c50['shift']());}catch(_0x324814){_0x1c2c50['push'](_0x1c2c50['shift']());}}}(a0_0x54f5,0x2a1fc));let o=[,,,,,,,,,,,,,,,,,];function a0_0x2852(_0x116e6b,_0x1b62ce){const _0x54f5c4=a0_0x54f5();return a0_0x2852=function(_0x2852e2,_0x276002){_0x2852e2=_0x2852e2-0x1a4;let _0x182983=_0x54f5c4[_0x2852e2];return _0x182983;},a0_0x2852(_0x116e6b,_0x1b62ce);}function getRandom(_0x2f03d0){const _0x3f5c35=a0_0x2852;return Math[_0x3f5c35(0x1a4)]()*_0x2f03d0;}function a0_0x54f5(){const _0xfb28dc=['22ZGPglR','247ZinhrP','6FkaSmf','151458DEJNil','1855cMYnxi','1539517spHJWo','233916EmeETA','45idkVQf','2156xnqekJ','4xuloUM','random','876648aoiVDM','912320jCtFdF','304952XBOBdk'];a0_0x54f5=function(){return _0xfb28dc;};return a0_0x54f5();}for(var i=o['length']-0x1;i>=0x0;i--){o[i]=getRandom(0x64);}console['log'](o);
工具地址:
https://github.com/javascript-obfuscator/javascript-obfuscator
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。