ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

一条命令让 AI Agent 学会逆向:REA 上手与桥接机制拆解

一条命令让 AI Agent 学会逆向:REA 上手与桥接机制拆解

一条命令让 AI Agent 学会逆向:REA 上手与桥接机制拆解

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

AI Agent 逆向难在哪?Agent 本身驱动不了 Hopper、Ghidra 这类重型引擎,GUI 里点出来的结果又没法稳定地喂进上下文,更谈不上复现。REA(npm 包名rea-agents)就是为这个空白做的本地分析工具:让 AI Agent 直接对原生二进制、JavaScript/Electron 应用、.NET 程序集、安卓 APK、固件和网页做逆向,装一次就同时拥有 CLI 与 MCP 服务器两条通道。你可以把它理解成一个"安检站":目标放上传送带,出来的不只是结论,还有一份带证据、带局限说明的报告。

前五分钟:接好线、做自检、跑通一次静态分析

前提只有 Node.js(22.19+、24.11+ 或 26+)和 npm。三条命令可以验证环境是否真的可用:

npx rea-agents setup

把 REA 的 MCP 服务器注册进你的编码 Agent,并装上配套的工作流指令,支持 Claude Code、Codex、Cursor、Gemini CLI 等客户端,已有配置会先备份。

npx -y rea-agents@latest analyze-javascript-application /绝对路径/应用 --json

对一个提取好的 JavaScript/Electron 应用目录做纯静态分析,返回模块、导入关系、Electron 边界及其证据。这一步不需要任何逆向引擎。

npx -y rea-agents@latest doctor --json

按任务范围做健康自检:分析引擎是否就绪、Agent 注册是否到位,哪里断了就报哪里。

npm 包实际注册了rea和rea-agents两个命令,指向同一个入口 scripts/rea.mjs。这个文件只做一件事:第一个参数是mcp就加载长驻 stdio 服务器dist/mcp/main.js,否则加载一次性 CLI 适配层dist/cli-runtime/cli.js。两条通道走同一套底层工作流,行为一致。npm 发布时也只打包 package.jsonfiles清单里的编译产物、桥接脚本和技能包,测试与文档不会进用户机器。

不装任何引擎也能分析什么

  • 🔍 原生二进制(Mach-O/ELF/PE):伪代码、汇编、字符串与交叉引用。这一档需要 Hopper、Ghidra 12.1(含 JDK)或 IDA 三选一,IDA 通道走上游 ida-pro-mcp
  • 🌐 JavaScript/Electron 应用与网页:模块结构、source map、运行时捕获。静态分析零外部引擎;网页侧需要 Chrome 系浏览器 / Playwright
  • ⚙️ .NET 程序集:静态解析 PE/CLI 元数据,零外部依赖
  • 📱 安卓 APK:自带的 headless JADX 做反编译,Linux/macOS/Windows x64 需要完整 JDK
  • 🧩 Linux 固件分区:自带 Binwalk/Unblob 做区域划分与提取
  • 🖥️ 受控进程行为:本地 PTY 后端捕获终端输出与退出状态

规律很简单:凡是"读文件就能看"的目标(JS、.NET、APK、固件)都不需要装引擎;凡是需要深度反编译的(原生二进制)才要求一台"专科设备",也就是下面要讲的桥接对象。

外部逆向工具是怎么被接管的

Hopper 和 Ghidra 是安检站的"专科设备",但 Node 没法直接调用它们的 API。REA 的做法不是改造这些工具,而是在每个外部工具进程内部放一个"代操作台"——一段常驻的小脚本,由 REA 通过内线指挥它干活:

  • bridge/hopper_bridge.py 在 Hopper 进程内运行,把 REA 的操作翻译成 Hopper 的 Python API 调用,通信走 Unix 套接字
  • bridge/ghidra/ReaGhidraBridge.java 打包为 Ghidra HeadlessScript,负责清单、反编译、交叉引用与控制流图
  • bridge/android/ReaJadxBridge.java 是 headless JADX 的桥接脚本
  • bridge/native/ReaNativeUI.swift 负责 macOS 原生 UI 捕获辅助

这些脚本之间走的是认证过的本地私有套接字,配合 src/process/ 的进程组管理、超时控制与清理机制,外部工具不会"跑野"。好处是解耦:外部工具升级时只换对应的桥接脚本,REA 主程序一行不动。

为什么每个结论都自带证据

两条通道虽然入口不同,但产出的结论格式一致:每个发现都附带证据、局限性与未知项。这背后是两层代码的分工。

src/contracts/ 用 Zod 定义所有工具对外可见的输入输出 Schema,Agent 拿到的字段是可校验的,不是自由文本。src/domain/ 则是清一色的纯函数——证据比较、摘要计算、应用图模块,没有副作用。纯函数意味着同样的输入永远得到同样的输出,结果天然可复现、可对比。这也是"给 Agent 用的工具"和"给人点的 GUI"最本质的差别:GUI 靠人眼判断可信度,Agent 只能靠结构化证据。

想逐工具核对输入输出,MCP 契约 有完整定义。工具目录本身由源码自动生成,CI 会校验它与文档的一致性,文档不会悄悄落后于实现。

文档和 Agent 工作流包去哪找

npm 包里内置 skills 技能包(SKILL.md),内容面向 Agent:何时连接 REA、何时先跑诊断、如何按"反编译 → 理解 → 复刻"的节奏分步推进一个逆向任务,以及连接失败时该修哪一环。

面向人的材料在 docs/ 这套 VitePress 官方文档里:引擎安装与配置看 docs/installation.md,CLI 命令与证据体系看 docs/cli.md,想理解整体分层可以打开 docs/architecture.mermaid 的图源文件。

下次再遇到一个没有源码的应用,不必先打开任何 GUI。让 Agent 先跑一遍自检,把目标放上 REA 的传送带,然后等一份带证据、带局限、带未知项的报告回来——这就是 AI Agent 逆向的完整闭环。

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

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

RELATED READING

延伸阅读

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