VibeCodingNights/reverse-engineering
GitHub: VibeCodingNights/reverse-engineering
本项目通过 Ghidra 与大语言模型联动,解决海量函数二进制中关键函数定位与理解难题。
Stars: 4 | Forks: 2
# 逆向工程
**2026年四月 编程之夜**
你的大语言模型可以反编译一个函数。它无法理解一个二进制文件。
通过 MCP 将模型连接到 Ghidra。询问它一个程序的作用。它会反编译几十个函数,对另外八千个产生幻觉,并给你一个它从未读过的软件的自信总结。
今晚的目标:一个拥有 118,813 个函数的真实游戏。
挑战不是“破解游戏”。而是:**在 118,813 个函数中,哪 20 个函数能回答你的问题?**
## 问题
该二进制文件包含 118,813 个函数。反编译全部函数会消耗约 9500 万个 Token——比上下文窗口能容纳的多出 475 倍。即使只是列出它们的签名也会耗尽预算。
你拥有元数据:每个函数都有名称(得益于 Unity 泄露的元数据文件)。你知道存在诸如 `SYBO_Subway_Coins_CoinManager`(15 个方法)、`PurchaseHandler`(44 个方法)和 `InAppPurchaseHandler`(20 个方法)这样的类。但哪些方法真正修改了硬币余额?当大语言模型读取反编译的 C 代码时,它真的理解了吗?还是产生了幻觉?
最前沿的模型能恢复 59% 的逆向工程目标。人类专家能达到 92%。差距不在于智能,而在于没有人构建了解译器和提示词之间的那一层。
**这正是你今晚要构建的。**
## 快速开始
### 1. 验证工具链(约 20 分钟)
```
git clone https://github.com/vibecodingnights/reverse-engineering.git
cd reverse-engineering
```
安装 [Ghidra 12](https://ghidra-sre.org)(需要 JDK 21+)。按照 [`setup/GHIDRA_MCP.md`](setup/GHIDRA_MCP.md) 安装 GhidraMCP 扩展并启动桥接。
将 [`setup/claude_desktop_config.json`](setup/claude_desktop_config.json) 复制到 Claude Desktop 的配置目录:
- **macOS:** `~/Library/Application Support/Claude/`
- **Windows:** `%APPDATA%\Claude\`
在 Ghidra 中打开 `warmup/warmup`。等待自动分析完成(约 10 秒)。在 Claude Desktop 中提问:
将答案与 [`warmup/warmup.c`](warmup/warmup.c) 进行比较。如果它能完美解决所有问题,你的设置就成功了。继续下一步。
### 2. 加载游戏二进制文件(约 15 分钟)
从前面的桌子上取一个 U 盘。复制 `libil2cpp.so` 和 Il2CppDumper 的 `output/` 目录。
或者自行下载 APK 并运行 `target/extract.py`——请参考 [`target/DOWNLOAD.md`](target/DOWNLOAD.md)。
或者 **加载预先分析好的 Ghidra 项目**(最快路径——直接跳到步骤 3)。
如果从零开始加载:
1. 在 Ghidra 中打开 `libil2cpp.so`。自动分析需要 5–15 分钟。在此期间,请阅读 [`docs/IL2CPP_PRIMER.md`](docs/IL2CPP_PRIMER.md)。
2. 打开脚本管理器(窗口 > 脚本管理器),运行 `ghidra.py`,并指向 `output/script.json`。
3. 观察函数名称从 `FUN_00xxxxxx` 重命名为 `SYBO_Subway_Coins_CoinManager$$Coin_OnCoinPickedUp`。
### 3. 让大语言模型查找硬币(约 15 分钟)
在连接了 GhidraMCP 的 Claude Desktop 中提问:
观察发生了什么变化。写下它的回答。
现在运行启动脚本:
```
pip install "mcp>=1.12" anthropic
python starters/hunt.py # systematic metadata search
python starters/survey.py # token math — the "holy shit" script
```
将系统性搜索与 LLM 的即兴探索进行比较。它错过了什么?
**你已经看到了问题。现在开始构建。**
## 仓库结构
```
├── target/ APK extraction — DOWNLOAD.md + extract.py
├── metadata/ Pre-generated Il2CppDumper output (class/method names)
├── warmup/ 10-function binary for toolchain validation
├── setup/ Ghidra + GhidraMCP + Claude Desktop config
├── starters/ Working scripts: survey, hunt, decompile, ask
└── docs/ The problem, IL2CPP primer, tool reference, project ideas
```
## 需要构建的内容
请参考 [`docs/WHAT_TO_BUILD.md`](docs/WHAT_TO_BUILD.md) 获取项目思路。简短版本如下:
- **更佳的搜索器**:跟踪调用图,交叉引用字段偏移,对相关类进行聚类。
- **选择性反编译**:对类簇进行反编译,总结每个类,然后将总结提供给大语言模型。准确率的断崖在哪里?
- **回答问题**:从头到尾追踪硬币流动。是客户端验证还是服务器端验证?你能否真正获得无限硬币?
- **注释循环**:使用大语言模型重命名和注释函数。第二轮迭代是否有改进?
- **动态分析**:使用 Frida 在运行时挂钩函数。动态数据能否纠正静态幻觉?
## 资源
| 资源 | 链接 |
|---|---|
| GhidraMCP (LaurieWired) | [github.com/LaurieWired/GhidraMCP](https://github.com/LaurieWired/GhidraMCP) |
| GhydraMCP (Starsong,多实例) | [github.com/starsong-consulting/GhydraMCP](https://github.com/starsong-consulting/GhydraMCP) |
| Il2CppDumper (Perfare) | [github.com/Perfare/Il2CppDumper](https://github.com/Perfare/Il2CppDumper) |
| ida-pro-mcp | [github.com/mrexodia/ida-pro-mcp](https://github.com/mrexodia/ida-pro-mcp) |
| radare2-mcp | [github.com/radareorg/radare2-mcp](https://github.com/radareorg/radare2-mcp) |
| frida-mcp | [github.com/dnakov/frida-mcp](https://github.com/dnakov/frida-mcp) |
| Frida | [frida.re](https://frida.re) |
| Reversecore_MCP | [github.com/sjkim1127/Reversecore_MCP](https://github.com/sjkim1127/Reversecore_MCP) |
| Awesome-RE-MCP | [github.com/crowdere/Awesome-RE-MCP](https://github.com/crowdere/Awesome-RE-MCP) |
| MCP Python SDK | [github.com/modelcontextprotocol/python-sdk](https://github.com/modelcontextprotocol/python-sdk) |
| Ghidra 12 | [ghidra-sre.org](https://ghidra-sre.org) |
| APKMirror | [apkmirror.com](https://apkmirror.com) |
[vibecodingnights.com](https://vibecodingnights.com)
标签:C 语言反编译, Ghidra, JS文件枚举, LLM 辅助分析, MCP, Token 预算, Unity 元数据, URL提取, 上下文窗口优化, 二进制分析, 云安全运维, 云资产清单, 元数据泄露, 函数筛选, 函数签名, 反编译, 大模型幻觉, 模型集成, 游戏逆向, 硬币余额修改检测, 程序理解, 软件理解, 逆向工具, 逆向工程