咳咳,各位观众老爷晚上好!今天咱们不聊风花雪月,来点硬核的,聊聊怎么扒掉 Babel 或 TypeScript 编译后 AST 混淆的“马甲”,让代码裸奔! 今天的主题是:AST 遍历与节点替换:自动化反混淆的屠龙之术。 说起混淆,那真是前端攻城狮的噩梦。本来就头发稀疏,再来个混淆,简直是雪上加霜。但别怕,咱们今天就来学学怎么用 AST (Abstract Syntax Tree,抽象语法树) 这把锋利的宝剑,斩妖除魔,让混淆代码现出原形。 第一部分:AST 是个啥?为啥要用它? 首先,得搞清楚 AST 是个什么玩意儿。简单来说,AST 就是代码的一种树形结构表示。你可以把它想象成一棵语法树,每个节点代表代码中的一个语法结构,比如变量声明、函数调用、表达式等等。 举个例子,这段简单的 JavaScript 代码: const x = 1 + 2; console.log(x); 用 AST 表示出来,大概是这个样子(简化版): { “type”: “Program”, “body”: [ { “type”: “VariableDeclaration”, “declarations”: …
继续阅读“针对 Babel 或 TypeScript 编译后的 AST 混淆,如何利用 AST 遍历和节点替换进行自动化反混淆?”