初探 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)
相关推荐
掘金安东尼1 天前
⏰前端周刊第 456 期(v2026.3.15)
前端·javascript·面试
还是大剑师兰特1 天前
Vue3 通用可复用动态插槽组件(终极版)
前端·javascript·vue.js
lsx2024061 天前
XML Schema anyAttribute 元素详解
开发语言
nibabaoo1 天前
前端开发攻略---在 Vue 3 项目中使用 vue-i18n 实现国际化多语言
前端·javascript·国际化·i18n·vue3
阿里嘎多学长1 天前
2026-03-14 GitHub 热点项目精选
开发语言·程序员·github·代码托管
wjs20241 天前
JavaScript 类继承
开发语言
qq_437100661 天前
ElasticSearch相关记录
大数据·前端·javascript·elasticsearch·全文检索
行者-全栈开发1 天前
JDK 17 + Spring Boot 3.5.8:企业级开发技术栈全景
java·开发语言·spring boot·系统架构·技术栈·系统架构全景分析·springboot技术栈
“抚琴”的人1 天前
SqlSugar 文档
开发语言·数据库·c#·sqlsugar
浅念-1 天前
C++11 核心知识点整理
开发语言·数据结构·c++·笔记·算法