Nitipatt/react-deobfuscator-skill
GitHub: Nitipatt/react-deobfuscator-skill
基于 Babel AST 的 JavaScript 反混淆工具包,专注于还原经 javascript-obfuscator 混淆的 React 和 Zustand 代码库。
Stars: 1 | Forks: 0
# 基于 AST 的 JavaScript 反混淆工具包
本仓库包含一系列强大的基于 AST(抽象语法树)的转换脚本,用于精确地反混淆、清理经过压缩/混淆的 React 和 Zustand 代码库,并将其映射回人类可读的结构。
这些工具是专门为绕过复杂的 `javascript-obfuscator` 技术而开发的,包括不透明谓词、控制流平坦化,以及庞大的 Webpack/Vite 包(例如,超过 6MB 的文件)中的极端标识符混淆。
## 🚀 功能特性
1. **语义化 React Hook 映射 (`rename_all_hooks.js`)**
- 通过静态分析 React Hook 的使用情况(例如,Zustand 的 `useStore` 解构和选择器),自动将混淆的变量映射回其语义化名称。
- *示例:* 在整个 AST 中转换 `const { userSession: q } = useAuthStore()`,将所有 `q` 的实例重命名为 `userSession`。
2. **递归代理内联 (`inline_all.js` & `inline_proxy_objects.js`)**
- 消除“不透明谓词”代理(用于隐藏字符串和逻辑运算符的巨大 `_0x...` 字典对象)。
- 通过内联字典值并在本地执行代理函数,自动解析间接成员查找。
- 递归运行,直到代码库达到平衡状态(剩余 0 个代理对象)。
3. **全局标识符清理 (`auto_rename_0x.js` & `sweep_globals.js`)**
- 根据其 AST 节点类型(`var1`、`fn2`、`param3`),智能地重命名剩余的混淆 `_0x...` 标识符。
- 专门处理未声明全局别名(如 `window`、`console`)等边缘情况,压缩工具会剥离这些声明,并将它们映射到一个干净的顺序注册表(`_global_1` 等)。
4. **Unicode 反转义 (`unescape_unicode.js`)**
- 安全地解析并将 `\uXXXX` 和 `\xXX` 混淆字符串转换回人类可读的 UTF-8 字符(例如,表情符号,泰语等非拉丁字母)。
- 执行严格的 ASCII 安全检查,以防止破坏字符串语法(忽略引号、反斜杠和控制字符)。
5. **Babel 导出补丁 (`fix_exports.js`)**
- 在进行大规模 bundle 转换期间,绕过 Babel 严格模式下的 `SyntaxError` 错误。
- 以编程方式识别缺失/幽灵导出并注入虚拟声明,允许深度的 AST 解析继续进行,而不会破坏 bundle 的完整性。
## 🛠️ 环境要求
- **Node.js** (v18+)
- **Babel 工具链**:`@babel/parser`、`@babel/traverse`、`@babel/generator`、`@babel/types`
```
npm install @babel/parser @babel/traverse @babel/generator @babel/types
```
## 📚 流水线工作流
要完全反混淆 Webpack bundle,请按以下顺序运行脚本:
1. **语义化 Hook 映射:**
`node scripts/rename_all_hooks.js /path/to/obfuscated_bundle.js`
2. **递归代理内联:**
`node scripts/inline_all.js`(目标目录应在脚本中配置)
3. **处理 Babel 导出错误(如遇到):**
`node scripts/fix_exports.js`
4. **全局变量清理 (第 1 部分):**
`node scripts/auto_rename_0x.js`
5. **全局别名清理 (第 2 部分):**
`node scripts/sweep_globals.js`
6. **字符串反转义:**
`node scripts/unescape_unicode.js`
## 🧠 方法论
本工具包严格将 **AST 转换** 优先于粗糙的 RegEx 替换。
通过利用 Babel 的 `scope.getBinding()` 机制和作用域遍历,这些脚本确保在整个重命名过程中完美保持局部变量遮蔽、嵌套作用域闭包和 React 组件的完整性。
## ⚠️ 免责声明
这些工具仅用于教育目的、安全分析和遗留代码恢复。在使用本工具包之前,请确保您拥有对目标应用程序进行逆向工程或分析的合法权利。
标签:CMS安全, hook, JavaScript, MITM代理, odt, React, Syscalls, Vite, Webpack, Zustand, 云安全监控, 云资产清单, 代码分析, 代码安全, 代码还原, 凭证管理, 前端安全, 前端工程化, 反混淆, 响应拦截, 抽象语法树, 控制流扁平化, 标识符还原, 漏洞枚举, 脚本工具, 自定义脚本, 逆向工程, 静态分析