REA(Reverse Engineer Anything)是一个开源 MCP server,可让 Claude 深入分析二进制文件、Electron bundle 和网站,并明确指出它无法确定的内容。它能把逆向工程工作交给 coding agent,你只需用普通语言询问 Claude 有关你电脑上某个应用的问题。

Claude 会调用 REA 的工具。REA 会返回代码、文件和行号引用,以及一份列出尚未解决问题的清单。该项目采用 MIT license,通过 npm 以 rea-agents 发布,并在本地进行分析。
REA 到底是什么
在底层,REA 是一个 MCP server。MCP,即 Model Context Protocol,是一种接口,让 Claude Code、Claude Desktop、Cursor、Codex 以及许多其他 agents 能够调用外部工具。
注册 REA 后,Claude 就能像使用常见的文件和 shell 工具一样,调用 open_binary 和 close_binary 等工具。设置过程还会安装一个 skill,其中包含调查步骤,帮助 agent 确定工作顺序。

值得注意的是这项设计决策:REA 不是 decompiler。对于 native code,它会调用逆向工程师已经信赖的工具,例如 Hopper、Ghidra 或 IDA。对于 JavaScript 和 Electron,它会自行进行静态分析。对于网站,它会通过 DevTools protocol 驱动 Chrome 系浏览器。它本身负责的是编排和记录。
项目将这些记录称为 Evidence。每项结果都会记录发现的来源、直接观察到的内容、推断出的内容,以及仍未解决的问题。Claude 会读取完整记录,包括其中的缺口。这会影响你对它接下来给出的结论的信任程度。

开始之前
你需要 Node.js 22.19 或更高版本、24.11 或更高版本,或者 26 及以上版本。npm 会随 Node.js 一起安装。在 Windows 上,运行 winget install --exact --id OpenJS.NodeJS.LTS。在 macOS 上,使用官方 .pkg 安装程序或运行 brew install node。在 Linux 上,通过 fnm 安装。
在 Claude Code 中设置 REA
Claude Code 是使用 REA 的最佳环境,因为 Claude 还可以读取你的项目、运行构建,并在理解功能后编写其重新实现。
方式 A:让 Claude 为你安装:
Install REA and connect it to this coding agent using npx rea-agents@latest setup.
Show me the setup plan for approval, then verify the installation.
方式 B:自己运行安装向导:
npx rea-agents@latest setup --client claude_code
这个向导刻意设计得很谨慎。在修改任何内容之前,它会先显示计划:将编辑哪个配置文件、skill 将安装到哪里,以及是否需要安装 Hopper。
重启并验证:
npx -y rea-agents@latest doctor --client claude_code --json
你需要看到 "healthy": true。在 Claude Code 中,/mcp 会列出已连接的 servers;也可以直接询问:Check that REA is connected and show me which REA tools you can use.
在 Claude Desktop 中设置 REA
Desktop 也能用,但有一个注意事项:必须先彻底退出应用。只关闭窗口还不够。在 macOS 上按 Cmd+Q;在 Windows 上,还要通过系统托盘图标退出。然后在 Claude 之外打开终端,运行:
npx rea-agents@latest setup --client claude_desktop
添加 native 分析引擎
JavaScript、Electron、.NET、Go 和 Rust 目标不需要额外配置。编译后的 native code 则需要一个 provider。

Hopper(简单的选择):重新运行 setup 并勾选 Hopper。REA 会查找你已有的安装,或者建议下载官方软件包。Hopper 是商业软件,演示版存在供应商设定的限制。
Ghidra(免费,但有严格要求):REA 要求使用准确的 Ghidra 12.1.4,以及包含 javac 的 64 位 JDK 21 或更高版本。它不会替你下载 Ghidra 或 Java。设置好变量后,请在同一个终端中再次运行 setup。这样路径才会写入 Claude 的配置中。
IDA(自备 license):IDA 通过上游 IDA MCP server 接入。你需要在一个小型 JSON 文件中描述它,然后告诉 REA 该文件的位置。
第一次调查
给 Claude 发送以下内容:
Download https://rea.tools/examples/notes-example.zip into a new example folder and unpack it.
Use REA to find what happens when I click Export notes. Show where notes.csv is written,
which fields it contains, and the relevant files and lines.
REA 结果中的 IPC 部分如下:
{
"literal_channels": 1,
"renderer_transmissions": 1,
"main_handlers": 1,
"paired_renderer_transmissions": 1,
"ambiguous_renderer_transmissions": 0
}
看最后一行。如果 channel 名称是在运行时通过变量拼接而成的,REA 就会将其标记为 ambiguous,而不是猜测对应关系。"无法将此项配对"的计数,比"找到了"的计数更有价值。
如何使用 REA 编写 Claude prompt
README 中的核心工作流是先理解,再构建:
Understand how search works in the Notes app, show me the evidence,
and build a similar feature for my project.
对于编译后的程序,请指定 provider 和路径:
Use REA with Ghidra to inspect /absolute/path/to/program. List its functions and
strings, then explain the part that handles user input with references to the code.
对于打包后的 Electron app,将其 app.asar 提供给 Claude。在 Windows 上,它通常位于 AppData\Local\Programs\ esources。在 macOS 上,右键点击应用,选择"显示包内容",然后在 Contents/Resources 中查找。
以下几种习惯能明显改善结果:
- 始终提供绝对路径;如果路径包含空格,请加上引号。
- 明确要求 Claude 提供证据和未解决的问题,否则它可能会在总结时省略这些内容。
- 如果安装了多个 provider,请指定名称,以免遇到选择不明确的错误。
- 对于耗时较长的调查,请让 Claude 在关闭二进制文件时传入 snapshot_path,以便后续 session 复用已完成的分析。
- 如果静态分析留下了未解决的问题,请改用 runtime observation:browser、Electron 或 process capture 工作流。
不通过 agent 使用 REA
全局安装 CLI:npm install --global rea-agents
配置好 provider 后可使用的 native 命令:
rea analyze /path/to/program --provider ghidra --json
rea search /path/to/program "search" --provider ghidra --json
rea function /path/to/program main --provider ghidra --json
rea decompile /path/to/program 0x1000 --provider ghidra --json
rea xrefs /path/to/program 0x1000 --provider ghidra --json
rea trace /path/to/program "search" --provider ghidra --json
rea providers --json 和 rea capabilities --json 会告诉你这台机器上有哪些可用功能。Snapshots 可以帮你保存需要复用的结果:
rea analyze /path/to/program --provider ghidra --snapshot /path/to/analysis/program.json
REA 无法替你完成的事
REA 的 README 对其限制说明得格外直白,而这些限制恰恰体现了这个产品的实际边界。
法律方面:该项目将自身用途限定为合法研究、教育、互操作性、软件保存,以及检查你拥有或获准检查的软件。它不会授予 Hopper、IDA 或 JEB 的 license。
隐私方面:REA 在本地分析目标,不会上传你的应用。但 Claude 会收到工具结果,并根据模型 provider 自己的数据政策处理这些结果。
技术限制:REA 不会为你生成完美的重建结果。Ghidra 生成的伪代码不是原始源代码,REA 在自己的文档中也明确说明了这一点。无法解析的计算调用仍会标记为未知。
REA 提供给 Claude 的,是足够可靠的证据,让它能够编写重新实现并进行测试。这才是你应该带走的习惯:让 Claude 负责挖掘,每次都仔细阅读未知项清单,并随手准备好测试 harness。
