开源项目

rea

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,覆盖二进制、应用与运行时行为的逆向工程。

看到一个你喜欢的功能。理解它的工作原理,直到二进制层面。

npm version CI MCP tool catalog Node.js 22+ MIT license Discord

morluto%2Frea | Trendshift

快速开始 · 当前状态 · 调查模型 · 工具目录 · 路线图 · 工作原理

npx rea-agents setup


REA launching its analysis bridge inside Hopper while inspecting a native binary
Discord
加入逆向工程社区

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。

路线图

当前状态一节描述已交付的能力。以下是接下来的工作领域。

现在

  1. 保持文档准确: 当工具、provider、setup 选项或版本发生变化时,更新生成的目录与文档检查。
  2. 测试更多原生二进制: 扩展 Hopper 与 Ghidra 的架构与间接调用覆盖。

接下来

  1. 连接更多应用层: 为功能追踪添加静态提取器与运行时观察。
  2. 扩展 .NET 分析: 改进混淆程序集的比较,并将托管发现连接到经过验证的原生分析。参见托管代码指南。
  3. 比较更多运行时行为: 扩展进程、协议、文件系统、重连与版本比较的覆盖范围。

之后

  1. 扩展浏览器与 Electron 交互: 在当前 click 与 wait 操作之外添加场景动作。
  2. 在运行时观察原生应用: 探索 LLDB、Frida、系统日志与原生 API 追踪。
  3. 评估更多工具与目标: 评估 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
开源项目morluto2026-10-06原文

相关内容