Base44-Agent/iron-brew_deobfuscator
GitHub: Base44-Agent/iron-brew_deobfuscator
IronBrew 专用脱混淆器,解析并还原受保护的 Lua 5.1 字节码为可读源码。
Stars: 0 | Forks: 0
# IronBrew Deobfuscator v2.0
用于保护 Lua 5.1 脚本的 IronBrew VM 的完整反混淆器。
## 功能特性
| 阶段 | 模块 | 描述 |
|-------|--------|-----------|
| 提取 | `extractor.js` | 隔离 payload、VM、解压器和 XOR 密钥 |
| 解压 | `decompressor.js` | 还原 LZW、Base Custom、Byte Escape |
| 解密 | `xor.js` | 简单 XOR、字符串、通过 magic 自动检测 |
| 解析 | `parser.js` | 完整的 Lua 5.1 bytecode 解析器 |
| VM 分析 | `vm_analyzer.js` | 映射自定义 opcodes,检测 SuperOps |
| 反编译 | `decompiler.js` | 重构可读的 Lua 代码 |
| 优化 | `optimizer.js` | 移除 dead code、junk 并进行格式化 |
## 安装说明
```
git clone
cd ironbrew-deobfuscator
node deobfuscator.js --help
```
无外部依赖。要求 Node.js ≥ 14。
## 使用方法
```
# 基础
node deobfuscator.js script.lua
# 使用自定义输出名称
node deobfuscator.js script.lua output.lua
# 完整 Debug
node deobfuscator.js script.lua --debug --verbose
# 将解析的 bytecode 以 JSON 格式 Dump
node deobfuscator.js script.lua --dump-bytecode
# Dump VM 分析
node deobfuscator.js script.lua --dump-vm
# 无优化(decompiler 的原始代码)
node deobfuscator.js script.lua --no-optimize
```
## 测试
```
node test/test_runner.js
```
## 架构
```
ironbrew-deobfuscator/
├── deobfuscator.js ← CLI e pipeline principal
├── src/
│ ├── logger.js ← Sistema de logging
│ ├── extractor.js ← Extração do payload
│ ├── decompressor.js ← Descompressão (LZW, Base, Escape)
│ ├── xor.js ← Decriptação XOR
│ ├── parser.js ← Parser de bytecode Lua 5.1
│ ├── vm_analyzer.js ← Análise e mapeamento da VM
│ ├── decompiler.js ← Geração de código Lua
│ └── optimizer.js ← Limpeza e otimização
└── test/
└── test_runner.js ← Suite de testes
```
## IronBrew 变体支持
| 变体 | 检测 | 状态 |
|----------|----------|--------|
| IronBrew 2 | `bit.bxor` + SuperOps | ✅ 支持 |
| IronBrew Classic | `math.fmod` + arith XOR | ✅ 支持 |
| IronBrew Custom | VM 启发式算法 | ⚠️ 部分支持 |
## 支持的 Opcodes
支持标准 Lua 5.1 的全部 38 个 opcodes:
`MOVE`, `LOADK`, `LOADBOOL`, `LOADNIL`, `GETUPVAL`, `GETGLOBAL`,
`GETTABLE`, `SETGLOBAL`, `SETUPVAL`, `SETTABLE`, `NEWTABLE`, `SELF`,
`ADD`, `SUB`, `MUL`, `DIV`, `MOD`, `POW`, `UNM`, `NOT`, `LEN`,
`CONCAT`, `JMP`, `EQ`, `LT`, `LE`, `TEST`, `TESTSET`, `CALL`,
`TAILCALL`, `RETURN`, `FORLOOP`, `FORPREP`, `TFORLOOP`, `SETLIST`,
`CLOSE`, `CLOSURE`, `VARARG`
## 已知限制
- `if/else` 的重构基于启发式算法;在复杂情况下可能需要手动审查
- 完全自定义(未映射)的 SuperOps 将保留为注释
- 变量名从 debug info 中恢复;如果缺失,则使用 `_R0`、`_R1` 等。
## Pipeline 流程
```
input.lua
│
▼
[Extractor]
├─ bytecode string
├─ VM source
├─ decompressor info
└─ XOR key
│
▼
[Decompressor] → dados descomprimidos
│
▼
[XorDecryptor] → bytecode raw
│
▼
[Parser] → Proto tree (AST do bytecode)
│
▼
[VMAnalyzer] → mapeamento de opcodes
│
▼
[Decompiler] → código Lua bruto
│
▼
[Optimizer] → output.lua limpo
```
标签:GNU通用公共许可证, Lua, Node.js, 云资产清单, 代码分析, 凭证管理, 反混淆, 自定义脚本, 解密工具, 逆向工程