rea-agents(REA)实战上手:AI Agent 逆向二进制、APK 与网页的 3 步验证法
【免费下载链接】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 也能做二进制分析:原生二进制、APK、.NET 程序集、固件分区,再到 JS 与 Electron 应用、网页行为,一条命令安装,CLI 与 MCP 服务器双通道可用。
没有逆向背景怎么拆一个 APK:REA 的两条入口
手里解包出一个 APK,想弄清里面的调用关系,但你没学过逆向,也不想像装重型工具那样先装好再配好。这就是 REA 要接的活:把逆向分析变成 AI Agent 能直接调用的工具。
装好后,你有两条入口:
- 终端通道:
rea与rea-agents两个命令直接可用,跑一次性分析。 - Agent 通道:
rea mcp起一个 stdio 长驻服务器,Claude Code、Codex、Cursor 这类编码 Agent 在会话里持续调用。
两条入口跑同一套底层工作流,输出一致,选哪边只取决于谁来执行。
分析对象、外部依赖与输出内容对照表
| 分析对象 | 外部依赖 | 输出内容 |
|---|---|---|
| 🔍 原生二进制(Mach-O/ELF/PE) | Hopper、Ghidra、IDA 三选一 | 伪代码、汇编、字符串、交叉引用 |
| 🌐 JS/Electron 应用与网页 | 无外部引擎,纯静态 | 模块结构、导入关系、source map、运行时捕获 |
| ⚙️ .NET 程序集 | 无,静态解析 PE/CLI 元数据 | 类型、方法、引用清单 |
| 📱 安卓 APK | 自带 headless JADX | 反编译源码、资源视图 |
| 🧩 Linux 固件分区 | 自带 Binwalk/Unblob | 分区划分、提取结果 |
| 🖥️ 受控进程行为 | 本地 PTY 后端 | 终端输出、退出状态 |
边界同样要说清:
- 原生二进制必须先装 Hopper、Ghidra、IDA 之一,三选一即可。
- 它做静态分析与受控观测,不做漏洞利用,不生成 payload。
- 它不是调试器,没有 GUI 断点单步;进程行为走 PTY 捕获,拿输出与退出状态。
- 每个结论都带证据、局限性、未知项,缺证据不硬给结论。
setup、首次 JS 分析、doctor 自检:3 步验证法
第 1 步:注册通道。
npx rea-agents setupMCP 服务器注册进 Agent 客户端,工作流指令一并装好,支持 Claude Code、Codex、Cursor、Gemini CLI。算跑通:新开会话,Agent 能看到 REA 工具列表。
第 2 步:首次 JS/Electron 静态分析。
npx -y rea-agents@latest analyze-javascript-application /绝对路径/应用 --json对已解包的 JS 或 Electron 应用目录跑静态分析,不用装外部引擎。预期:JSON 里的模块清单、导入关系、Electron 边界,每条结论挂证据。算跑通:模块与导入边符合应用实际结构。
第 3 步:健康自检。
npx -y rea-agents@latest doctor --json按任务范围检查引擎与注册状态。算跑通:只做 JS 分析的场景全绿;碰原生二进制而缺引擎时明确报缺,不沉默。
一次分析请求的完整链路:从入口到证据的四道工位
把一次分析请求想象成工厂里的一道工件,过四个工位。
分拣工位。入口 scripts/rea.mjs 只看第一个参数:是mcp,加载长驻服务器运行时 dist/main.js;否则加载一次性 CLI 适配层 dist/cli.js。参数不对,工件当场退回。
工位绑定。应用层 src/application/(260+ 文件)负责派工:每个分析目标绑一条独立会话,同目标的后续调用都挂在这条会话上;证据账本、未知项追踪、Doctor 自检与 Setup 引导都在这层。
生产线工位。工件按类型进对应产线:src/hopper/、src/ghidra/、src/ida/、src/browser/、src/dotnet/、src/android/、src/firmware/、src/process/,一条产线只接一类工件。
封箱工位。输出前过两道关:src/contracts/ 用 Zod 把每个工具的输入输出 schema 钉死;src/domain/(400+ 纯函数文件)只做证据比较、摘要计算、应用图拼装,零副作用,同输入同输出。
Node 不改外部工具,如何驱动 Hopper 与 Ghidra
Node 没法直接调 Hopper 或 Ghidra 的 API。REA 的办法:往外部工具进程里驻留一段轻量脚本,双方走认证过的本地私有套接字对话。
- bridge/hopper_bridge.py 在 Hopper 进程内运行,把 REA 操作翻译成 Hopper 的 Python API 调用。
- bridge/ghidra/ReaGhidraBridge.java 打包成 Ghidra HeadlessScript,负责清单、反编译、交叉引用、控制流图。
- bridge/android/ReaJadxBridge.java 服务 headless JADX 反编译。
- bridge/native/ReaNativeUI.swift 做 macOS 原生 UI 捕获辅助。
src/process/ 管进程组、超时、用毕清理,分析工具跑不野。外部工具升级时,主程序不动,只替换桥接脚本。
Agent 用 SKILL 技能包,人类用 docs 文档:调用方怎么选
两类调用方,两条通道:
- Agent 通道:npm 包内置 skills 技能包(SKILL.md)。Agent 按技能包学会何时连 REA、何时先跑诊断,再按"反编译 → 理解 → 复刻"分步推进逆向任务。
- 人类通道:docs/ 下的 VitePress 文档。docs/mcp-contracts.md 逐个工具讲契约,docs/installation.md 讲安装与 Hopper/Ghidra/IDA 配置,docs/architecture.mermaid 是分层架构图源。工具目录由源码自动生成,CI 校验文档与实现一致。
选型规则:会话内持续追问同一目标,走 MCP;一次性验证、脚本化固定任务,走 CLI。
选型速查表、不适用场景与高频问答
速查表:场景 → 入口与命令。
| 场景 | 推荐入口 | 命令 |
|---|---|---|
| 让 Agent 接管逆向任务 | MCP | npx rea-agents setup |
| JS/Electron 应用静态分析 | CLI | npx -y rea-agents@latest analyze-javascript-application /绝对路径/应用 --json |
| 原生二进制(三选一引擎装好后) | MCP 或 CLI | 对应 hopper / ghidra / ida 工具组 |
| APK 反编译 | MCP 或 CLI | APK 分析工具(headless JADX 内置) |
| 环境健康检查 | CLI | npx -y rea-agents@latest doctor --json |
什么时候别用它。
- 目标是漏洞利用、payload 生成:REA 只做分析与受控观测,这条路不接。
- 需要 GUI 断点单步的调试器体验:找专业调试工具,REA 进程通道只拿输出与退出状态。
高频问答。
- 不分析原生二进制,要装 Hopper 吗?不用。JS、.NET、APK、固件、网页这几类,外部引擎一个都不需要。
- CLI 和 MCP 结果会不一致吗?不会。两个入口汇入同一套应用层与契约层。
- Ghidra 升级了,REA 要改代码吗?不用,替换 bridge/ghidra/ 下的桥接脚本即可。
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考