第 1 名 · morluto/rea — REA: Reverse Engineer Anything
让 AI 分析软件和二进制,理解功能究竟是如何被实现的。
本周新增 Star 201,065 | 仓库 Star 总数 371,255 | Forks 92,975
| 项目 | 信息 |
|---|---|
| 官方仓库 | https://github.com/morluto/rea |
| 官网 | https://rea.tools/ |
| 使用指南 | https://rea.tools/guides/ |
| 案例集 | https://rea.tools/showcase/ |
| npm 包 | rea-agents |
| 语言 / 许可 | TypeScript / MIT |
| 最新提交 | 2026-10-23 |
| 一句话定位 | 一个 MCP 服务,让 AI 智能体逆向分析原生二进制、JavaScript/Electron 应用、.NET 程序集与网站行为,全程本地运行 |

▲ 图 0:REA 在 Hopper 中分析原生二进制(官方截图)
一、它到底能做什么
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 使用完全相同的工作流与证据契约,方便写自动化脚本。
官方调查流程图
▲ 图 1:REA 官方调查流程图(原图可打开查看大图)
上图为官方
website/public/assets/figures/rea-investigation-flow.svg原图,可直接打开查看大图。
官方案例集
▲ 图 2:REA 官方案例集
二、环境要求
| 项目 | 要求 |
|---|---|
| Node.js | 22.x (≥ 22.23.4)、24.x (≥ 24.22.1) 或 26.12.1+,外加 npm |
| 操作系统 | macOS / Linux / Windows(Windows 上部分原生分析能力仍属实验性,见 docs/windows-ghidra-p0.md) |
| Linux 额外依赖 | Ghidra、JADX、固件工具启动等需要 procps 兼容的 ps 位于 REA 的 PATH 上(用于进程归属检查) |
| 原生分析引擎 | 可选。深度原生分析需 Hopper、Ghidra 或 IDA 三者之一;静态 JavaScript 与 .NET 检查 无需任何原生引擎 |
| 网络 | 安装阶段需要 npm;分析阶段本地执行 |
三、部署方式
方式 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
| 参数 | 作用 |
|---|---|
--client <name> |
精确指定客户端,可重复;显式指定后跳过交互选择 |
--all-detected |
配置所有检测到的受支持客户端 |
--skill=false |
不安装内置工作流(skill)文件 |
--dry-run |
只返回计划,状态 planned,退出码 0 |
--json |
结构化输出,便于 CI 解析 |
--yes |
免交互确认。必须配合显式范围(如 --client codex);无范围时只作用于已存在的 REA 自有注册 |
--install-hopper |
非交互安装 Hopper 所需 |
--accessible |
顺序、纵向渲染的是/否提示,适合读屏软件 |
方式 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。务必先落盘再投影视图:
bash 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)配置
| Provider | 说明 | 配置要点 |
|---|---|---|
| Hopper | macOS 商业反汇编器 | setup 可在你批准后安装;也可填入已有安装的验证路径。首次启动 macOS 可能弹出演示模式/激活许可对话,必须在同一用户会话内完成 |
| Ghidra | NSA 开源框架(免费) | 使用已有安装;setup 可保存已验证路径。Windows 上支持 16 位 DOS 分析 |
| IDA | IDA Pro / Hex-Rays | 需自行合法取得授权;支持可选的原生 MCP 桥接 |
| JEB | JEB 客户端 | 需 你手动启动 JEB 客户端并让其提供 MCP,用 REA_JEB_MCP_URL 选定 |
| Kuna | 实验性反编译器 | 见 docs/kuna-provider.md |
| JADX | Android 反编译 | 无头模式 + 完整 JDK(Linux/macOS/Windows x64) |
| Rizin / objdump | 离线原生检查 | 由调用方自行提供,REA 不代为安装或更新 |
| pwntools | ELF 诊断 | Linux x64,调用方自行提供 |
大体积二进制可调高启动超时:
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 不授予任何工具许可、密钥或激活权益。破解版、盗用密钥、共享密钥均不被授权。
参考链接
- 仓库:https://github.com/morluto/rea
- 安装与配置: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