初探 AST 解混淆

AST 解混淆 分析在线网址:

https://www.astexplorer.net/

下载解析库:

npm install @babel/core

javascript 复制代码
const fs = require('fs')

// 解析
const parser = require("@babel/parser")
// 遍历
const traverse = require("@babel/traverse").default
// 类型判断
const types = require("@babel/types")

// 解完混淆后, 生成反混淆后的代码
const generator = require("@babel/generator").default

// 读取被混淆的文件
let jsCode = fs.readFileSync("encode.js", {encoding: "utf-8"});

// 解析成 AST
let ast = parser.parse(jsCode)

// 编写插件
plugs = {
    BinaryExpression(path) {
        let {left, operator, right} = path.node;

        if(types.isLiteral(left) && operator === "+" && types.isLiteral(right)){
            let newValue = left.value + right.value;

            // 创建新的节点
            let newNode = types.NumericLiteral(newValue);
            // 替换原有节点
            path.replaceWith(newNode)
        }
    }
}


// 遍历ast节点
traverse(ast, plugs)

// 生成新代码
let {code} = generator(ast)

console.log(code)
相关推荐
无限的鲜花6 小时前
反射(原创推荐)
java·开发语言
yongche_shi6 小时前
ragas官方文档中文版(五十)
开发语言·python·ai·ragas·如何评估和改进 rag 应用
一路向北he6 小时前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
kyriewen7 小时前
豆包和千问同时关了智能体,我用它们搭的 3 个自动化全废了——迁移方案整理
前端·javascript·ai编程
铁皮饭盒7 小时前
用 Bun.cron 定时 7 月 7 日,为啥? 看图1
javascript
AI行业学习8 小时前
Notepad++ 官方下载 + 完整安装 + 全套优化配置(2026最新)
开发语言·人工智能·python·前端框架·html·notepad++
大圣编程8 小时前
Python中continue语句的用法是什么?
开发语言·前端·python
upgrador9 小时前
基础知识:C++ STL构造函数的左闭右开惯例及其实现原理
开发语言·c++
之歆9 小时前
Vue商品详情与放大镜组件
前端·javascript·vue.js
yoothey10 小时前
报废审批流规则引擎设计——责任链模式完整实现
linux·开发语言·bash