REA:让 Agent 逆向一切

把软件逆向交给 Agent:从应用行为一路追到原生二进制,并让结论进入你自己的代码。

源仓库
morluto/rea
Star 数
★ 718
最近更新
今天
License
MIT
主语言
TypeScript

30 秒速览

运行形态
命令行工具MCP 服务器Agent 插件 / 技能
可在哪里用
通用 · 跨平台Codex · Claude Code · Claude.ai
费用
免费,无需付费服务
上手难度
中 · 需要几步配置
开始前需要
Node.js 22.19+ 或 24.11+npmHopper Disassembler(独立授权,支持演示模式)Ghidra 12.1.4 + 64 位 JDK 21(可选,需自备)macOS 12+ / Ubuntu 24.04+ / Fedora 41+ / 64 位 Arch Linux;Windows x64 仅限实验性 Ghidra P0Shell / 命令行网络访问本地文件系统MCP Server
典型场景
产品团队在某个 App 里看到想复刻的搜索或离线缓存功能,手上没有源码,希望 Agent 先解释实现再给出适配自家技术栈的版本。
不适合
  • 只想读源码、不需要接触二进制或运行时行为的开发者
  • 要求在 Windows 上完成深度原生二进制分析的团队(仅有限 P0)
  • 不愿在本地安装 Hopper 或自备 Ghidra/JDK 的用户

这个 Agent 能做什么,适合哪些场景?

REA 是一个面向编码 Agent 的逆向工程工具包,以 npm 包 rea-agents 发布,同时提供 rea 命令行和 MCP 服务器,两条路径共用同一套证据契约与调查流程。它把 Hopper(macOS/Linux,支持演示模式)或自备 Ghidra 12.1.4(Linux、macOS,以及实验性 Windows x64 P0)封装为受管的深度分析提供方,Agent 通过 open_binary、binary_overview、search_strings、find_xrefs_to_name、get_call_graph、procedure_pseudo_code、batch_decompile 等工具完成从识别二进制到反编译目标函数的完整链路。除原生分析外,它还覆盖 CDP 被动网页观察、Electron/Node V8 Inspector 附加观察、JavaScript 与 source-map 重建、ASAR/包结构静态映射、托管 PE/CLI 分诊、受控进程捕获与对比,并把每次成功调用记录为可导入导出的 Evidence 记录。分析全部在本地完成,REA 不提供托管分析服务,也不会上传目标应用。它明确不承诺还原原始源码,只给出伪代码、汇编、符号、字符串和关系,供 Agent 解释或兼容重建行为。

安装后 REA 探测本机 Agent(Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、Windsurf、Devin),以追加且先备份的方式写入 MCP 注册并安装配套路由技能。分析时,rea analyze / rea decompile / rea function / rea xrefs / rea trace 等命令会先解析深度分析提供方(请求级 --provider 优先于 REA_ANALYSIS_PROVIDER,auto 只在唯一可用候选时绑定,多候选报 ambiguous,绝不静默回退),再启动提供方运行时,完成后把结果写成带 artifact 与 provider 身份、置信度、局限和位置的 Evidence。MCP 会话可长期保留目标与证据账本,并通过 snapshot_path 在 open_binary/close_binary 时原子导入导出分析快照。额外的只读能力包括 inspect-managed-artifact 系列的 PE/CLI 元数据与 CIL 指纹检查、list-browser-targets / inspect-web-page 的被动 CDP 抓取、list-javascript-runtime-targets / observe-javascript-runtime 的 V8 Inspector 生命周期观察,以及 capture-process / capture-browser-scenario 这类默认关闭、需按调用单独授权的受控行为捕获。

  1. 产品团队在某个 App 里看到想复刻的搜索或离线缓存功能,手上没有源码,希望 Agent 先解释实现再给出适配自家技术栈的版本。
  2. 安全或逆向工程师需要把一个可疑字符串、符号或 IPC 通道一路追到实现它的函数,并保留可复核的证据链。
  3. 开发者拿到一个 Electron 应用,想在不运行引导代码的前提下用 rea analyze 直接还原 ASAR 内的模块、入口、preload 与 IPC 结构。
  4. 需要跨版本对比同一应用的行为差异,用 rea compare 或 compare-process-captures 找出第一处终端、文件系统或协议分歧。
  5. 维护遗留 .NET/CLI 程序集,希望在不加载程序集、不解析 CLR 依赖的情况下先做只读的元数据与 P/Invoke 边界分诊。
  6. 分析流程要求可复现:把成功调用固化为快照或 Evidence 包,在之后不重启分析引擎的情况下重放同一查询。

如何安装或部署这个 Agent?

推荐先跑一次 setup 向导,它会先打印完整计划、路径与外部影响,最终确认默认是 No:

npx --yes rea-agents@latest setup

如果希望把 rea 命令装进 shell PATH:

npm install --global rea-agents
rea setup
rea doctor

设置向导检测到 Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、Windsurf 时会配置前六个;Devon 只报告不修改。深度原生分析还需要一个提供方,Hopper 由 setup 负责安装(macOS 从官方 DMG 装到 ~/Applications,Linux 下载固定的 6.4.2 包并校验),Ghidra 必须自备:

export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC
export JAVA_HOME=/absolute/path/to/jdk-21 # 可选,java 与 javac 已在 PATH 时可省略
rea doctor --json
rea providers --json

环境要求:macOS 12+、Ubuntu 24.04+/Fedora 41+/64 位 Arch Linux,Windows x64 仅用于实验性 Ghidra P0;Node.js 22.19+ 或 24.11+。

如何使用这个 Agent?

配置好 Agent 集成后,重启被改动的客户端,再用自然语言下单:

Reverse engineer the Notes app. Find how offline search works, explain it,
and build a version for my project using TypeScript and SQLite.

只想在终端里做一次快速概览时:

npx -y rea-agents@latest analyze /Applications/Notes.app
npx -y rea-agents@latest search /Applications/Notes.app "offline"
npx -y rea-agents@latest trace /Applications/Notes.app "offline"

手动接入任意支持本地 MCP 的客户端:

{
  "mcpServers": {
    "rea": {
      "command": "npx",
      "args": ["-y", "[email protected]", "mcp"]
    }
  }
}

需要复用已批准的分析结果时,把同一份快照交给后续调用:

rea analyze /absolute/path/to/app --snapshot /absolute/path/to/analysis/app.json

浏览器与运行时观察默认关闭,必须显式开权限并指定 loopback 端点与原点:

export REA_BROWSER_OBSERVE_ENABLED=true
export REA_BROWSER_CDP_ENDPOINTS_JSON='["http://127.0.0.1:9222"]'
export REA_BROWSER_ALLOWED_ORIGINS_JSON='["http://127.0.0.1:3000"]'
rea list-browser-targets http://127.0.0.1:9222 --approved --json

这个 Agent 有哪些优点和局限?

优点
  • CLI 与 MCP 共用同一套工作流和 Evidence 契约,同一个能力既能在终端一次调用,也能让 Agent 在会话里长期持有目标与证据账本。
  • 提供方是可选且显式绑定的:可自己带 Ghidra 12.1.4 走只读路径,也可让 setup 装 Hopper,切换提供方需显式选择,运行失败不会静默回退。
  • 分析默认全部在本地完成,没有托管分析服务,动态能力(进程捕获、浏览器场景、JS 运行时观察)默认关闭且需要按调用单独授权。
  • 除原生反编译外还覆盖 CDP 被动网页观察、Electron/Node V8 Inspector 附加观察、JavaScript 与 source-map 重建、托管 PE/CLI 只读分诊,覆盖面超出单一反汇编器。
  • 每次成功调用都会固化为带 artifact/provider 身份、置信度与局限的 Evidence,可导出导入、可比较、可快照重放,适合需要留痕的工程流程。
局限
  • 深度原生分析依赖外部提供方:Hopper 是独立付费软件(可用演示模式,但受厂商限制),Ghidra 需自备并锁定在 12.1.4 + 64 位 JDK 21,版本不符会被 doctor 拒绝。
  • 平台边界明显:完整能力集中在 macOS 与 Linux,Windows 只在 x64 上提供实验性 Ghidra P0,且明确不保证命名管道 DACL 或恶意本地用户隔离。
  • 运行环境偏重:要求 Node.js 22.19+ 或 24.11+,Linux 上 Hopper 演示自动化还要 Xvfb、Python 3、libX11.so.6、libXtst.so.6,新机器准备时间不短。
  • REA 不承诺还原原始源码,反编译文本只是提供方特定观察;把结果直接当作源码使用会误判。
  • 不少高级能力(浏览器场景、进程捕获、JS 运行时观察、快照缓存)需要额外环境变量与逐次批准,默认关闭,首次上手要在权限模型上花时间。

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
REA:让 Agent 逆向一切 当前 72 · 存在缺口 命令行工具免费 ★ 718 今天 TypeScript Codex · Claude Code · Claude.ai
Auto RE Agent 61 · 存在缺口 命令行工具免费 + 模型费 ★ 2k 24 天前 Python Codex · Claude Code · OpenAI API · Claude API
Stock SDK 71 · 存在缺口 代码库 / SDK免费 ★ 2k 1 天前 TypeScript ChatGPT · Codex · Claude Code
Graphify – 将任何代码库转换为可查询的知识图谱 64 · 存在缺口 命令行工具免费 ★ 124k 1 天前 Python Codex · Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
72/ 100 五分制 3.6 / 5
信任安全 19/29
可靠稳定 9/14
适用触发 16/18
规范维护 14/18
有效结果 9/13
证据核验 5/8
查看各维度的扣分理由
信任安全19 / 29 · 3.3/5

加分:README/SECURITY.md 详细描述最小权限设计(只读 Ghidra 适配、模式 0600 Unix 套接字、能力令牌、拒绝 sudo、未经批准不安装 Ghidra/Java),setup 流程以 No 为默认、backup-first、可 dry-run,Devin 被检测但明确不改。扣分:这些多为文档断言,本次仅见测试文件而无核心实现源码;开放一个不可信二进制即以当前用户权限交给本地 provider(SECURITY.md 自认非沙箱),逆向场景固有的恶意输入风险只能靠文档声明的控制缓解。发布者未经验证,attribution 仅有 LICENSE 中的 morluto 版权行。

可靠稳定9 / 14 · 3.2/5

加分:doctor 命令区分不支持主机/缺依赖/配置漂移等状态,deps:check 前置检查,依赖版本全部锁定,CI 分片测试与失败即停的 gate。扣分:所有运行时可靠性声明均来自文档与测试代码,未能由本次材料独立核实;依赖项无漏洞扫描或审计证据。

适用触发16 / 18 · 4.4/5

加分:受众(想理解应用功能的开发者)、终端/agent 双路径、明确的能力边界(Windows P0 拒绝 DLL/托管 PE、不恢复原始源码、demo 模式限制)、OS 与 Node 版本矩阵、Linux 发行版差异均有具体说明。扣分:触发精度主要依赖 agent 对 skill 的路由,材料中未见 skill 内容本身。

规范维护14 / 18 · 3.9/5

加分:安装说明极其详尽(npx/global/curl 差异、uninstall 边界、PATH 提示),已知限制反复且明确声明,MIT LICENSE 全文在场,多语言 README。扣分:本材料中无 CHANGELOG 文件,仅有 Release Please 间接迹象;维护者为单人未验证身份;FAQ 缺失,示例集中在 README。

有效结果9 / 13 · 3.5/5

加分:结构化 JSON 输出、Evidence 捆绑、快照缓存避免重复分析、免费 Hopper demo 路径降低成本。扣分:产出质量与边际价值均来自文档声明;无 CHANGELOG 与发布记录佐证其成熟度;相比直接用 Hopper/Ghidra 的额外收益需实际运行验证。

证据核验5 / 8 · 3.1/5

加分:npm run verify:* 脚本族、CI 各 lane、测试代码(拒绝伪造 provider、错误 Evidence 的用例)与 README 声明相互印证;文档多处明确区分事实与推断('not original source'、'not a sandbox')。扣分:核心 src/ 实现未在本次材料中提供,关键声明无法逐条溯源到代码。

风险与缓解建议
  • 发布者未经企业注册表验证,身份未知;使用前请自行核实仓库与 npm 包 rea-agents 的对应关系。
  • 逆向不可信二进制时,解析交给以当前用户权限运行的本地 provider,并非沙箱——请在隔离环境或专用账户中处理恶意样本。
  • setup 会修改多个 agent 客户端的 MCP 配置;虽为增量且先备份,仍建议先运行 rea setup --dry-run 审查计划。
  • Hopper 安装校验使用官方发布的 SHA-1 校验和,仅为完整性检查而非签名校验;供应链风险由 HTTPS 来源限制部分缓解。
  • 本评审为静态评审(置信度低),未执行任何命令;所有行为声明均来自文档与测试代码,未经运行验证。
  • Windows x64 原生分析为实验性 P0,明确排除 DLL、托管 PE 及非 x86-64 镜像,请勿超出该边界使用。
  • 本次材料缺少核心 src/ 实现与 CHANGELOG,关键安全声明无法逐行溯源。
证据充分度:低 评估于 2026年10月4日 审查版本 405732a7f55e
查看完整评分方法 →

常见问题

REA 是收费的吗?Hopper 呢?
rea-agents 本身是 MIT 许可的开源包。Hopper 是独立软件,有自己的授权;REA 可以使用 Hopper 的免费演示模式(Linux 上会在私有 Xvfb 显示里自动选择演示模式),付费授权是可选的。Ghidra 路线则完全自备,REA 不下载也不安装 Ghidra 或 Java。
它会把我的应用上传到云端分析吗?
不会。REA 没有托管分析服务,提供方、被动观察器和进程捕获都在本机运行。但要留意:你接入的模型提供方或 Agent 本身有自己的数据策略,这部分需要单独确认。
REA 能还原出原始源码吗?
不能,README 也明确说明任何反编译器都无法保证还原原始源码。REA 给 Agent 的是伪代码、汇编、符号、字符串、元数据和调用关系,用来解释行为或做兼容重建,而不是直接产出原工程。
Windows 上能用吗?
只有受限路径。Windows x64 提供一个实验性的 Ghidra-only P0 边界,仅接受已批准的 x86-64 原生 PE 应用,会拒绝 DLL、托管 PE、非 x86-64 映像与非 PE 格式,并且自动化 rea setup 与 Hopper 安装在 Windows 上不可用。
分析结果可以复现和对比吗?
可以。每次成功调用都会记录为确定性 Evidence,可导出为 bundle 并用 rea evidence-import/evidence-export 规范化,或用 rea compare 做成员级比对。你还能把调用固化成语义化快照(--snapshot / MCP 的 snapshot_path),在二进制摘要、格式、架构、操作参数与提供方构建都匹配时直接重放。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents