逆向工程是个苦活: Hopper、Ghidra、IDA 一个个打开,手动翻汇编、找函数、记证据。REA 想做的事很直接——把这些反汇编引擎包装成一层 MCP 分析管道,让你的 AI 智能体自己去读二进制、自己跑分析,最后甩给你一条 带证据链的结论,而不是一句"AI 觉得大概是这样"。全程本地运行,目标程序不上传。

一、它到底能做什么
REA 不是一个"聊天机器人",而是一层 分析能力管道:你的智能体通过 MCP 调用 REA 的工具,REA 驱动 Hopper / Ghidra / IDA / JADX 等本地引擎去真正读代码,然后把 带证据(Evidence)的结论 返回给智能体。
关键特性:
证据链:每条结论都附带来源位置、观察记录与推断依据,结论与证据分离,不会给你"AI 说的"。
完全本地:目标程序不上传。智能体拿到的是工具结果,其模型提供方有自己的数据政策。
覆盖面极广:原生二进制、Go / Rust / CUDA、IL2CPP、Godot PCK、Python(PyInstaller)、.NET、Android APK、固件、抓包、SQLite、WASM、EVM 字节码、浏览器行为……
CLI 与 MCP 同源:命令行和 MCP 使用完全相同的工作流与证据契约,方便写自动化脚本。
官方调查流程图
上图为官方
website/public/assets/figures/rea-investigation-flow.svg原图,可直接打开查看大图。
官方案例集

二、环境要求
三、部署方式
方式 A:npx 交互式配置(官方推荐)
# 需要先安装 Node.js 与 npm
npx rea-agents setup
流程说明:
选择智能体(多选)。已存在的 REA 注册默认勾选;新检测到的客户端保留但 默认不选——检测只是提供上下文,不等于授权新增注册。
审阅变更计划。计划会列出:已存在的 Hopper 安装 / 已验证的 Ghidra 安装 / 建议安装的官方 Hopper 包、每个检测到的智能体配置路径、每个 REA skill 目标目录、外部软件与网络来源、包管理器命令。
确认后写入。REA 会备份现有配置、保留不相关条目与注释、在私有目录暂存变更并回读校验。拒绝或 Ctrl-C 不会产生任何改动。
完成后 重启被提示的智能体(Claude Desktop 需完全退出,否则运行中的进程会覆盖注册)。
方式 B:脚本化 / CI 部署
# 显式指定客户端(可重复),跳过交互式选择
rea setup --client codex --client cursor --skill=false --dry-run
# 真正应用:所有检测到的客户端 + 安装 Hopper,JSON 输出
rea setup --yes --all-detected --install-hopper --json
# 只读体检(不写入任何文件)
rea doctor --json
方式 C:全局安装 rea 命令(推荐长期使用)
npm install --global rea-agents
rea --help
# 或者用 Bun
bun add --global rea-agents
Bun 全局更新需要 Bun 1.2.17+,版本过低请先手动升级。
方式 D:仅安装 Skill(不注册 MCP)
只想要"调查方法论"而不需要接入分析引擎时使用,详见官方 docs/installation.md#skill-only-installation。
方式 E:手动注册 MCP(自定义客户端)
任何支持本地 MCP 的客户端都可手动注册,官方文档见 docs/installation.md#mcp-registry。
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "rea-agents@latest"]
}
}
}
紧凑输入 schema(默认):MCP 默认使用紧凑输入 schema 以降低上下文占用。若需要完整字段说明与嵌套校验细节,在 MCP 注册中加入:
{ "env": { "REA_MCP_INPUT_SCHEMA_PROFILE": "full" } }
其他可保留的环境变量:REA_MCP_OUTPUT_SCHEMA_PROFILE、REA_MCP_MAX_RESPONSE_BYTES。
四、使用方法
4.1 在智能体里提问(主用法)
向你的智能体发出"某个功能是怎么实现的"这类问题,REA 会在后面自动接管:
Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.
把 Notes 换成你的目标应用,把功能描述换成你想弄明白的东西即可。
4.2 在终端里直接分析(无需智能体)
# 分析解包后的 JavaScript / Electron 应用目录或 ASAR
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
# Windows 路径示例
npx -y rea-agents@latest analyze-javascript-application "D:/apps/example" --json
输出包含模块、导入关系、Electron 边界及其证据。
大结果处理:真实应用的完整 Evidence 可能高达数百 MB。务必先落盘再投影视图:
rea analyze-javascript-application /absolute/path/to/app --json > app-evidence.json jq -c '{source: {kind: "inline", evidence: .}, view: {kind: "summary"}}' app-evidence.json > app-view.json rea inspect-analysis-view app-view.json官方示例:一个 334 MB 的 Obsidian Evidence 文件,summary 视图只有约 10 KB。也可直接引用已保存文件:
{"source": {"kind": "evidence-file", "path": "app-evidence.json"}, "view": {"kind": "summary"}}。
4.3 .NET 程序集
# 查看程序集身份与部署形态
rea inspect-managed-artifact /absolute/path/Assembly.dll --json
# 查看成员(可按类型筛选)
rea inspect-managed-members /absolute/path/Assembly.dll --json
rea inspect-managed-members /absolute/path/Assembly.dll --type Example.Parser --json
--type 取成员检查结果里的精确 full_name,或你已知声明类型名;省略则检查全部成员。
4.4 SQLite 数据库快照
rea inspect-sqlite-database PATH --json
rea inspect-sqlite-database PATH --table NAME --row-limit 20 --json
无需原生分析引擎。
4.5 原生二进制分析:选择 Provider
# 列出可用 provider 与其支持的操作
rea providers --json
rea capabilities --json
# 显式指定 provider
rea analyze /absolute/path/to/program --provider hopper
rea analyze /absolute/path/to/program --provider ghidra
自动选择时,REA 使用 唯一可用且支持该目标 的 provider;多个可用时需显式指定。
长期偏好用环境变量
REA_ANALYSIS_PROVIDER;命令行--provider优先级更高。MCP 中通过
open_binary传provider_id:
{
"path": "/absolute/path/to/program",
"provider_id": "hopper"
}
选定后 provider 绑定到该 session,直到显式切换或关闭。
排障:
rea doctor --provider hopper --json(Hopper / Ghidra / IDA / JADX / Kuna 均支持)。
4.6 快照复用(避免重复分析)
rea analyze /absolute/path/to/program --provider ghidra --snapshot /absolute/path/to/analysis/program.json
# 重复同一查询,直接复用已保存结果
rea analyze /absolute/path/to/program --provider ghidra --snapshot /absolute/path/to/analysis/program.json
当 目标字节、操作、参数、provider 与设置完全一致 时命中缓存。快照文件为本地文件,权限仅限所有者。MCP 侧:open_binary 接受 snapshot_path 原子导入;close_binary 接受 snapshot_path 与可选 overwrite: true。
4.7 Shell 补全
rea completions --help
eval "$(rea completions bash)" # 需要支持 complete -o nosort 的新版 Bash
macOS 自带 Bash 3.2 无法加载该 hook。
4.8 证据导入 / 导出 / 对比
rea export-evidence --help
rea import-evidence --help
rea compare-evidence --help
4.9 更新与卸载
# 全局安装的 CLI
rea update # --update 是同一流程的别名
rea --update
# npx 安装的智能体注册
npx rea-agents@latest setup
用 npx 时更新智能体注册与 skill 需重跑 setup 并重启智能体。
五、原生分析引擎(Provider)配置
大体积二进制可调高启动超时:
REA_GHIDRA_STARTUP_TIMEOUT_MS=180000
REA_HOPPER_STARTUP_TIMEOUT_MS=180000
六、常见问题
Q:必须装 Hopper / Ghidra / IDA 吗? 深度原生分析需要三者之一。静态 JavaScript 与 .NET 检查不需要任何原生引擎。setup 在你批准后可安装 Hopper;Ghidra 与 IDA 使用你已有的安装。
Q:需要先手动启动 Hopper 吗? 不需要,需要时 REA 会启动它。但 macOS 首次运行的许可对话必须先在同一用户会话内完成。
Q:REA 会上传我的应用吗? 不会。分析在本地完成。智能体收到的是工具结果,其模型提供方有独立的数据政策。
Q:遇到 bug 怎么办? 先更新(rea update 或 npx rea-agents@latest setup),新版本常已修复。仍存在则开 issue,附上 REA 版本、目标类型、复现步骤与错误输出。
Q:Linux 上 Ghidra/JADX 启动失败? 多半是 PATH 上缺 procps 兼容的 ps。恢复步骤见官方 docs/installation.md#linux-owned-process-prerequisite。
七、合规提示
REA 面向 合法研究、教育、互操作性、软件保护与分析你拥有或获授权检查的软件。商业工具(IDA Pro / Hex-Rays、Hopper、JEB)必须 自行合法取得并遵守其许可;REA 不授予任何工具许可、密钥或激活权益。破解版、盗用密钥、共享密钥均不被授权。
小结
REA 的价值不在于"让 AI 会逆向",而在于把逆向工作流 结构化、证据化、可脚本化。你不再需要记住 Hopper 里哪个菜单点哪里,只需要向智能体提一个问题,剩下的交给管道。对于安全研究员、恶意软件分析者、以及任何需要快速理解第三方二进制行为的工程师,这个项目值得放进工具箱。
参考链接
安装与配置:https://github.com/morluto/rea/blob/main/docs/installation.md
CLI 与证据:https://github.com/morluto/rea/blob/main/docs/cli.md
MCP 契约:https://github.com/morluto/rea/blob/main/docs/mcp-contracts.md
智能体提示词:https://github.com/morluto/rea/blob/main/docs/mcp-prompts.md
负责任使用:https://github.com/morluto/rea/blob/main/DISCLAIMER.md
Discord:https://discord.gg/GkcryMnJDM