Dark-Captcha/JS-Deobfuscator

GitHub: Dark-Captcha/JS-Deobfuscator

一个基于 Rust 和 Oxc 构建的高性能 JavaScript 去混淆工具,支持常量折叠、控制流还原和字符串解码等多种语义变换。

Stars: 6 | Forks: 3

# JS-Deobfuscator 基于 [OXC](https://oxc.rs) 构建的通用 JavaScript 去混淆工具。逐层处理字符串编码、控制流扁平化、常量混淆、代理函数和字符串数组轮转。 ## 安装 ``` cargo install --path . ``` ## CLI 用法 ``` # 文件输入 deob input.js -o output.js --stats # Stdin cat input.js | deob > output.js # 使用全局上下文 deob input.js --globals '{"window":{"secret":"abc123"}}' # 禁用转换 deob input.js --no-fold # skip static folding deob input.js --no-transforms # skip semantic transforms ``` ## 库用法 ``` use js_deobfuscator::engine::api::JSDeobfuscator; let result = JSDeobfuscator::new() .deobfuscate("var x = 1 + 2; console.log(x);")?; assert!(result.code.contains("console.log(3)")); assert!(result.converged); ``` ### 带选项 ``` let result = JSDeobfuscator::new() .max_iterations(100) .global("window", serde_json::json!({"key": "value"})) .deobfuscate(&source)?; ``` ### 自定义模块 ``` use js_deobfuscator::engine::module::Module; struct MyTransform; impl Module for MyTransform { /* ... */ } let result = JSDeobfuscator::new() .add_common(Box::new(MyTransform)) // runs in convergence loop .add_locked(Box::new(MyLockedPass)) // runs once after convergence .deobfuscate(&source)?; ``` ## 功能 | 变换 | 示例 | |-----------|---------| | 常量折叠 | `1 + 2` → `3` | | 字符串拼接 | `"hello" + " world"` → `"hello world"` | | 内置方法 | `Math.floor(1.7)` → `1`, `atob("SGVsbG8=")` → `"Hello"` | | Typeof/void/not | `typeof "x"` → `"string"`, `!0` → `true` | | 三元运算符 | `true ? a : b` → `a` | | 逻辑短路 | `false \|\| x` → `x` | | 常量传播 | `var x = 5; f(x)` → `f(5)` | | 别名内联 | `var e = Yp; e(1)` → `Yp(1)` | | 代理内联 | `function f(a,b){return g(b,a)} f(1,2)` → `g(2,1)` | | 对象解析 | `var t={F:445}; t.F` → `445` | | 成员简化 | `obj["key"]` → `obj.key` | | 死代码消除 | `if(false){...}` → 已移除 | | 全局注入 | `window.secret` → `"abc123"` (用户提供) | | 字符串数组解码 | obfuscator.io 轮转模式 → 已解码字符串 | | 语句拆分 | `var a=1, b=2` → `var a=1; var b=2;` | | 大括号包裹 | `if(x) return 1` → `if(x) { return 1; }` | ## 架构 逐层架构,每一层仅依赖于其下层: ``` value/ ← Pure JS computation (no OXC) ast/ ← OXC AST helpers (zero-copy extraction) scope/ ← Symbol resolution (wraps OXC Scoping) fold/ ← Static expression folding (operators, builtins, methods) eval/ ← Dynamic evaluation (Node.js subprocess, optional) transform/ ← Semantic transforms (propagation, inlining, dead code) engine/ ← Convergence loop + public API format/ ← Output normalization ``` 双阶段收敛:公共模块循环直至稳定,锁定模块运行一次,若产生更改则重启。 ## 依赖项 - **OXC v0.124.0** — 解析器、AST、语义分析、代码生成 - **无嵌入式 V8** — 用于动态 eval 的 Node.js 子进程 (可选) - **230 个测试**,clippy 无警告 ## 许可证 Apache-2.0
标签:CMS安全, JavaScript, MITM代理, Oxc, Rust, Web安全, 云安全监控, 云资产清单, 代码优化, 代码转换, 代码还原, 去混淆, 反混淆, 可视化界面, 字符串解码, 常量折叠, 恶意代码分析, 控制流平坦化, 数据可视化, 符号执行, 编译原理, 网络流量审计, 蓝队分析, 逆向工程, 通知系统, 配置文件, 静态分析, 静态求值