JavaScript 代码混淆加密工具 javascript-obfuscator

由于 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

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
随机推荐
JavaScript 和 CSS 检测横屏适配
如何使主题支持 Woocommerce
FFmpeg 修改默认音轨
WordPress 主题激活和取消激活钩子
Node.js 实现 RBAC 权限模型
JavaScript 的历史
WordPress 中如何在主题和插件中使用
Node.js 控制台进度条实现原理