/*
* 安装 npm install @babel/core
* */
// 将JS源码转换成语法树
const parser = require("@babel/parser");
// 为parser提供模板引擎
const template = require("@babel/template").default;
// 遍历AST
const traverse = require("@babel/traverse").default;
// 操作节点,比如判断节点类型,生成新的节点等
const t = require("@babel/types");
// 将语法树转换为源代码
const generator = require("@babel/generator").default;
// 操作文件
const fs = require("fs");
//
const path = require('path');
//read.js内容var a = 1;
var jscode = fs.readFileSync("read.js", {
encoding: "utf-8"
});
console.log(jscode);
let ast = parser.parse(jscode);
var traverses = {
VariableDeclarator(path) {
console.log(path.node.init.value);
console.log("Called!");
path.node.init = t.stringLiteral('nihao');
}
}
traverse(ast,traverses);
var gcode = generator(ast);
console.log(gcode);
如有问题,请私信。
tL+8vMr1vbvB96Osx+vO8NPD09q3x7eo08PNvqGjDQoNCsTmz/LP4LnYv86zzKGiSlOyubu3vrO/zrPMoaJKQVZBz+C52L/Os8zI59Do0qrSsr/J0tTBqs+1UVGhow0KDQrX99XfIFFRIDQwNDU0MDIyOQ==
AST作为反混淆的神器,很多人都补知道如何使用,这是一个AST的简单DEMO,可破解常见的sojson混淆,完整版请私信。