Babel - AST反混淆入门

2022-08-12  本文已影响0人  会爬虫的小蟒蛇

安装

npm init -y
npm install --save-dev @babel/core @babel/cli

如何出现安装报错,可以尝试将npm切换到v14.0.0版本

测试是否安装成功

// 创建 babelTest.js 文件

// 引入 babel 核心库
var babel = require("@babel/core")

// 需要转换的 js 代码
var code = "var a = 1"

// 转换
// 第一个参数是需要转换的js代码  第二个参数是转换配置 参考插件文档
var result = babel.transform(code, {ast: true});
console.log(result.ast.program.body);

// node .\babelTest.js 运行js文件

Ast替换

// 创建 read.js
var a = 1;
// 创建 run.js 

// 将JS源码转换成语法树
var parser = require("@babel/parser");
// 为parser提供模板引擎
var template = require("@babel/template").default;
// 遍历AST
var traverse = require("@babel/traverse").default;
// 操作节点,比如判断节点类型,生成新的节点等
var t = require("@babel/types");
// 将语法树转换为源代码
var generator = require("@babel/generator").default;

// 操作文件 引入fs(file流)
var fs = require("fs");
// 读入待处理文件
var code = fs.readFileSync("./read.js", {
    encoding: "utf-8"
});
// 转换为 ast
var ast = parser.parse(code);
// 需要遍历的类型
var traverses = {
    // 参考官方文档的 types
    VariableDeclarator(path){
        path.node.init = t.stringLiteral("->> Str")
    }
}
traverse(ast, traverses)
var gcode = generator(ast)
console.log(gcode)

// node .\run.js 运行run.js
上一篇下一篇

猜你喜欢

热点阅读