JS逆向-代码混淆AST技术抽象语法树Obfuscator混淆还原接口数据节点AI生成
知识点:
JS逆向-代码混淆-AST语法树&AI辅助
OB混淆还原:
1、官方地址混淆:https://obfuscator.io/
2、国外平台还原:https://deobfuscate.io/
3、国外平台还原:https://webcrack.netlify.app/
4、国内平台还原:https://deli-c1ous.github.io/javascript-deobfuscator/
5、AI还原:https://www.deepseek.com/
演示案例-JS逆向-代码混淆-AST语法树&AI辅助
简单来说AST就是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码的一种结构,这种数据结构其实可以类比成一个大的JSON对象。第一词法分析
一段代码首先会被分解成段段有意义的词法单元,
比如const name="qc”这段代码,它可被折分成四部分:
1、const
2、name
3、=
4、qc
每个部分都具备一定的含义。第二语法分析
接着编译器会尝试对一个个法单元进行语法分析,将其转换为能代表程序语法结构的数据结构。
比如
1、const就被分析为VariableDeclaration类型,代表变量声明的具体定义;
2、name就被分析为ldentifier类型,代表一个标识符
3、qc就被分析为Literal类型,代表文本内容;第三指令生成
最后将AST转为可执行指令并执行类型的解释:
Literal:简单理解就是字面量,比如3、"abc"、null这些都是基本的字面量。在代码中又细分为数字字面量,字符字面量等;
Declarations:声明,通常声明方法或者变量。
Expressions:表达式,通常有两个作用:一个是放在赋值语句的右边进行赋值,另外还可以作为方法的参数。
Statemonts:语句。
Identifier:标识符,指代变量名,比如上述例子中的name就是ldentifier。
Classes:类,代表一个类的定义。
Functions:方法声明。
Modules:模块,可以理解为一个Node.js模块。
Program:程序,整个代码可以称为Program。
入门文章参考
https://mp.weixin.qq.com/s/bOc8PYbFdTyFRQcfSppo8w
https://mp.weixin.qq.com/s/rURCR085HiojW2_67enJkA
官网
https://astexplorer.net/
AI生成
自己手动写AST
代码还原太麻烦了,可以借助AI
来帮写。
把加密代码转换成AST
结构树后,通过node.js
代码替换一些类型值从而达到还原目的,如果AI
写的不能百分百还原,那就老老实实磨好AST
技术。