ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

REA 逆向工程工具完整导览:rea-agents 如何把 Hopper、Ghidra 接进你的 AI Agent

REA 逆向工程工具完整导览:rea-agents 如何把 Hopper、Ghidra 接进你的 AI Agent

REA 逆向工程工具完整导览:rea-agents 如何把 Hopper、Ghidra 接进你的 AI Agent

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

REA(npm 包名rea-agents)是一个开源逆向工程工具,它给你的 AI 编码 Agent 装上驱动 Hopper、Ghidra、IDA 的手,从网页、Electron 应用到原生二进制、安卓 APK 和固件,本地完成分析并交付带证据的结论。这篇文章不逐目录罗列,而是跟着一条analyze-javascript-application调用从入口分发器走到引擎桥接和证据契约,把这条主线上涉及的模块分工、驻留插件机制和 3 条最快上手命令一次讲清。

一个开关台:277 行代码分流出两条分析通道

整个入口就是一个只做"路由"的开关台,它自己一行分析逻辑都没有。scripts/rea.mjs 总共 277 行左右,看第一个参数就把流量劈成两半:rea mcp进长会话通道,加载编译后的 MCP 服务器(源码在 src/main.ts),走 stdio 或--http流式传输,负责工具目录注册、环境配置解析和幂等关闭钩子;其余analyze、doctor、setup全进一次性 CLI 通道,即 src/cli.ts 加 src/cli/ 下 49 个左右命令模块。值得记的一点:两条通道底层跑的是同一套工作流,所以rea doctor报的结论和 Agent 通过 MCP 看到的是一致的,不会出现"终端里好的、Agent 里坏的"这种分裂状态。另外它在加载任何东西之前先检查编译产物在不在,缺失就直接提示先跑构建,而不是加载一半才崩。

模块分工表:七大目录各管一段流水线

仓库的骨架按"谁在哪个进程里干活"来切,而不是按功能堆包。读代码前先对号入座,比看目录树快得多:

目录管什么关键词
src/核心 TypeScript:入口、Provider、MCP 服务器、契约与领域层分层装配、Zod 契约
bridge/住进 Hopper / Ghidra / JADX 进程的驻留插件HMAC 认证、HeadlessScript
scripts/构建、发布、验证脚本与文档生成npm 发布、verify-*
tests/Vitest 测试套件,1600 多个测试文件边界测试、变异测试
docs/官方文档与工具契约mcp-contracts、cli
website/官网页面源码指南、showcase
native/Windows 原生 Node-API 模块进程隔离、平台差异

驻留插件:把一段认证过的代码送进引擎进程

Node.js 指挥不了 Hopper 和 Ghidra,REA 的解法是把自己的代码送进对方进程里住下来。这段代码就是 bridge/hopper_bridge.py(1300 来行):Hopper 进程启动前,REA 注入REA_SOCKET地址和随机REA_TOKEN,桥接端用 HMAC 签名与本地私有套接字对话——双向认证,不是谁都能连的裸 socket。请求 payload 还有硬上限,默认 16 MiB,卡着 Node 字符串上限往下留了余量。Ghidra 那边是 bridge/ghidra/ReaGhidraBridge.java(5000 来行),打包成 HeadlessScript 负责清单、反编译、交叉引用和控制流图;安卓的 headless JADX 则是 bridge/android/ReaJadxBridge.java 的同款安排。

双向收益很实在:一是外部工具完全不被改造,Hopper 或 Ghidra 升级之后桥接照常跑;二是引擎永远以子进程身份存在,src/process/ 这一层统一接管进程组、私有目录、超时和清理,分析工具不会失控占资源。所以想换引擎(比如从 Hopper 切到 IDA)只动 Provider 一层,上层工作流碰都不用碰。

证据纪律:每个结论都能按 ID 回查

给 Agent 用的工具和给人的 GUI 有本质差异:结果必须可复现、可审计,这靠"契约 + 纯函数"两层锁死。所有对外工具的输入输出 Schema 集中在 src/contracts/ 用 Zod 校验;src/domain/(380 来个文件)是无副作用的纯函数层,负责证据比较、摘要计算和应用图。落到会话里,每个 MCP 工具结果都带一个evidence_id:后续比较、分页、导出全按 ID 引用,不用把几百 MB 的完整 Evidence 在消息里倒来倒去。CLI 侧同样支持把 Evidence 落盘后再投喂视图——docs/cli.md 里有个例子:334 MB 的 Obsidian 应用 Evidence 能投出约 10 KB 的摘要视图。教 Agent"何时连 REA、连接断了怎么恢复"的指令包在 .agents/skills/reverse-engineer-anything/SKILL.md,构建时随包一起发布。质量这边也没省:tests/ 里 1600 多个测试文件,光边界测试就有 1200 来个,专测超时、清理和进程失控这类最疼的边角。

快速上手:3 条命令拿到第一条逆向分析结果

从接入到出结果最短只要 3 条命令,其中一条连分析引擎都不需要。

1️⃣npx rea-agents setup——接入 Agent。选你的编码 Agent(Claude Code、Codex、Cursor 等),审查拟议变更并审批,重启后 MCP 注册和技能自动配好,原有配置有备份。 2️⃣npx -y rea-agents@latest analyze-javascript-application /绝对路径/应用 --json——纯静态分析 Electron/JS 应用,不装任何引擎就能出模块图、导入关系、Electron 边界和完整证据,是验证安装是否可用的最短路径。 3️⃣npx -y rea-agents@latest doctor --json——健康自检,按任务范围检查引擎与注册状态,出问题先跑它再排查。

引擎安装细节见 docs/installation.md,工具契约细节见 docs/mcp-contracts.md。

收束:三个值得抄进笔记本的设计点

  • 入口只路由,能力分层装:一个 mjs 开关台把 CLI 和 MCP 劈成两条通道,底下装配线(src/composition/)→ Provider → 契约逐层收窄,加新目标类型只需新增一个 Provider
  • 把代码送进对方进程里住:认证过的桥接插件 + 私有套接字,不改造外部工具,换引擎不碰上层,进程生命周期统一托管
  • 证据纪律是 Agent 工具的底层规矩:契约层定边界,领域层保确定性,证据带 ID 可回查——这是"结果可复现"四个字在工程上落地的样子 🧭

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进