MrAzizCode/3ziz-deobfuscator
GitHub: MrAzizCode/3ziz-deobfuscator
一款纯静态的 Windows 桌面应用,用于读取、识别和还原混淆的 Lua/Luau Roblox 脚本及 VM 字节码,全程不执行任何提交的代码。
Stars: 0 | Forks: 0
# 3ziz Deobfuscator
一款用于读取混淆 Lua 和 Luau 的 Windows 桌面应用程序,其核心基于一条
原则:**提交的代码永远不会被执行。** 所有操作均为静态的——包括解析、
解码和重构。这里没有“运行脚本”按钮,也不存在任何
用于评估您所提供代码的路径。
## 功能
**读取现代 Lua 和 Luau。** 内置的词法分析器和解析器支持 Lua 5.1
到 Luau 的所有特性:位运算符、向下取整除法、十六进制浮点和二进制字面量、
数字分隔符、字符串插值、复合赋值、`continue`、类型
注解以及 `goto`/标签。现成的 Lua 5.1 解析器会
拒绝的源代码依然能够得到分析。
**识别代码类型。** 评分检测器会对纯 Lua、
Luau、Lua 5.1 字节码、VM 审计 IR 以及已知的混淆器家族进行分类,并将
证据(包括负面证据)记录在报告中。家族
插件只有在置信度和差值超过阈值时才会被选中;否则将
运行通用的静态路由并声明存在的歧义。
**解包受保护的脚本。** Luraph 家族的 payload 流可以定位到任何
Lua 字符串形式中,支持以 32 位字节顺序解码,并进行解压缩或直接读取。
容器计数偏差是从字节中推断出来的,这要求
候选对象必须解码整个流并解析所有引用,因此即使构建
附带了不同的常量,也依然可读。
**将 VM 字节码去虚拟化还原为 Lua。** 解码后的指令记录通过
类型化的操作码效果模型被提升为真实、可重新解析的 Lua 代码:
恢复的全局名称、字符串和数字字面量、方法调用以及
折叠的链式查找。分支操作数通过其寻址模式进行解析——
绝对寻址、相对前向寻址、相对后向寻址——这使得控制流变得可控:
随后会对代码块进行重新排序,使控制流可以顺序执行而不是跳转,当某个区域被证明只有单一入口和出口时,条件判断就会转换为 `if` 语句,而入口点无法到达的代码会被识别为诱饵填充并被省略,同时报告其数量。
**反汇编 Lua 5.1 字节码。** 具备有限深度的结构验证器和
反汇编器,会在分配内存前检查深度、原型、指令、常量和调试表
限制。
**报告功能,而非猜测。** 一个基于可达性中立的清单列出了静态发现的
API、URL 和可疑的功能,并对其含义
有明确的限制说明。
**导出可验证的捆绑包。** 每个任务都会创建一个新目录:输入的
字节精确副本、可读的输出、以证据优先的精确
审计、行为和验证报告、机器可读的 JSON、警告文件
以及带有每个制品 SHA-256 校验值的清单。
## 它不声称能做到的
编译过程会破坏局部变量名、注释和源代码布局。这些
**无法**被恢复——输出标头中会生成并标注合成名称。
构建中从未被证明的操作码将其操作数和
字节范围保留为内联注释,而不是进行猜测。无法被证明可结构化的区域会保留 `goto` 和标签,而不是被强行
转换为它们不具备的结构。覆盖率以数字形式报告,未解决的
工作也会被如实报告,而不会被隐藏。
状态是真实的:`verified`、`recovered-with-warnings`、`partial`、
`unsupported`、`failed-validation`、`cancelled`。
## 安全设计
- 提交的 Lua/Luau 永远不会被执行。没有 `load`、`loadstring`、`dofile`、
执行器、原生库加载或生成的 shell 命令。
- 输入在解码前会被哈希处理并无更改地复制;原文件永远不会被
覆盖,导出内容总是进入一个新创建的目录。
- 分析在单独的 worker 进程中运行,该进程具有最小的环境以及
时钟和内存上限,并在超时或取消时终止。
- 渲染器在 `nodeIntegration: false`、`contextIsolation: true`、
`sandbox: true` 的环境下运行,具有严格的 CSP、无远程内容、被阻止的导航
和经验证的小型 IPC 攻击面。
- 恢复的源代码以文本形式呈现,绝不作为 HTML 注入。
- 强制执行允许的扩展名和 10 MiB 的输入上限;路径在
策略检查之前会被标准化和解析。
worker 进程是故障和资源边界,而不是完整的 OS 沙箱。这
是可以接受的,正是因为提交的内容永远不会被评估;任何未来的
动态捕获都需要一个额外的沙箱和其自身的审查。
## 环境要求
Windows 10/11、Node.js 22+、npm。
```
npm ci
```
```
npm test
```
```
npm start
```
构建便携版应用程序和安装程序:
```
npm run package:win
```
除非配置了代码签名证书,否则本地生成的可执行文件未签名,因此 Windows 可能会显示 SmartScreen 警告。在运行未签名的构建版本之前,请验证其发布哈希值。
此外还有一个独立于 shell 的 CLI:
```
npx tsx src/cli/index.ts analyze --out
```
## 样本
不包含任何混淆样本或从中衍生出的制品。它们
不携带再分发许可,我们无权发布。需要
私有样本的测试套件在缺少该样本时会自动跳过;将
`THREEZIZ_JNKIE_FIXTURE` 指向您自己的副本即可运行它们。
## 仅限授权使用
仅分析您拥有或被明确授权检查的代码。
## 文档
[架构](docs/ARCHITECTURE.md) · [威胁模型](docs/THREAT_MODEL.md) ·
[测试计划](docs/TEST_PLAN.md) · [依赖说明](docs/SECURITY_AUDIT.md)
## 许可证
未授权 (UNLICENSED)。不对被分析或衍生的代码主张任何所有权。
标签:Lua, MITM代理, 云安全监控, 云资产清单, 代码反混淆, 自动化攻击, 逆向工程, 静态分析