Loading...

文章背景图

REA(Reverse Engineer Anything)|逆向分析引擎完整部署与使用指南

2026-10-24
8
- 字
- 分钟
|

第 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 程序集与网站行为,全程本地运行

REA 在 Hopper 中分析原生二进制

▲ 图 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 使用完全相同的工作流与证据契约,方便写自动化脚本。

官方调查流程图

REA investigation flow

▲ 图 1:REA 官方调查流程图(原图可打开查看大图)

上图为官方 website/public/assets/figures/rea-investigation-flow.svg 原图,可直接打开查看大图。

官方案例集

REA showcases

▲ 图 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

流程说明:

  1. 选择智能体(多选)。已存在的 REA 注册默认勾选;新检测到的客户端保留但 默认不选 —— 检测只是提供上下文,不等于授权新增注册。
  2. 审阅变更计划。计划会列出:已存在的 Hopper 安装 / 已验证的 Ghidra 安装 / 建议安装的官方 Hopper 包、每个检测到的智能体配置路径、每个 REA skill 目标目录、外部软件与网络来源、包管理器命令。
  3. 确认后写入。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 不授予任何工具许可、密钥或激活权益。破解版、盗用密钥、共享密钥均不被授权。


参考链接

评论交流
1 条

文章目录