2026-10-18
搭建逆向工程工作室:REA、oracle 与清洁室闭环
本页是运维/工具指南,说明如何组装一座逆向工程工作室:一个面向智能体的 MCP 分析核心(morluto/rea)、一圈开源引擎与桥接、三类 oracle(决定何为真),以及双室清洁室闭环(A 室只写 SPEC.md;B 室只从墙后实现)。不是破解教程,不是利用 PoC,也不是对未拥有/无书面授权软件动手的许可(/zh/compliance/、/zh/faq/legal-boundary/)。
英文孪生:/blog/rea-reverse-engineering-studio/。尚未接触 REA?先看 /zh/blog/rea-beginner-guide/、安装演示 /zh/docs/install-demo/,再看可视化工作台 /zh/blog/eleven-rea-workbench/。本站教学钉版:[email protected](/zh/blog/rea-agents-6-5-0/)——教学实验室不要默认浮动 latest。
为何要「工作室」而不是单一工具
真实逆向跨越格式(PE/ELF/Mach-O、APK/DEX、.NET、JS/Electron)、表面(静态、动态、网络)与验证(重建 + oracle)。一个 GUI 覆盖不了所有车道。工作室是刻意选好的栈:
| 层 | 职责 | 本页选型 |
|---|---|---|
| 分析核心 | 面向智能体的 MCP + Evidence + 工作流 | REA(rea-agents)——一个 MCP |
| 深度引擎 | 反编译/反汇编/调试 | Ghidra、IDA(自备)、radare2、Rizin、x64dbg、raddebugger、angr |
| MCP 桥 | 让智能体驱动引擎 | GhidraMCP、ida-pro-mcp |
| 移动/托管 | APK/DEX、资源、.NET | jadx、Apktool、Frida、ILSpy、dnSpy |
| 检视/拦截 | Hex、流量 | ImHex、mitmproxy |
| 策展地图 | 发现相邻工具 | awesome 列表 + REA 内置提示 |
| 验证 | 清洁室 SPEC + oracle + 植入失败 | 你的重建与对照 harness |
星标是人气快照,不是 doctor 绿灯证明,也不是法律护身符(/zh/blog/evaluating-rea-claims/)。
分类对照表(GitHub API 快照 2026-10-18)
下表星标于 2026-10-18(Asia/Shanghai/UTC+8)用 gh api repos/OWNER/REPO --jq .stargazers_count 重抓。引用前请重抓;数字会漂。
01 — 分析核心
| 工具 | 在工作室中的角色 | Stars(2026-10-18) | 官方 URL |
|---|---|---|---|
| morluto/rea | 二进制/应用/运行时的一个 MCP;Evidence + 调查工作流 | 317010 | github.com/morluto/rea |
| NationalSecurityAgency/ghidra | 深度开源反编译/反汇编(许多 REA 路径需自备) | 90604 | github.com/NationalSecurityAgency/ghidra |
| LaurieWired/GhidraMCP | 让智能体驱动 Ghidra 的 MCP 桥 | 11378 | github.com/LaurieWired/GhidraMCP |
| mrexodia/ida-pro-mcp | 已授权 IDA Pro 的 MCP 桥 | 12994 | github.com/mrexodia/ida-pro-mcp |
REA 不附带 Ghidra 或 IDA。setup 注册 MCP,可能在批准后协助 Hopper;Ghidra/IDA 仍自备(/zh/faq/setup-vs-providers/)。上游快速开始:npx rea-agents setup(morluto/rea README)。在 rea.run 钉教学等价命令:npx -y [email protected] setup。
02 — 移动与应用
| 工具 | 在工作室中的角色 | Stars(2026-10-18) | 官方 URL |
|---|---|---|---|
| skylot/jadx | DEX/APK → Java/Kotlin(REA Android 路径需无头 jadx + JDK) | 51050 | github.com/skylot/jadx |
| iBotPeaches/Apktool | 解码/重建 Android 资源与 smali | 26001 | github.com/iBotPeaches/Apktool |
| frida/frida | 动态插桩(仅你的设备/已授权进程) | 22354 | github.com/frida/frida |
| icsharpcode/ILSpy | .NET 反编译/浏览 | 26700 | github.com/icsharpcode/ILSpy |
03 — 二进制与底层
| 工具 | 在工作室中的角色 | Stars(2026-10-18) | 官方 URL |
|---|---|---|---|
| radareorg/radare2 | 命令行逆向框架 | 25078 | github.com/radareorg/radare2 |
| x64dbg/x64dbg | Windows 用户态调试器 | 49931 | github.com/x64dbg/x64dbg |
| WerWolv/ImHex | Hex 编辑器 + 模式语言,结构化读二进制 | 55405 | github.com/WerWolv/ImHex |
| angr/angr | 符号执行/二进制分析平台 | 9212 | github.com/angr/angr |
04 — 网络与运行时
| 工具 | 在工作室中的角色 | Stars(2026-10-18) | 官方 URL |
|---|---|---|---|
| mitmproxy/mitmproxy | 交互式 HTTPS 拦截与脚本(仅授权流量) | 45712 | github.com/mitmproxy/mitmproxy |
| dnSpyEx/dnSpy | .NET 调试/程序集编辑(分支谱系;仅自有/已授权目标) | 11293 | github.com/dnSpyEx/dnSpy |
| rizinorg/rizin | radare2 家族框架;部分 GUI 工作台的快速打开路径 | 4002 | github.com/rizinorg/rizin |
| EpicGames/raddebugger | Epic 开源原生调试器(公开树偏 Windows) | 8584 | github.com/EpicGames/raddebugger |
05 — 重建与验证(地图 + 闭环)
| 项 | 在工作室中的角色 | Stars/主张(2026-10-18) | 官方 URL |
|---|---|---|---|
| zhuyansen/awesome-ai-reverse-engineering | AI×RE 仓库分级地图(当日 README:119 条安全分级) | 8★ | github.com/zhuyansen/awesome-ai-reverse-engineering |
| morluto/awesome-reverse-engineering | REA 作者公开的经典+智能体逆向 awesome 列表 | 765★ | github.com/morluto/awesome-reverse-engineering |
| REA 调查工作流/提示 | 内置 MCP 提示与 skill 说明,结构化智能体调查 | 随 rea-agents 提供 | morluto/rea 文档 |
| 清洁室 + oracle | SPEC.md 墙 + 三类 oracle + 植入失败(见下) | 流程,非仓库 | 本页 + /zh/compliance/ |
三类 oracle
Oracle 是把重建与你信任的参照对照的任何检查。模型提议;oracle 裁决。工作室教学用三类:
| Oracle 类型 | 对照什么 | 教学示例 | 通过长什么样 |
|---|---|---|---|
| 字节 oracle | 编译/恢复字节 vs 参照机器码(或固定字节窗口) | DX-Ball 平衡辅助:63 字节、3205 用例 — /zh/showcase/dx-ball/ | 检查窗口 + 用例集精确匹配 |
| 行为 oracle | 相同输入 → 相同可观察输出(不必匹配内部) | Win 计算器 %:×÷ 后 → 当前/100;+− 后 → 当前×先前/100(如 200+10% → 220)。可对照公开行为说明/你已授权的副本——不做破解 | 一组演算例全部一致 |
| 运行时 oracle | 整程序/功能端到端(玩、点、导出、往返) | 重建能启动;功能路径走完;冒烟计数/金文件成立 | 可度量通过/失败,不是「看起来行」 |
尽量自动化最强的 oracle。字节抓指令漂移;行为抓 API 契约;运行时抓集成缺口。许多工作室任务会组合两类以上。
也要测 oracle(TH08 课)
弱比较可以在指令字节通过的同时,浮点常量错误。公开的 TH08 线重建记述里,某辅助函数已通过精确指令字节比较,却在下游失败:重建用 0.0 检查玩家火力,原件用 128.0(满火力阈值)。比较器在比指令前会重映射地址(重建可能把常量放别处),却从未检查该地址上的浮点值。指令字节匹配;含义不匹配。修好比较后审计浮点字面量引用,又挖出更多已被弱 oracle「接受」的错误常量。
习惯: 在相信绿灯之前,植入 三个必须失败 的变体。任一植入失败却通过,说明 oracle 坏了——此前所有绿灯都可疑。
植入失败清单
- [ ] 改一个常量(如阈值 128.0 → 0.0,或比例 100 → 10)。
- [ ] 交换一个分支(真/假臂、×÷ 与 +− 百分规则、提前返回极性)。
- [ ] 差一边界(含/不含边、length−1、循环上限)。
- [ ] 对每个植入变体跑 oracle → 三个都必须失败。
- [ ] 任一植入变体通过 → 先修 oracle,再重审先前接受项。
- [ ] 把三个变体 + oracle 命令记入
NOTES.md/CI,使检查可重复。
| 植入变体 | 意图 | Oracle 必须 |
|---|---|---|
| 错误常量 | 抓住值盲区(TH08 式) | 拒绝 |
| 交换分支 | 抓住仍「看起来像」的控制流 | 拒绝 |
| 差一 | 抓住只测边界外/弱金集 | 拒绝 |
本清单不含利用或破解步骤——只是对自有/授权夹具上验证 harness 的自测。
双室清洁室(SPEC.md 是墙)
经典清洁室,由智能体运转:
| 室 | 谁 | 看见什么 | 产出 |
|---|---|---|---|
| A 室 — 阅读者 + REA | 带 [email protected] 的调查会话 | 已授权目标 + 工具 | 仅 SPEC.md(行为/IO/边界/未知) |
| 墙 | — | — | SPEC.md — 无代码、无地址、无原名资产 |
| B 室 — 建造者 | 干净目录里的全新会话 | 仅 SPEC.md | 实现 + 测试 + 植入失败 |
binary(已授权)→ A 室(REA + Evidence)→ SPEC.md(墙)→ B 室(重建)→ oracle(+ 植入失败)→ retry
可复制提示模板(钉 6.5.0)
安装(教学钉版——不要浮动 latest):
用 npx -y [email protected] setup 安装并连接 REA 到本编码智能体。
先展示 setup 计划供批准,然后用以下命令验证:
npx -y [email protected] doctor --json
A 室 — 阅读者:
用 REA 调查 [已授权应用] 中 [功能] 如何工作。
每条主张标注 observation/inference/unknown,并引用 Evidence。
然后写 SPEC.md:行为、输入、输出、边界情况与未决未知。
只描述做什么。不要代码、不要地址、不要原件名称或资产。
B 室 — 建造者:
仅根据 SPEC.md 在 ./my-version 中实现 [功能]。
按规格中的行为写测试并运行。
不要打开原二进制、反编译或 A 室笔记。
目标形停止条件(按你的智能体 goal 工具改写):
/goal SPEC.md 中每个用例在 ./my-version 通过,oracle 拒绝全部 3 个植入失败,
且未改动 ./my-version 以外的文件。或在 25 轮后停止。
植入失败:
在 ./oracle-tests 下加入三个故意错误的实现变体:改一个常量、
交换一个分支、把一个边界偏移一。对每个跑 oracle,确认三个都被拒绝。
任一通过则先修 oracle。
NOTES.md 收尾(工厂记忆):
结束本会话前,更新 NOTES.md:已确认什么、仍未知什么、已有哪些检查、
下一步实验是什么。并提交。
清洁室闭环清单
- [ ] 范围门: 自有/书面授权/开源/清洁室夹具(/zh/compliance/、/zh/faq/legal-boundary/)。
- [ ] 隔离: 一次性副本;永不覆盖唯一生产制品。
- [ ] REA 遍: 钉
npx -y [email protected];doctor --json;要 Evidence——不要气氛。 - [ ] SPEC.md 墙: 可观察行为 + IO + 边界 + 显式未知;无代码/地址/原名资产。
- [ ] B 室重建: 干净树;仅 SPEC。
- [ ] Oracle + 植入失败: 可度量通过/失败;三个必须失败变体被拒绝。
- [ ] Retry: 把差异喂回 A 室/SPEC;不编造未知。
- [ ] 停止规则: 记录缺口——不编 CVE 链、密钥或 DRM 绕过。
| 步骤 | 运维习惯 | 失败模式 |
|---|---|---|
| binary | 仅授权目标 | 无权利分析商店 DRM/第三方应用 |
| A 室 | Evidence + 限制 | 智能体无工具结果却「解释」 |
| SPEC.md | 可测 + 未知 | 规格只复述营销文案 |
| B 室 | 清洁室实现 | 把反编译输出当产品 |
| oracle | 可度量 + 植入失败 | 只靠截图;未测 oracle |
| retry | 差异驱动 | 无限闲聊无新 Evidence |
教学示例:/zh/showcase/dx-ball/ · /zh/blog/rea-beginner-guide/。
清洁室 vs「反编译了某套件」神话
常见说法称热门清洁室应用是靠「反编译厂商套件」做成的。有用的规则恰恰相反:观察行为 + 公开规格;禁止阅读厂商应用包。 理解 ≠ 拿走。
| 神话 | 清洁室实践(正向对照) |
|---|---|
| 「他们反编译了厂商应用包」 | 不要阅读、反汇编或复制厂商应用包内部;盘点时最多文件名/列表 |
| 复制图标/字体/预设/截图 | 仅原创或开放许可资产;参考截图留本地且不提交 |
| 把反编译输出粘进产品 | B 室从不看反编译;按 SPEC.md + 公开规格实现 |
| Oracle = 厂商源码 | Oracle = 观察到的行为(外部测试工具仅作 oracle,永不链接/随附) |
公开规则示例:FilmCraft AGENTS.md(§2 Clean-room code:永不阅读/反汇编/复制 Adobe 应用包;通过使用应用观察行为;编解码按公开规格)。ArtCraft 家族应用同精神——行为与公开格式,不是厂商包内脏。教学时链到这些 AGENTS/README;不要把社交主张当「偷包」证据。
边界(REA 免责声明 ↔ 模型)
REA 自身免责声明框定允许的研究/教育/互操作/保存/审计你有权检查的软件——并禁止绕 DRM/反作弊、复制专有受保护代码与资产等滥用。模型可能对越界任务拒绝或改派;这是预期,不是安装坏了。
| 允许方向(高层) | 本站禁止/超出 REA 意图 |
|---|---|
| 安全研究、教育、CTF、互操作、保存、审计已授权软件 | 破解/keygen/绕 DRM/篡改反作弊 |
| 按行为 + 公开规格的清洁室重建 | 复制专有代码、资产或受保护表达 |
| 对自有夹具做 oracle | 未授权目标;利用 PoC 写法 |
钉 [email protected] + doctor | 破解引擎或「借用」IDA/Hopper/JEB 许可 |
站内页:/zh/compliance/ · /zh/faq/legal-boundary/。智能体输出不是对原程序、其数据或其名称的许可。
最小启动路径 + doctor 加深
上游 Quick start 写的是 npx rea-agents setup。rea.run 教学等价——一律钉 6.5.0,除非发行说明另有强制:
# Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+(见上游 README)
npx -y [email protected] setup
npx -y [email protected] doctor --json
# 批准 MCP 注册后重启智能体
# 可选:按客户端范围的 doctor(示例客户端 id——换成你的)
npx -y [email protected] doctor --client claude_code --json
# 可选:原生车道——自备 Ghidra 12.x + 64 位 JDK 21+
export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC
export JAVA_HOME=/absolute/path/to/jdk-21
npx -y [email protected] doctor --provider ghidra --json
| 检查点 | 通过标准 |
|---|---|
| Setup | 重启后智能体能列出 REA MCP 工具 |
| Doctor | 所需车道 doctor --json 绿灯 |
| 客户端 doctor | --client … 匹配你实际使用的宿主 |
| Ghidra doctor | 设好 GHIDRA_INSTALL_DIR + JAVA_HOME 后 --provider ghidra 绿灯 |
| 免引擎首任务 | 对已授权样本做静态 JS/Electron 或 .NET |
| 原生车道 | 深伪代码前配置好自备 Ghidra/Hopper/IDA |
| Android 车道 | PATH 上有无头 jadx + 完整 JDK |
安装界面演示:/zh/docs/install-demo/。版本说明:/zh/blog/rea-agents-6-5-0/。Ghidra/IDA 仍自备(/zh/faq/setup-vs-providers/)。
建议的工作室布局(选一种开干)
| 角色 | 最小栈 | 何时加码 |
|---|---|---|
| 智能体优先(MCP 宿主) | REA 6.5.0 + doctor 绿灯 | 深原生 → 自备 Ghidra(+ 可选 GhidraMCP) |
| Android 实验室 | REA + jadx + JDK + Apktool | 在你的模拟器上动态 → Frida/ADB |
| Windows 原生 | REA + x64dbg 或 raddebugger + ImHex | 重静态 → Ghidra/IDA(已授权) |
| .NET | REA 托管工具 + ILSpy(和/或 dnSpy) | 对自有程序集做运行时步骤 |
| 网络观察 | 对已授权客户端用 mitmproxy | 搭配 REA 捕获/HAR 工作流 |
| 清洁室重建 | A 室 + B 室 + oracle + 植入失败 | 收紧 SPEC;扩大 Evidence |
可选 GUI 伴侣:/zh/blog/eleven-rea-workbench/——围绕引擎的可视化 IDE;仍仅限授权目标。
常见坑
| 坑 | 症状 | 处理 |
|---|---|---|
| 引擎未安装 | 原生任务失败/伪代码为空 | 自备 Ghidra/Hopper/IDA;doctor --provider ghidra --json;/zh/faq/setup-vs-providers/ |
| 缺 JDK/jadx | Android 反编译报错 | 完整 JDK + 无头 jadx 在 PATH |
教学实验室用浮动 latest | 「我这边能跑」漂移 | 处处钉 [email protected] |
| 未测 oracle | 绿灯却常量错 | 植入 3 个必须失败变体 |
| A 室泄漏进 B 室 | 「规格」里有地址/名称 | SPEC.md 墙:仅行为 |
| 未授权目标 | 法律/ToS 风险 | 仅自有/书面授权/开放/清洁室 |
| 把星标当就绪 | 工具很火但 doctor 红 | 先 doctor + 小型授权夹具 |
| 智能体编造 Evidence | 文笔自信但无地址 | 强制工具结果;未知保持标注 |
| 「直接反编译厂商包」神话 | 版权风险 | 观察行为 + 公开规格;FilmCraft 式 AGENTS |
| 破解/绕过教程 | 本站范围外 | 不写、不求 |
如何嵌入 rea.run 教学路径
- 词汇 + Evidence:/zh/blog/rea-beginner-guide/
- 钉 6.5.0:/zh/blog/rea-agents-6-5-0/
- 安装演示:/zh/docs/install-demo/
- 可选 GUI:/zh/blog/eleven-rea-workbench/
- 本页:工作室环 + oracle + 双室清洁室
- 练习:/zh/lab/ · /zh/showcase/dx-ball/
合规
- 仅分析你拥有、有书面授权、可学习的开源,或清洁室教学夹具。
- 本页无破解、keygen、绕 DRM、利用 PoC 内容。
- 商业引擎(IDA、Hopper、JEB 等)仍按厂商许可自备;REA 不授予许可密钥。
- 星标与 awesome 列表位置 ≠ 许可。
- 清洁室 = 行为 + 公开规格;不是阅读厂商应用包。
- rea.run 是社区运维指南;既有页脚说明保持低调——不加新的显眼横幅。
/media/blog/rea-reverse-engineering-studio/下媒体为本文托管(工作室演示视频 + 封面静帧)。
来源
- REA:morluto/rea(README Quick start;本站钉
[email protected];DISCLAIMER) - REA 作者公开 awesome 列表:morluto/awesome-reverse-engineering(765★,2026-10-18)
- AI×RE 分级地图:zhuyansen/awesome-ai-reverse-engineering(8★;抓取日 README 119 条分级仓库)
- 清洁室 AGENTS 示例:storytold/filmcraft AGENTS.md
- 上表引擎/桥接仓库(GitHub API 星标 2026-10-18)
- 站内:/zh/blog/rea-beginner-guide/ · /zh/blog/eleven-rea-workbench/ · /zh/docs/install-demo/ · /zh/showcase/dx-ball/ · /zh/compliance/ · /zh/faq/legal-boundary/ · /blog/rea-reverse-engineering-studio/
问答
| 问题 | 短答 |
|---|---|
| 分析核心是什么? | REA——一个 MCP(rea-agents),带 Evidence 与调查工作流。 |
| 用哪条 setup? | 教学钉:npx -y [email protected] setup(不要浮动 latest)。 |
| REA 会装 Ghidra 吗? | 不会——自备;设好环境后用 doctor --provider ghidra。 |
| 三类 oracle 是什么? | 字节、行为、运行时。 |
| 为何植入失败? | 为了测 oracle(TH08 式常量盲区)。 |
| 清洁室墙是什么? | SPEC.md——仅行为;B 室从不看分析。 |
| 能分析商店任意 APK 吗? | 不能——仅自有/已授权/清洁室。 |