rea
面向 AI Agent 的逆向工程 MCP 服务器和 CLI,把 Hopper、Ghidra 的反编译、函数与交叉引用分析、字符串检索等能力封装成 MCP 工具,让 agent 分析闭源 App、原生二进制、Electron/JS、.NET 与 APK,并在同一会话里照着复刻功能。亮点是分析全程本地运行、结论附带证据与局限说明,并支持静态 JS 分析与证据快照复用;原生分析需自备 Hopper 或 Ghidra 授权。MIT 协议。
README
English · 简体中文 · 日本語 · 한국어 · العربية
REA: Reverse Engineer Anything
一个 MCP,覆盖二进制、应用与运行时行为的逆向工程。
看到一个你喜欢的功能。理解它的工作原理,直到二进制层面。
快速开始 · 当前状态 · 调查模型 · 工具目录 · 路线图 · 工作原理
npx rea-agents setup

|
加入逆向工程社区 Discord · 问答 · 展示与分享 |
看到某个应用里有一个你也想在自己的产品中实现的功能?让 agent 用 REA 去调查它。它可以在没有源代码的情况下检查该应用,解释这个功能如何工作,展示证据,并为你的项目构建一个版本。
REA 将你的 agent 连接到用于检查原生二进制、JavaScript 与 Electron 应用、.NET 程序集以及网站的工具。你也可以在终端中使用同样的工具。分析在本地运行,结果中会包含每个结论背后的证据与局限。
setup 会将 REA 注册到你的 agent,并安装配套的工作流说明。原生分析可以使用已有的 Hopper 或 Ghidra 安装;setup 可选地在获得批准后安装 Hopper。静态 JavaScript 分析则不需要任何引擎。
直接问你的 agent
完成 setup 后,重启你的 agent 并提问:
Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.
把 Notes 替换成你想理解的应用,或者先让它给出一个概览。
调查模型
|
反编译 打开一个应用,恢复可读的代码、字符串、名称以及其他关于其工作原理的线索。 |
理解 沿着代码从一个部分追踪到另一个部分,直到 agent 能够解释某个功能实际是如何工作的。 |
重建 把 agent 学到的东西转化为你自己产品中的一个功能,适配你的技术栈、接口与需求。 |
REA 会展示它是如何得出结论的。它并不声称能恢复原始源代码,也不会自动克隆一个应用。
为什么选择 REA
| 为 agent 而构建 | 询问某个应用做了什么,让 agent 去检查它,而不是凭空猜测。 |
| CLI 与 MCP | 在终端或 agent 中运行同样的逆向工程能力。 |
| 引导式 setup | 配置你的 agent,连接已有的分析工具,或在获得批准后安装 Hopper。 |
| 从洞见到代码 | 理解某个功能,然后在同一次编码会话中构建你自己的版本。 |
| 本地优先设计 | 分析在你所支持的本地主机上运行。REA 不会把应用上传到托管分析服务。 |
| 保留上下文 | 调查多个应用时无需为每个问题重新开始。 |
快速开始
运行 setup(推荐)
用你的 agent 设置 REA:
npx rea-agents setup
选择哪些受支持的 agent 应使用 REA,然后在批准前查看确切的路径与改动。已有的 REA 注册默认处于选中状态;新检测到的 agent 可供选择,但仅检测到并不会自动选中它们。setup 会为选中的 agent 添加 MCP 访问与 REA 的引导式工作流。Hopper 是一个单独的可选项,需要单独的同意。setup 也可以记录一个已有的 Ghidra 安装。
setup 会在应用改动前展示改动内容,并备份已有配置。需求与设置选项参见 安装与设置。
配合 agent 使用(推荐)
完成 setup 后,重启你的 agent,并描述你想理解的应用或功能。Hopper 可以以演示模式运行;如果它显示首次运行的提示,选择演示或输入已有的许可证。
REA 支持 Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、Windsurf、Devin、OpenCode、Antigravity、GitHub Copilot CLI、Command Code 以及 VS Code。已有的 REA 注册在 setup 期间默认被选中;其他检测到的 agent 在被选择前保持未选中状态。其他 agent 可以使用手动 MCP 配置。
单独安装 skill
npx skills add morluto/rea --skill reverse-engineer-anything
这安装的是 agent 说明,而不是 MCP 注册或分析引擎。
请遵循该 skill 的条件连接指南:
如果缺少注册,准备一个限定范围的 npx rea-agents setup 方案,查看
并批准其实际改动,然后重启/重新连接并验证工具。
上面的引导式 setup 默认会安装一个与版本匹配的 skill。skills.sh
路径使用的是仓库中的说明,它可能领先于已发布的服务器;
参见已发布包与 main 分支。
从终端获得第一个结果
对于你提取出的 JavaScript/Electron 应用目录树或 ASAR,运行:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
把路径替换为你的目标(例如 Windows 上的 "D:/apps/example")。
这会在不进行 MCP 设置、不启动 Hopper、Ghidra,也不执行应用的情况下,
以内联方式返回 Evidence、恢复出的图、局限与未知项。对于原生应用,先配置
其引擎,然后用该应用的路径运行 analyze。当你需要诊断时运行 doctor;它不是每次分析的前提条件。
安装 rea 命令
安装命令行接口:
curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash
该安装脚本会把 rea 添加到你的系统中,并在终端中运行时启动 setup。它要求已经安装 Node.js 与 npm。
或者,用 npm 安装,然后运行 setup:
npm install --global rea-agents
rea setup
用 rea update 更新任一安装。
需求
静态 JavaScript 检查只需要 Node/npm 运行时。主机与 外部工具的前提条件取决于所选的 workflow;各原生 provider 指南会说明它们支持的平台。
- macOS 12 或更新版本
- Ubuntu 24.04+、Fedora 41+ 或 64 位 Arch Linux
- Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+
- npm;REA 不要求也不安装特定版本的 npm
原生二进制分析需要 Hopper 或 Ghidra。Hopper 是独立软件,拥有自己的许可证;其演示版支持分析,但带有厂商定义的限制。REA 可以使用你已经安装的 Ghidra。
固件区域检查与显式提取在 Linux 上使用调用方提供的 Binwalk 和 Unblob。设置、来源、资源限制与原生交接参见 固件分析。
静态 APK 分析使用单独提供的无头 JADX JAR 与 Java,不使用模拟器,也不执行 APK。设置、CLI/MCP 操作、覆盖率与公开测试夹具参见 Android 分析。
仓库 main 分支包含针对本地 NTFS 上原生 x86-64 PE 应用的实验性 Windows x64 Ghidra 支持,带有内置的 Job Object、私有 DACL 与路径准入控制。在期待 npm 包中具备该功能之前,请查看发布边界。前提条件与已验证范围参见 Windows Ghidra P0。
如果有什么不工作,运行:
npx -y rea-agents@latest doctor
doctor 会检查你的主机、依赖、分析工具与 agent 配置,且不做任何更改。使用 --json 可获得结构化诊断。
Linux 安装与故障排查
在 macOS 上,setup 可以在获得批准后在 ~/Applications 中安装 Hopper。它会验证官方下载,并且不需要 Homebrew 或管理员权限。
在受支持的 Linux 发行版上,setup 可以通过你的系统包管理器安装 Hopper 及其演示会话依赖。你可能会看到系统授权提示。演示会话使用私有虚拟显示,不会干扰你的桌面。下载验证与平台细节参见 Hopper 安装。
正常的 Linux 启动器是 /opt/hopper/bin/Hopper。如果 Hopper 安装在别处:
export HOPPER_LAUNCHER_PATH=/absolute/path/to/Hopper
rea doctor --json
如果 doctor 报告缺少分析引擎,但文件确实存在,用以下命令检查共享库解析情况:
ldd /opt/hopper/bin/Hopper | grep 'not found'
安装缺失的包并重新运行 rea setup。Linux 演示版需要 Xvfb、Python 3、X11 与 XTEST;获得批准的 setup 会安装这些依赖。如果你使用 curl 安装脚本,在需要时把 ~/.local/bin 添加到你的 shell PATH 中。
REA 在 macOS 上默认将 HOPPER_LAUNCHER_PATH 设为 /Applications/Hopper Disassembler.app/Contents/MacOS/hopper,在 Linux 上设为 /opt/hopper/bin/Hopper。显式配置始终优先。
Ghidra 分析 provider
已经在用 Ghidra?REA 可以在 Linux x64 或 macOS x64/arm64 上将它连接到你的 agent。它需要 Ghidra 12.1.4 以及 64 位 JDK 21。在 macOS 上,你的 Ghidra 安装还必须包含适用于你架构的原生反编译器。
设置安装路径,然后运行 setup:
export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC
export JAVA_HOME=/absolute/path/to/jdk-21 # optional when java and javac resolve from PATH
rea doctor --json
rea setup
rea providers --json
setup 会检查这些安装,并在获得批准后把它们的路径保存到所选 agent 的配置中。Ghidra 与 Java 必须已经安装;REA 不会下载或更改它们。
该适配器提供清单、函数、内存与加载映像检查,以及在 Linux 和 macOS 上的原子函数标注编辑。annotate_native_function 会在会话数据库中编辑名称与入口注释,并返回刷新后的函数档案;可执行字节保持不变。Ghidra 不通过 REA 提供 GUI 控制。
打开一个 Ghidra 目标会选中其 provider;第一次分析查询会启动导入与自动分析。该查询可能比客户端的默认请求截止时间更长。SDK 示例与取消恢复参见首次查询的截止时间与恢复。
REA 分析目标的临时副本,并在会话关闭时删除临时项目。结果会指出 Ghidra 观察到了什么,以及它无法解析什么。反编译产生的是伪代码,而非原始源代码。
Ghidra 还能以显式的 16 位 x86 实模式配置导入 DOS MZ 可执行文件。函数结果包含完整的已观察主体范围,用于区分自有字节与外围跨度。地址、封装与验证边界参见 DOS 分析指南。 固定的无头适配器、支持的布局与已有的原生工具工作流参见可选的 NativeAOT 元数据恢复。
Windows Ghidra P0 使用内置原生控制来实现其在本地 NTFS 上的只读原生 x86-64 PE 边界;参见 Windows Ghidra P0 指南。配置细节、覆盖率与真实 provider 验证参见 Ghidra 安装、provider 评估 与 测试。
要只移除 REA 拥有的 MCP 注册与受管理的 skill:
rea uninstall
rea uninstall --purge-data # also removes only ~/.rea/cache and ~/.rea/state
卸载会保留 Hopper、Node.js、Evidence 文件、捕获记录、无关的 skill 以及其他 MCP 服务器。它会拒绝格式错误的客户端配置,并且绝不会跟随 purge-data 的符号链接。
CLI 还是 agent?
| 如果你想… | 使用 |
|---|---|
| 让 agent 调查一个应用并构建一个功能 | 运行 setup,重启你的 agent,然后描述任务 |
| 从终端检查或反编译应用的某一部分 | rea analyze 或 rea decompile |
| 验证、规范化或比较 Evidence 包 | rea evidence-import、rea evidence-export 或 rea compare |
| 在不执行的情况下映射本地 JavaScript/Electron 应用 | rea analyze PATH 或 rea analyze-javascript-application |
| 在不重新启动 provider 的情况下复用不可变的分析结果 | 向深度分析命令传入 --snapshot /path/to/analysis.json |
| 将源代码作为历史参考导入 | rea import-reference-source |
| 捕获或比较受控的进程行为 | rea capture-process 或 rea compare-process-captures |
rea evidence-import /absolute/path/to/evidence/bundle.json
rea evidence-export /absolute/path/to/evidence/bundle.json /absolute/path/to/evidence/canonical.json
rea compare /absolute/path/to/evidence/left.json /absolute/path/to/evidence/right.json
在不执行的情况下分析 JavaScript 应用目录或 ASAR:
rea analyze /absolute/path/to/releases/app.asar --json
rea analyze-javascript-application /absolute/path/to/releases/app.asar --json
对于目录或 .asar,当既未提供 --provider 也未提供
--snapshot 时,通用的 rea analyze 会自动选择静态
JavaScript 应用 provider。两条路径都会以内联方式返回分析及其 Evidence
上下文。
导入一个较旧的源代码树作为参考。REA 会把它与对当前应用的观察分开保存:
rea import-reference-source /absolute/path/to/source
导入会读取传给命令的路径。文件名不会导致自动省略;文件以哈希与元数据表示。要排除选定路径,请把 REA_REFERENCE_SECRET_PATTERNS_JSON 设为一个由忽略模式组成的 JSON 字符串数组。除非显式指定 --overwrite,导出绝不会替换已存在的文件。
使用 snapshot 保存成功的分析结果,并在后续运行中复用它们。只有当目标字节、操作、参数、分析工具与设置都匹配时,REA 才会复用结果。它不会缓存更改或依赖游标的调用。snapshot 文件保留在本地,并使用仅所有者可访问的权限。
rea analyze /absolute/path/to/app --snapshot /absolute/path/to/analysis/app.json
# The same exact query can be answered from that snapshot.
rea analyze /absolute/path/to/app --snapshot /absolute/path/to/analysis/app.json
精确的 CLI 缓存证据读取会在任何 provider 进程启动之前发生。在 MCP 会话中,
向 open_binary 传入 snapshot_path,可在打开匹配目标的同时
原子地导入 snapshot;在返回缓存调用结果之前,MCP provider 可能仍会启动。
向 close_binary 传入 snapshot_path,并在需要时传入 overwrite: true,
以在释放 Hopper 资源前原子地保存。如果保存失败,REA 会刻意保持会话打开。
一个 prompt,一次完整调查
Reverse engineer the Notes app. Find how offline search works, explain it,
and build a version for my project using TypeScript and SQLite.
REA 为 agent 提供了一条从该请求到可用代码的清晰路径:
| 步骤 | agent 做什么 | REA 工具 |
|---|---|---|
| 1 | 打开并识别二进制 | open_binary、binary_overview |
| 2 | 找到可能的离线搜索线索 | search_strings、search_procedures、list_names |
| 3 | 把这些线索连接到可执行代码 | find_xrefs_to_name、xrefs、procedure_callers |
| 4 | 重建相关的控制流 | get_call_graph、procedure_callees、procedure_info |
| 5 | 反编译相关例程 | procedure_pseudo_code、procedure_assembly、batch_decompile |
| 6 | 在你的项目中构建该功能 | 适配你的技术栈、产品与需求的代码 |
REA 处理第 1 到第 5 步中的应用分析。agent 使用它对该应用所学到的内容,借助其常规的文件编辑与测试工具完成第 6 步。
agent 能做什么
- 调查一个你喜欢的功能,并构建一个为你的产品量身定制的版本。
- 在源码不可用时解释某个功能如何工作。
- 重建一个应用的身份认证、存储、更新或网络流程。
- 恢复足够多的结构,以记录一种未文档化的格式或接口。
- 从字符串或符号追踪一个可疑行为,直到实现它的代码。
- 把恢复出的行为转化为产品功能、测试、迁移说明、移植或可互操作的替代实现。
- 分析 Swift 与 Objective-C 元数据,而无需手动理清每个被 mangle 的符号。
- 在 Hopper 中留下名称、注释与书签,使人类和 agent 的分析相互促进。
键控归档、指令/调用/类型原语、带类型的 dispatch 元数据、值追踪与原生桌面观察参见原生调查。
用于调查的工具目录
| 工具系列 | 数量 | 示例 |
|---|---|---|
| 原生检查 | 41 | functions、pseudocode、assembly、strings、symbols、calls、references、annotations、byte reads 与 file offsets |
| 调查工作流 | 14 | app overviews、function dossiers、native APIs and dispatch、batch decompilation、feature traces、call paths、call graphs、Swift 与 Objective-C discovery |
| 原生 macOS 工具 | 7 | Mach-O 元数据、代码签名、plists、架构与 Swift demangling,无需启动 Hopper |
| 制品图 | 5 | 目录与包清单、编译后的 Interface Builder 文件、Apple asset catalogs 与提取 |
| 托管 PE/CLI | 7 | .NET 标识、元数据、CIL 指令、原生依赖、重建导入与构建比较 |
| 固件 | 2 | Linux 固件区域检查与显式提取 |
| Android APK | 5 | 包与清单声明、类搜索、成员清单、方法反编译与传入静态引用 |
| 浏览器观察 | 9 | 页面结构、网络元数据、脚本、source maps、WebMCP 发现、截图与捕获比较 |
| Electron 分析 | 5 | 渲染器观察、静态应用映射与静态/运行时对账 |
| JavaScript 运行时 | 2 | Node/Electron Inspector 目标发现、脚本位置与执行上下文事件 |
| 应用工作流 | 7 | 跨层功能追踪、构建比较、历史源代码映射、静态返回形状比较与重建检查 |
| 工作区与观察 | 21 | 会话、证据包、导航上下文、进程/制品/函数比较与开放问题跟踪 |
公共接口描述的是 agent 试图了解什么。provider 决定如何回答。macOS 工具无需启动 Hopper 即可处理常见的语义检查;Hopper 处理更深层的原生分析;进程测试装置记录直接的行为捕获。
当前状态
REA 在 macOS 和 Linux 上支持原生应用、JavaScript、Electron、.NET 与浏览器调查。各个工具有平台与运行时前提条件。rea capabilities 与 rea providers 描述二进制会话 provider 与辅助操作;它们并不是对每个浏览器、Android 或应用工作流的清单。完整的 MCP 接口请使用已连接的 MCP 工具列表与 binary_session 工具可用性,每个工具的前提条件请参阅相关指南。仓库 main 分支可能领先于 npm 发布版。
静态 Android APK 检查已在 Linux 上通过无头 JADX 验证;其单独的前提条件与覆盖率参见 Android 分析。
- 原生二进制: 通过 Hopper 或 Ghidra 打开 Mach-O、ELF、PE 与 Mac
.app目标。检查函数、字符串、汇编、反编译、调用与引用。Hopper 还接受.hop数据库并支持标注。 - 包与资源: 检查目录、ZIP、APK、IPA、ASAR、plists、编译后的 Interface Builder 文件与 Apple asset catalogs。制品请求直接指定输入及所请求的提取或遍历;macOS DMG 遍历还需要主机的原生挂载支持。
- JavaScript 与 Electron: 在不运行应用的情况下映射模块、导入、source maps、路由、IPC 通道、存储与原生插件。比较构建,并在恢复出的图中追踪某个功能。动态与含糊的关系仍保持未解析。参见 JavaScript 应用工作流。
- 网站: 在已有的 Chrome 系浏览器中检查一个选定的页面。按调用请求捕获页面结构、网络元数据、脚本证据与截图。被动观察不会导航或执行页面 JavaScript。参见浏览器观察。
- Electron 与 Node 运行时观察: 检查选定的 Electron 页面,或附加到一个 Node/Electron V8 Inspector 目标。Inspector 观察会记录脚本位置与执行上下文事件;它不会推断导入、IPC 活动或哪些模块执行了。参见运行时观察。
- .NET 程序集: 在不加载或运行程序集的情况下检查元数据与 CIL 指令、比较构建并检查声明的原生依赖。导入的反编译器输出会被标记为分析者推断。参见托管代码分析。
- 受控行为捕获: 运行进程、浏览器或 Electron 场景,每个请求中声明目标、动作与生命周期,然后比较产生的证据。缺失的观察无法证明两次运行行为相同。
- 证据与比较: 保存结果,附上制品标识、provider、位置、置信度与局限。导出或导入证据包,比较制品与函数,并将静态发现连接到运行时观察,而不声称相关性即因果性。
- 开放问题: 跟踪未解决的发现、矛盾与后续探查。重建检查会报告通过、失败或未知,而不会把缺失的证据当作通过。
- 引导式工作流: 通过六个 MCP 调查工作流开始,并根据你当前会话给出建议。
Windows x64 Ghidra P0 在固定的本地 NTFS 上支持原生、非托管、非 DLL 的 x86-64 PE 应用,包含 25 个只读操作。Linux/macOS Ghidra 还额外支持会话范围内的原子函数名称与入口注释。Ghidra 没有 GUI 控制;Windows P0 没有变更权限。
使用 CDP 进行网站观察
REA 可以通过一个明确的回环 CDP 端点检查已经在运行的 Chrome 系浏览器。每个请求都指定端点与目标;可选的 origin 过滤器可以缩小发现范围:
rea list-browser-targets http://127.0.0.1:9222 --json
rea inspect-web-page http://127.0.0.1:9222 TARGET_ID --json
这八个被动式浏览器工具在 CLI 和 MCP 中都可使用。它们检查选定的页面,不会导航、点击或执行其 JavaScript。凭据、cookies、授权头与原始载荷值不会被保留。请求会选定是否包含脚本源、无障碍文本、截图或控制台与载荷摘要。REA 无法观察到它在附加之前已经发生的活动。浏览器启动、捕获选项与限制参见浏览器观察。
受控浏览器场景
capture_browser_scenario 通过 Playwright 运行由调用方声明的一系列浏览器动作。
与被动观察不同,它可以与页面交互。每一步都会记录证据,例如截图、页面结构、导航与网络活动。缺失或被截断的观察无法证明两次运行行为相同。
rea capture-browser-scenario ./scenario.json --json
启动模式拥有一个临时浏览器配置文件,并在终止所启动的浏览器后将其删除。连接模式接受一个确切的回环 CDP 目标,并在不关闭外部浏览器的情况下断开连接。请求提供所选的 executable 或端点、动作,以及该场景所需的任何 origin 或环境选择。场景 JSON 包含 secret 引用与环境变量名,绝不含 secret 值。参见浏览器场景契约。
Node 与 Electron V8 Inspector 观察
Node 与 Electron 运行时观察会附加到请求中指定的一个已有 Inspector 目标:
rea list-javascript-runtime-targets http://127.0.0.1:9229 --json
rea observe-javascript-runtime http://127.0.0.1:9229 TARGET_ID \
--runtime-kind node --json
REA 会记录脚本位置与执行上下文事件,而不会执行代码或设置断点。这些观察无法确定导入关系、事件活动、IPC、进程身份或 Electron 角色。确切覆盖范围参见 Node 与 Electron 运行时观察。
确切的包、工具系列、provider、setup 客户端、schema 与 CLI 事实由 docs/product-catalog.json 中的源生成。PR CI 会验证该目录、叙述性文档与生成的 schema。
路线图
当前状态一节描述已交付的能力。以下是接下来的工作领域。
现在
- 保持文档准确: 当工具、provider、setup 选项或版本发生变化时,更新生成的目录与文档检查。
- 测试更多原生二进制: 扩展 Hopper 与 Ghidra 的架构与间接调用覆盖。
接下来
- 连接更多应用层: 为功能追踪添加静态提取器与运行时观察。
- 扩展 .NET 分析: 改进混淆程序集的比较,并将托管发现连接到经过验证的原生分析。参见托管代码指南。
- 比较更多运行时行为: 扩展进程、协议、文件系统、重连与版本比较的覆盖范围。
之后
- 扩展浏览器与 Electron 交互: 在当前 click 与 wait 操作之外添加场景动作。
- 在运行时观察原生应用: 探索 LLDB、Frida、系统日志与原生 API 追踪。
- 评估更多工具与目标: 评估 IDA/Hex-Rays、Binary Ninja、Rizin、LIEF、Windows 原生工具、移动应用与固件。
setup 已经允许你选择 agent 集成与 Hopper 安装。安装额外的分析工具是未来工作,在安装路线图中有描述。
覆盖率与剩余需求参见 provider 评估,UI、dispatch 与值流分析参见原生调查指南。
与其他 agent 一起使用 REA
setup 提供受支持的 agent 集成供选择。已有的 REA 注册默认被选中;新检测到的 agent 在被选择前保持未选中。任何支持本地 MCP 服务器的 agent 都可以使用下面的配置。
手动 MCP 配置
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "rea-agents@4.0.1", "mcp"]
}
}
}
持久注册应使用一个确切的包版本。rea setup
会维护该版本锁定,同时更新内置 skill,并为 Codex
在冷启动包运行器时提供 30 秒的启动宽限。rea update
会安装一个确切的发布版并验证新的可执行文件。它会为已有的 REA 集成返回一份
未应用的维护计划,附带一个限定范围的 setup
命令,供查看并批准其改动。之后重启受影响的 agent。
支持 prompts 的 MCP 客户端还可以通过 prompts/list 发现六个有序的调查
工作流。它们的可选标识符参数会使用当前会话,给出有界的 completion/complete 建议;
参见引导式 MCP prompts 与补全。
工作原理
flowchart LR
Agent["Agent"] --> REA["REA<br/>CLI + MCP"]
Terminal --> REA
REA --> Session["Target-bound session router"]
Session --> Registry["Deep-provider registry<br/>deterministic selection"]
Registry --> Hopper["Hopper provider"]
Registry --> Ghidra["Ghidra provider<br/>inventory + function analysis + annotations"]
Hopper --> Runtime["Owned provider runtime<br/>deadline + bounded diagnostics + cleanup"]
Ghidra --> Runtime
Session --> Native["Native macOS provider"]
Session --> Artifact["Artifact graph provider"]
REA --> Browser["Browser CDP provider"]
REA --> Android["Android static provider<br/>headless JADX adapter"]
Android --> Runtime
REA --> Firmware["Firmware providers<br/>Binwalk / Unblob adapters"]
Firmware --> Runtime
REA --> Process["Process capture provider"]
Runtime --> Target["Target software"]
Process --> Target
Native --> Target
Artifact --> Target
CLI 与 MCP 服务器使用相同的应用工作流与证据契约。provider 声明它支持哪些能力,以及这些能力可能带来的副作用。终端命令是短生命周期的;一个 MCP 会话可以在会话期间保留一个活跃目标与证据账本。
CLI
上面的 agent 工作流是使用 REA 的最简单方式。如需从终端获得一次性的概览:
npx -y rea-agents@latest analyze /Applications/Notes.app
npx -y rea-agents@latest inspect /Applications/Notes.app
npx -y rea-agents@latest search /Applications/Notes.app "offline"
npx -y rea-agents@latest function /Applications/Notes.app 0x1000
npx -y rea-agents@latest xrefs /Applications/Notes.app 0x1000
npx -y rea-agents@latest trace /Applications/Notes.app "offline"
npx -y rea-agents@latest compare /absolute/path/to/left-evidence.json /absolute/path/to/right-evidence.json
npx -y rea-agents@latest capabilities
npx -y rea-agents@latest providers
运行 npx -y rea-agents@latest --help 可了解直接反编译、有界搜索
及其他选项。analyze 与 inspect 共享同一个概览工作流;
function、xrefs 与 trace 返回与 MCP 相同的 Evidence 信封。
或者全局安装 rea 命令:
npm install --global rea-agents
rea --help
rea update
rea mcp
REA 可以直接接受 Mac .app 文件夹。如果 agent 无法按名称找到某个应用,告诉它该应用安装在哪里。
选择深度分析 provider
从 CLI 选择使用哪个分析工具:
rea providers --json
rea analyze /absolute/path/to/pro