GitHub 热门项目推荐:rea(TypeScript|307880 Star)

这个项目有什么用

rea 是一个面向逆向工程场景的 MCP(Model Context Protocol)工具集,把 agent 连接到原生二进制、JavaScript 与 Electron 应用、.NET 程序集以及网站的检查工具上。它要解决的问题很具体:看到一个功能想弄懂它怎么实现,却拿不到源码。过去这类工作需要人工在反汇编器里逐层追代码,现在可以让 agent 通过 REA 调用同一套分析能力,输出结论时附带证据与局限说明。

从 README 的描述看,它主要替代或减少以下手工操作:

  • 在 Hopper、Ghidra、IDA 等反汇编工具之间来回切换、手动定位调用链;
  • 对 JavaScript/Electron 应用目录或 ASAR 包做静态结构梳理;
  • 对 .NET 程序集做静态检查;
  • 在终端里重复执行同类分析命令并整理结果。

典型场景是:在某个 app 里看到一个想要的功能,让 agent 用 REA 去调查它的实现方式,解释行为、给出证据,再为自己的项目写一个类似版本。README 明确说明分析在本地运行,静态 JavaScript 分析不需要原生分析引擎。适合需要理解第三方软件行为、但无法获得源码的开发者与安全研究人员使用。

核心特性

  • 一个 MCP 覆盖多类目标:原生二进制、JavaScript 与 Electron 应用、.NET 程序集、网站都可以用同一套工具检查,agent 与终端共用相同工作流。
  • 结论带证据:README 强调结果包含每个结论背后的证据与局限,agent 可以据此追问、解释行为,或编写并测试实现。
  • 本地执行:分析在本地运行,静态 JavaScript 与 .NET 检查只读取提供的文件,不运行目标程序。
  • 可复用现有原生分析工具:原生分析可以使用已安装的 Hopper、Ghidra 或 IDA;设置流程在获得批准后可选择安装 Hopper。
  • 离线原生检查的额外后端:还支持调用方自行提供的 GNU objdump 与 Rizin,但 REA 不负责安装或更新这两个 provider。
  • setup 自动接入 agent:设置命令会注册 MCP server 与配套的工作流指令,并备份已有配置,支持 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 等 agent。

怎么安装

前提条件:需要 Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+,以及 npm。在 Linux 上,Ghidra、JADX、firmware 工具启动和静态 JavaScript/Electron 分析需要 REA 的 PATH 中存在兼容 procps 的 ps,用于进程归属检查,恢复步骤见 docs/installation.md 的 “Linux owned-process prerequisite” 一节。

  1. 确认已安装 Node.js 与 npm。
  2. 运行设置命令,把 REA 接入你的 agent:
    npx rea-agents setup
  3. 在交互中选择要接入的 agent,审阅它提出的配置变更并批准。设置会添加 REA 的 MCP server 与匹配的工作流指令,并备份现有配置。
  4. 设置完成后重启 agent。
  5. 如需在终端长期使用 rea 命令,可全局安装:
    npm install --global rea-agents
    rea --help

provider 配置与手动 MCP 注册的细节,README 指向 docs/installation.md。官方文档未在摘录中给出各 provider 的完整安装步骤。

怎么使用

最基础的用法是让 agent 去调查某个功能。README 给出的示例提示词如下:

Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.

把 Notes 换成你的目标应用和想理解的功能即可。agent 会通过 MCP 调用 REA 检查目标、追踪相关代码,并基于返回的证据继续追问或编写实现。

也可以直接在终端使用。检查一个已提取的 JavaScript/Electron 应用目录或 ASAR:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

结果包含模块、导入、Electron 边界及其证据;路径换成你的目标即可,Windows 上例如 "D:/apps/example"。原生分析需要先配置 provider,具体命令见 docs/cli.md 的 CLI and Evidence 指南。

几个常见配置与操作要点:

  • 更新 CLI 安装:
    rea update

    使用 npx 时则更新 agent 设置:

    npx rea-agents@latest setup
  • 大二进制启动超时可通过 REA_GHIDRA_STARTUP_TIMEOUT_MS 或 REA_HOPPER_STARTUP_TIMEOUT_MS 调大 provider 的启动期限。
  • 使用 Bun 时,用 bunx rea-agents@latest 替代 npx rea-agents@latest;Bun 全局更新要求 Bun 1.2.17 或更高版本。

适用场景与注意事项

适合的场景:需要在没有源码的情况下理解某个应用功能、追踪原生二进制中的调用逻辑、梳理 JavaScript/Electron 应用结构,或对 .NET 程序集做静态检查。对希望把逆向分析流程交给 agent 编排、同时保留证据链的开发者比较合适。

需要注意的点:

  • 运行时捕获会以你的用户权限运行或交互目标程序,每份运行时指南都会描述其影响;静态 JavaScript 与 .NET 检查则不运行应用。
  • 原生格式与宿主支持因 provider 而异,Hopper、Ghidra、IDA、Kuna 等各有独立指南,Windows 上的 Ghidra 支持被标注为实验性。
  • REA 不安装或更新 GNU objdump 与 Rizin,需要调用方自行提供。
  • 更新器命令最多保留 4 MiB 的 stdout 与 stderr 合计输出,超限的元数据回复会在命令退出后被拒绝。
  • 项目采用 MIT 协议,使用与分发时按协议条款处理即可。

项目地址

rea 把多种逆向分析能力收敛到一个 MCP 接口下,并通过 agent 编排分析流程,适合需要可追溯证据的二进制与应用行为调查工作。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享