JS 逆向中的常见混淆
一、eval混淆
- eval介绍:V8引擎定义的方法,具有执行JS代码的功能,一般用于隐藏真实代码,嵌套很多个eval
//eval("function cc(){return '52Hz'} cc()")
//单重转码
//eval(atob("ZnVuY3Rpb24gY2MoKXtyZXR1cm4gJzUySHonfSBjYygp"))
//多重转码
//"eval(\"function cc(){return atob('NTJIeg==')} cc()\")"
eval(atob("ZXZhbCgiZnVuY3Rpb24gY2MoKXtyZXR1cm4gYXRvYignTlRKSWVnPT0nKX0gY2MoKSIp"))
二、AA和OO混淆
JS支持unicode所以可以借助多国语言进行混淆代码
通过AA加密并执行
https://www.sojson.com/aaencode.html 加解密工具
AA和OO拦截
他们的原理都是通过eval去执行一段代码的,
有没有比较针对的手段去破解此类加密呢?
可以将eval或者Function进行替换。
sojson.$ = function(){debugger;}
三、JSFuck混淆
- 任何一个js类型的变量结果 加上一个字符串 ,只会变成字符串。