REA 完整上手指南:让 AI Agent 逆向二进制、APK 与网页
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
REA(npm 包名rea-agents)是一个本地运行的逆向工程工具:装好之后,你或你手头的编码 Agent 都可以对原生二进制、Electron/JavaScript 应用、.NET 程序集、安卓 APK、Linux 固件和网页发起分析,每条结论都附带证据。本文面向刚接触它的开发者,讲清它能做什么、怎么三步验证环境,以及一条分析请求在代码里走完的路径。
能力边界:REA 覆盖哪些分析对象
先说结论:原生二进制、JS/Electron、.NET 这三类是它的核心能力,安卓 APK、固件和受控进程也开箱即用,其中只有原生二进制需要外挂分析引擎。
| 分析对象 | REA 返回什么 | 外部依赖 |
|---|---|---|
| 原生二进制(Mach-O/ELF/PE) | 伪代码、汇编、字符串、交叉引用 | Hopper、Ghidra 12.1 或 IDA 三选一 |
| JavaScript/Electron 应用 | 模块结构、导入关系、Electron 边界、source map | 无,纯静态 |
| .NET 程序集 | 元数据、CIL 指令、声明的原生依赖 | 无,纯静态元数据解析 |
| 安卓 APK | 清单声明、反编译后的方法与引用 | 自带 headless JADX |
| Linux 固件分区 | 分区区域、提取结果、后续原生分析入口 | 自带 Binwalk/Unblob |
| 受控进程 | 终端输出、交互记录、退出状态、文件系统观察 | 本地 PTY 后端 |
除上表外,README.md 的能力清单还包括 Go/Rust 二进制的内嵌构建信息、WASM 工件校验与 WAT 解码、SQLite 数据库快照、抓包文件(HAR/SAZ/pcap)解读、网页与网络捕获等。运行基线是 Node.js 22.19+/24.11+/26+ 和 npm;Linux 上部分能力还要求PATH里有 procps 系的ps命令,用于进程归属检查。
快速验证:三条命令检查环境
不需要先装任何逆向引擎,三条短命令就能确认 REA 在你机器上跑得通。
# 1. 把 REA 的 MCP 服务器注册进你的编码 Agent,并安装配套工作流指令 npx rea-agents setup # 2. 对一个已提取的 JavaScript/Electron 应用目录做纯静态分析 npx -y rea-agents@latest analyze-javascript-application /绝对路径/应用 --json # 3. 按任务范围做健康自检,检查引擎与 Agent 注册状态 npx -y rea-agents@latest doctor --jsonsetup支持 Claude Code、Codex、Cursor、Gemini CLI 等客户端,会先展示拟改动并备份现有配置,执行后需重启 Agent。analyze-javascript-application输出模块、导入、Electron 边界及各自证据,是验证整条静态分析链路的最短路径。日常使用也可以npm install --global rea-agents后直接用rea命令,后续用rea update升级。
请求旅程:从入口路由到证据报告
把一次分析请求类比成一次医院就诊:挂号分诊、进专科检查、出化验报告。对应到代码里是四站。
第一站,入口分发(挂号)。所有命令先落到 scripts/rea.mjs。它只做一件事:第一个参数是mcp就加载长驻服务器运行时dist/mcp/main.js,否则加载一次性 CLI 适配层dist/cli-runtime/cli.js等文件,并先校验编译产物存在。npm 包的files清单(见 package.json)只打包dist、bridge/、skills/等运行必需物,测试和文档不会进用户机器。
第二站,会话路由(分诊)。应用层 src/application/ 共 406 个 TypeScript 文件,负责给每个分析目标开一张"就诊单":同一目标的所有后续调用挂在同一张会话上;浏览器、固件、安卓等辅助能力走各自独立路由。这一层同时管着证据账本、未知项追踪,以及doctor健康检查和setup引导安装。
第三站,专科检查(目标适配)。每种分析对象一个模块,源码量级差异很大:
| 模块 | 分析对象 | 依赖引擎 |
|---|---|---|
| src/hopper/ | 原生二进制 | Hopper(Unix 套接字协议) |
| src/ghidra/ | 原生二进制 + 函数注释 | Ghidra 12.1 + JDK |
| src/ida/ | IDA 当前目标(只读) | 上游 ida-pro-mcp |
| src/browser/ | 网页、Electron、CDP 捕获 | Chrome 系浏览器 / Playwright |
| src/dotnet/ | .NET 程序集 | 无 |
| src/android/ | APK 静态分析 | 自带 headless JADX |
| src/firmware/ | 固件分区 | 自带 Binwalk/Unblob |
| src/process/ | 受控进程行为 | 本地 PTY 后端 |
第四站,化验报告(证据输出)。src/contracts/ 用 Zod 定义所有工具对外可见的输入输出 Schema;src/domain/ 的 785 个文件几乎全是纯函数,做证据比较、摘要计算、应用图模块拼装,无副作用。所以每条结论都自带证据、局限性与未知项,可以复现、可以跨版本对比。
桥接层:Node 如何直接指挥 Hopper 与 Ghidra
核心问题:Node.js 调不到 Hopper 或 Ghidra 的 API。REA 的解法是在外部工具进程内部"驻留一段解释器",走认证过的私有通道对话。
- bridge/hopper_bridge.py 运行在 Hopper 进程内,监听一个权限受限、单客户端的 Unix 套接字,用 NDJSON 承载请求,连接需通过认证才接受命令,负责把 REA 的操作翻译成 Hopper 的 Python API 调用
- bridge/ghidra/ReaGhidraBridge.java 打包为 Ghidra HeadlessScript,覆盖清单、反编译、交叉引用与控制流图
- bridge/android/ReaJadxBridge.java 是 headless JADX 的桥接脚本
- bridge/native/ReaNativeUI.swift 负责 macOS 原生 UI 捕获辅助
进程侧由 src/providers/ 的进程组管理、超时控制与清理机制兜底(见OwnedCommandCleanup.ts),外部分析工具不会"跑野"。这个设计的直接好处:外部工具升级不需要动 REA 主程序,换对应桥接脚本即可。
两类读者:Agent 技能包与 VitePress 文档
REA 把"怎么用它"拆给了两类读者。
- 面向 Agent:npm 包里内置
skills/技能包(源在 .agents/skills/reverse-engineer-anything/SKILL.md),明确告诉 Agent 什么时候该连 REA、什么时候不该(比如分析完整源码仓库时直接跳过 REA)、连接失败时按哪条恢复路径排查,再按"反编译 → 理解 → 复刻"的节奏推进任务 - 面向人类:docs/ 是 VitePress 官方文档。docs/mcp-contracts.md 逐个 MCP 工具讲契约,docs/installation.md 覆盖 Hopper/Ghidra/IDA 的接入配置,docs/architecture.mermaid 是分层架构图源文件。工具目录由源码自动生成,CI 会校验它与文档的一致性
架构借鉴:三个值得抄的设计决策
- 入口极薄,分层解耦:一个 mjs 只做流量路由,底下是 MCP/CLI 适配、应用路由、Provider 适配、契约与领域四层(
src/composition/负责组合装配)。换分析引擎只需替换 Provider 层,路由与契约不动 - 驻留解释器而非改造工具:把小脚本送进外部工具进程,用认证私有套接字对话。工具本体升级与桥接代码互不牵连,这对"第三方闭源工具"这类无法改源码的场景尤其实用
- 证据优先:结论自带证据、局限与未知项,领域层纯函数保证结果可复现、可对比。这是"给 Agent 用"的工具与"给人用"的 GUI 之间最本质的差异——Agent 需要的是可校验的事实,不是渲染得漂亮的界面
上手路径建议:先跑上面的三条命令确认链路,再用analyze-javascript-application熟悉证据输出格式,最后按 docs/native-investigation.md 接一个原生引擎开始真正的二进制逆向。
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考