爬虫 Web Js 逆向:常用的混淆、编码、加密介绍
注:代码混淆本质是对代码标识符和结果的调整,从而达到不可读不可调试的目的。
注:参数加密方法有的可解密,有的不可解密。
1. eval 混淆
eval 是浏览器 v8 引擎定义的一个方法,具有执行 Js 代码的能力。
eval(String):String 为要计算的 Js 表达式或要执行的语句
2. aa 混淆、jj 混淆
Js 支持 unicode 编码,因此可用 unicode 特性进行混淆。
aa 混淆:将 Js 代码转换为常用的网络表情
jj 混淆:将 Js 代码转换为只有符号的字符串(代码中会有很多 “$”)
3. Jsfuck 混淆
在 Js 中,false 可表示为 “![]”,true 可表示为 “!![]”,NaN 可表示为 “+[![]]”。
Jsfuck混淆:使用 6 个字符 “[ ] ! ( ) +” 进行混淆
4. OLLVM 混淆
OLLVM (Obfuscator-LLVM) 有三大功能:
控制流平坦化 (Control Flow Flattening)
虚假控制流 (Bogus Control Flow)
指令替换 (Instructions Substitution