UnstableGrape/Moonveil-1.4.5-Deobfuscator
GitHub: UnstableGrape/Moonveil-1.4.5-Deobfuscator
针对 MoonVeil v1.4.5 混淆器的 Luau 脚本去虚拟化与反编译工具,通过解码加密 payload、恢复嵌套 prototype 并重建控制流来输出可运行的源代码。
Stars: 0 | Forks: 0
# MoonVeil v1.4.5 反混淆器 — 自动化套件
## 快速开始
- 双击 `Start GUI.bat` 打开文件选择器界面。
- 或者将混淆的 `.lua`/`.luau` 文件拖放到 `Decompile File.bat` 上。
- 运行 `Verify Installation.bat` 检查打包的组件。
无需安装步骤或下载 Python 包。必须安装 Python 3.10+;测试过的 Luau runtime 已在本地打包。
本项目对测试过的 MoonVeil Obfuscator v1.4.5 封壳进行去虚拟化,并输出可运行的 Luau 代码。它会解码加密的 payload,恢复所有嵌套的 prototype,强制 MoonVeil 的延迟指令解码器趋于稳定,映射恢复出的 VM 操作,重建闭包和控制流,并通过编译器验证结果。
输出通过生成的寄存器名称保留了 VM 行为。原始的局部变量名、格式和注释在混淆时已被丢弃,无法完全恢复。
## 最快上手
在此文件夹中:
```
python -m moonveil decompile script.lua -o clean.luau --artifacts output
```
预期结果:
```
decompiled 26 prototypes and 1301 instruction records into ...\clean.luau
sandbox verification matched 536 observable events
```
`clean.luau` 是可运行的恢复程序。可选的 `--artifacts` 目录包含解码后的 VM 图、常量、指令、协议和验证报告。
要使用文件选择器 GUI:
```
python -m moonveil.gui
```
选择混淆的 `.lua`/`.luau` 文件,选择输出文件,然后点击 **Decompile**。
## 环境要求
- Python 3.10 或更高版本
- 官方的 Luau CLI 二进制文件(`luau`,最好包含 `luau-compile`)
runtime 按以下顺序发现:
1. `--luau C:\path\to\luau.exe`
2. `LUAU_PATH`
3. `.tools\luau-0.722\luau.exe`
4. `PATH` 上的 `luau`/`luau.exe`
本工作区已在 `.tools` 下包含测试过的 Luau runtime。
## 反编译命令的执行流程
1. 确认输入与已测试的 v1.4.5 封壳布局匹配。
2. 仅在官方 Luau CLI 中运行 MoonVeil 的解码/bootstrap 阶段。
3. 在受保护的程序接收到真实 API 之前,转储序列化的 prototype 图。
4. 发现所有嵌套的 prototype 并规范化所有延迟指令。
5. 解码打包的操作数,并提取 payload 中存在的所有 opcode ID。
6. 重建寄存器、调用、表、分支、泛型 for 循环、闭包、捕获和 upvalue。
7. 将直线指令分组为语义基本块。
8. 输出可运行的 Luau,并在可用时使用 `luau-compile` 进行验证。
9. 在相同的纯代理 sandbox 中执行两个版本,并比较确定性的可观察事件。
对于提供的示例,所有 39 个稳定的 opcode ID 均受支持,并且恢复的源代码按顺序匹配全部 536 个可观察的 sandbox 事件。
## 输出与产物
使用 `--artifacts output` 时,该命令将输出:
- `clean.luau`(位于传递给 `-o` 的路径):可运行的恢复 Luau 代码
- `prototype_graph.json`:无损类型的 MoonVeil 表图
- `prototypes.json`:规范化的静态 prototype 树
- `decoded_prototypes.json`:稳定的指令、解码的字符串、字段和探测效果
- `constants.json`:恢复的常量
- `moonveil.asm`:原始的私有 VM 列表
- `moonveil.raw.asm`:完整的图形渲染
- `decode_protocol.txt`:详尽的解码器协议
- `decompile_manifest.json`:输入哈希、runtime、opcode 集和验证结果
## 其他命令
```
python -m moonveil analyze script.lua
python -m moonveil extract script.lua -o output\outer_payload.bin
python -m moonveil dump script.lua -o output
python -m moonveil instrument script.lua -o output\instrumented.luau
```
`dump` 会在语义提升之前停止,这在研究不同的封壳构建时非常有用。
## 准确性与局限性
当反编译器遇到不支持的封壳布局或未映射的 opcode 时,将执行失败关闭。它不会为未知指令凭空捏造源代码。
生成的程序在必要时刻意保持寄存器显式。这使得闭包引用和分支行为变得可审计,并避免了在源代码美化期间进行不安全的猜测。直线指令已被压缩为基本块,但结果无法重现原始的变量名。
sandbox 验证是强有力的回归证据,但并不能证明对所有可能的 Roblox 状态都有效。它执行了全局变量、属性、调用、参数、表配置、回调、任务生成和赋值操作,且不暴露 Roblox、文件系统或网络 API。仅当您明确希望跳过该比较时,才使用 `--no-verify`。
本实现针对经过测试的 MoonVeil v1.4.5 封壳布局。其他版本可能使用不同的字段 ID、操作数编码或调度器结构。
## 安全性
官方 Luau CLI 不提供 Roblox 服务。受保护的程序使用代理对象进行评估,并禁用了 `loadstring`;它不会从此工具接收网络或文件系统功能。尽管如此,请仅检查您获得授权分析的代码,并对未知的封壳使用一次性的环境,因为在受保护的 MoonVeil payload 之外可能存在任意语句。
## 测试
```
python -m unittest discover -s tests -v
python -m moonveil decompile script.lua -o output\clean.luau --artifacts output\run
```
标签:Lua, Luau, Python, 云安全监控, 代码反编译, 代码重构, 反混淆工具, 无后门, 逆向工具, 静态分析