美文网首页
Babel - AST反混淆入门

Babel - AST反混淆入门

作者: 会爬虫的小蟒蛇 | 来源:发表于2022-08-12 18:30 被阅读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
    

    相关文章

      网友评论

          本文标题:Babel - AST反混淆入门

          本文链接:https://www.haomeiwen.com/subject/jqgqgrtx.html