2026 年,REA(Reverse Engineer Anything)把逆向工程常用的「看二进制、拉字符串、翻伪代码」封装成 MCP 工具,让 Claude Code 能在对话里按需调用,而不是你一个人在 Ghidra 里点三个小时。项目开源在 GitHub morluto/rea,文档与技能入口见 rea.tools。本文是완벽落地文:从合法边界、安装 npx rea-agents setup,到 EXE/PE 与 APK 的第一条工作流,以及和「纯 Ghidra」相比 Agent+MCP 到底多做了什么。
1. REA가 필요한 이유:Ghidra 很强,但 Agent 缺「手」
传统流程是:导入样本 → 等 Ghidra 分析 → 自己搜字符串、跟 xref、写笔记。瓶颈不在反汇编,而在把分散证据串成可验证的结论。Claude Code 擅长归纳与提问,但默认摸不到你的 .gpr 工程或 jadx 输出。
REA 的定位是 MCP + Skills 层:把「查字符串、列导入表、拉函数伪代码、Android 清单与组件」变成模型可调用的工具。你仍用 Ghidra/Hopper/IDA 做权威视图;Agent 负责按你的问题反复取证。这和 Agent Skills 指南里「可重复工作流写进 Skill」一致,也和 Pi vs Claude Code里强调的「执行环境 + 权限边界」同一思路。
若你已经在用云端 Mac 跑并行 Agent,建议把样本目录与 REA 配置放在与生产脱钩的节点,参见 云端 Mac 隔离与文末 Mac 租用、定价、帮助中心。
2. 常见目标:EXE/PE、APK、Electron、.NET
| 类型 | 典型扩展名 | 优先工具链 | REA 侧关注点 |
|---|---|---|---|
| Windows PE | .exe / .dll | Ghidra、Hopper、IDA | 导入表、字符串、入口与关键 API(文件/注册表/网络) |
| Android APK | .apk / .aab(解包后) | jadx-headless-mcp、JDK 17 | Manifest、组件、inspect_android_* 类工具 |
| Electron | .asar 内 JS | 解 asar + 文本搜索 | 主进程/预加载脚本、本地 HTTP、授权逻辑 |
| .NET | 托管 PE | dnSpy/ILSpy + Ghidra 辅助 | 元数据、混淆层;REA 多配合字符串与原生边界 |
先判断「托管还是原生」能省一半时间。.NET 与 Electron 往往先看资源与配置,再决定是否深入 native 桥接。
3. 安装 REA:Node 22+、setup、重启 Claude Code、rea doctor
- 安装 Node.js 22+(LTS 即可),确认
node -v与npx -v可用。 - 在终端执行
npx rea-agents setup,按提示把 MCP 与 Skills 写入 Claude Code 配置目录。 - 完全退出并重启 Claude Code,否则新 MCP 不会加载。
- 运行
rea doctor(或文档中的健康检查命令),确认 Ghidra/jadx 路径、JDK 与 JAR 可被找到。
node -v # v22.x+ npx rea-agents setup # 重启 Claude Code 后 rea doctor
若 doctor 报 jadx JAR 缺失,先下载官方 jadx-headless-mcp 发行包,并设置环境变量 REA_JADX_MCP_JAR 指向绝对路径。
4. EXE / PE 工作流(理解功能,不做武器化)
在 Ghidra(或 Hopper/IDA)中导入样本并等待自动分析完成。在 Claude Code 里开启 REA 相关 Skill,用自然语言描述目标,例如:「列出与 license 相关的字符串并给出 xref」「解释 WinMain 到第一次网络请求的路径」。
Agent 应通过 REA 拉取字符串列表、函数伪代码片段、导入 API,再결론数据流。你要刻意避免让模型生成 exploit、补丁绕过或恶意 shellcode;若提示词走向攻击链,应改问「防御检测点」或「合规日志应记录什么」。
对加壳样本,先在隔离环境识别 packer,再决定是否脱壳;REA 不能替代专用脱壳工具,但能在脱壳后加速「业务逻辑」阅读。
5. APK 工作流:JDK 17、jadx-headless-mcp、inspect_android_*
- 安装 JDK 17,
java -version应显示 17。 - 配置
REA_JADX_MCP_JAR=/path/to/jadx-headless-mcp-*.jar(名称以发行版为准)。 - 在 Claude Code 中让 Agent 调用 Android 检查类工具(如文档中的
inspect_android_manifest、inspect_android_components等,以 rea.tools 当前列表为准)。 - 从 Manifest 的 permission、exported 组件、deep link 入手,再下钻到 Java/Kotlin 与 native
.so边界。
Flutter/React Native 包可能主逻辑不在 Java 层;此时把「网络端点 + 本地存储」作为 Agent 的第一轮问题,比硬啃混淆类名更高效。
6. 第一次会话:示例提示词(功能理解)
- 「这是我自己开发的 Windows 客户端。请用 REA 列出所有 HTTP/HTTPS 相关字符串,并推断配置是从注册表还是文件读取。」
- 「请读 APK Manifest,标出 exported Activity 与危险 permission,并说明启动流程。」
- 「在不做绕过建议的前提下,说明该程序如何校验更新签名;引用你看到的函数或类名。」
好的第一次会话应产出:带证据引用的短文 + 待人工确认的 3 个假设,而不是一长串未验证的猜测。
7. 工具对比:REA+Agent vs 手工逆向 vs 仅反汇编
| 方式 | 优势 | 劣势 | 适用 |
|---|---|---|---|
| REA + Claude Code | 跨工具取证、自然语言迭代、笔记自动化 | 需约束合法与提示词;模型可能幻觉 | 功能地图、兼容分析、内部工具维护 |
| 纯手工 RE | 精确控制、法庭/审计可重复 | 慢、知识门槛高 | 漏洞研究(授权)、恶意样本深度分析 |
| 仅反汇编器 | 视图权威 | 缺少叙事与批量关联 | 单函数确认、补丁 diff |
8. 场景矩阵:何时上 REA
| 场景 | 建议 |
|---|---|
| 维护自家 legacy EXE,缺文档 | REA + Ghidra,先字符串与 API 地图 |
| Android 渠道包差异对比 | REA + jadx,Manifest 与资源 diff |
| CTF / 教学 | 隔离 VM,禁止生产网络;手写+Agent 混合 |
| 未授权竞品破解 | 不做—法律与平台条款风险 |
9. 推荐组合:Claude Code + REA + 隔离 Mac VM
推荐栈:Claude Code(Agent 与会话) + REA MCP(工具) + 隔离 macOS VM 或云 Mac(样本与密钥)。快照 VM 后可一键回滚;云 Mac 适合短期协作与 按小时计费。Ghidra 与 JDK 装在同一隔离环境,宿主机只跑终端与 Claude Code 客户端(若你使用远程开发,则全程在远端)。
10. 常见坑(5 条)
- 未重启 Claude Code,以为 setup 失败。
- JDK 8 与 jadx 17 要求冲突,doctor 通过但 Android 工具超时。
- 把模型결론当事实,不回到 Ghidra/jadx 二次确认。
- 在联网主力机上打开未知样本,触发 EDR 或误上传云同步目录。
- 提示词要求「绕过登录/破解」,既违规也更容易得到幻觉答案。
11. 落地步骤(7 步)
- 书面确认样本授权;复制到隔离目录(只读挂载更佳)。
- 安装 Node 22+ 并
npx rea-agents setup。 - 重启 Claude Code,
rea doctor全绿。 - 配置 Ghidra 路径,导入 EXE 并完成自动分析。
- 配置
REA_JADX_MCP_JAR与 JDK 17,放入测试 APK。 - 按「第一次会话」提示词跑一轮,保存 Agent 输出与截图。
- 删除样本、清理工程,VM 快照或销毁云 Mac 会话。
FAQ
没有授权可以分析竞品吗?
不可以。请只分析你有权研究的软件;必要时咨询法务。
REA 会代替 Ghidra 吗?
不会。REA 连接 Agent 与工具;深度视图仍在反汇编器里。
APK 第一次该先问什么?
先 Manifest 与 exported 组件,再网络与本地存储,最后 native 库。
결론
REA 的价值是把逆向从「单人看图」变成可迭代的证据驱动对话,前提是你守住合法边界、用好隔离环境,并坚持「工具输出 > 模型口头」。下一步可结合 Agent Skills 把常用 REA 提示词固化。需要干净 Mac 做样本实验,见 租用页与 帮助中心。