wbthemes/Js-DeObfuscator
GitHub: wbthemes/Js-DeObfuscator
基于 Babel AST 的 JavaScript 全自动反混淆工具,支持字符串解密、控制流还原和代码整形。
Stars: 0 | Forks: 0
## 功能亮点
| 功能 | 说明 |
| --- | --- |
| **解密入口定位** | 按字符串数组长度、解密器调用次数或手动注入代码/解密器名称进行定位 |
| **字符串解密** | 识别字符串数组与旋转器,展开解密器封装并用明文替换调用点 |
| **控制流还原** | 展开控制流平坦化、移除死代码/花指令、合并对象属性与赋值 |
| **代码整形** | Unminify、美化、变量重命名(hex/short/custom),可选关键字标记 |
| **自卫清理** | 移除 self-defending / anti-debug 逻辑,支持多轮执行处理重度混淆 |
| **多形态使用** | CLI、浏览器 Playground、TypeScript API,并附带真实案例集合 |
## 快速开始
### CLI / 本地
git clone https://github.com/kuizuo/js-deobfuscator
cd js-deobfuscator
pnpm install
# 处理单个文件并写入目录 (生成 output.js)
pnpm exec deob path/to/input.js -o ./out
# 也可通过 stdin 使用
cat path/to/input.js | pnpm exec deob > output.js
快速体验:将混淆代码放到 `tmp/input.js`,执行 `pnpm tmp`,结果会输出到 `tmp/output.js`。
### 编程接口
import { readFileSync } from 'node:fs'
import { deob } from 'deob'
const code = readFileSync('input.js', 'utf8')
const { code: outputCode, save } = await deob(code, {
decoderLocationMethod: 'callCount',
decoderCallCount: 300,
mangleMode: 'hex',
})
await save('./out') // 写入 out/output.js
## 示例与案例
`example/` 下收录了多组真实混淆样本,每个子目录包含:
- `index.ts`: 配置/驱动脚本执行。
- `input.js` / `output.js` : 输入、还原结果与美化对比。
- `setupCode.js`: 运行前注入的自定义代码。
## 项目结构
- `packages/deob`: 核心 AST 变换与 CLI (`deob` 二进制)。
- `website`: Nuxt 3 + Monaco 的在线 Playground。
- `example`: 真实混淆案例与演示脚本。
- `tmp`: 简单的本地快速体验目录。
## 致谢
该项目引用并受到 [j4k0xb/webcrack](https://github.com/j4k0xb/webcrack) 的启发,以及书籍 [反爬虫 AST 原理与还原混淆实战](https://book.douban.com/subject/35575838/)。
标签:Babel, CLI, CMS安全, Deobfuscation, DNS 反向解析, GNU通用公共许可证, IP 地址批量处理, JavaScript, MITM代理, Node.js, TypeScript, WiFi技术, 二进制发布, 云资产清单, 代码美化, 代码还原, 反混淆, 安全插件, 开源工具, 恶意代码分析, 控制流还原, 自定义脚本, 解密, 逆向工程, 配置文件