javascript代码混淆的原理js代码加密软件
如何对JavaScript进⾏保护
代码压缩:
去除空格
换⾏等
代码加密:
eval
eval可以将其中的参数按照JavaScript的的语法进⾏解析并执⾏,其实就是将JavaScript的代码变成了eval的参数其中的⼀些字符会被按照特定的编码
可以使⽤eval加密的⽹站进⾏加密
www.jqueryfuns/tools/jsencode
加密前:console.log("hello")
加密后:eval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'^$'};c=1};while( c--)if(k[c])place(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('console.log("hello")',[],1,''.split('|'),0,{}))
因为可以将加密后的代码直接输出到控制台,所以这种加密⽅法是⾮常弱的
Emscripten
Emscripten是⼀个⽤于编译的⼯具链asm.js公司使⽤LLVM构建的WebAssembly可以让你在没有插件的情况下,在⽹络上运⾏C和C++。
核⼼:C/C++
编译:Emscripten
结果:asm.js
调⽤:JavaScript
就是⼀些核⼼的功能可以使⽤c或者c++来实现,然后通过Emscripten编译器来⽣成asm.js⽂件,然后就可以在浏览器⾥调⽤,就可以实现它的执⾏了,所以可以起到保护核⼼逻辑的功能了。
WebAssembly等
核⼼:C/C++
结果:wasm⽂件(字节码⽂件)运⾏速度会更快,体积会更⼩
调⽤:JavaScript
代码混淆:
变量混淆(将变量名变成⼀些⽆意义的可以来较乱的字符串(16进制)降低代码的可读性)
字符串混淆(进⾏加密或者是编码,⽬的:确保代码⾥⾯,不可以使⽤搜索的⽅式来查到原始的字符串)
属性加密(JavaScript⾥⾯有⼀些Object,可能是⼀些键值对,所以可以把对象进⾏加密的转换,就是把key-value的映射关系混淆掉)
控制流扁平化(打乱原有的代码的执⾏流程)
僵⼫代码注⼊(将⼀些⽆⽤的代码注⼊到我们的代码中,实现扰乱)
代码压缩(去除空格回车调试语句等等)
反调试 (⽆限debug、定时debug、debugger关键字)
多态变异(JavaScript⼀旦被调⽤,代码就变成和原来完全不同的代码,但是保证功能完全不变,避免代码被动态的分析调试)
锁定域名
反格式化
特殊编码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。