不用学逆向 GUI,让 AI Agent 在本地读懂二进制:REA 完整上手指南
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
接手一个竞品 App,想弄清某个功能到底怎么实现,可你没学过逆向 GUI,也不想为这一次分析装一堆引擎——这正是 REA 想解决的卡点。它是一个面向 AI Agent 的本地二进制分析工具链(npm 包名rea-agents),把 Hopper、Ghidra、IDA 等引擎封装成一条 CLI 和一个 MCP 服务器,分析全程在本机完成。
不装逆向引擎,哪些分析已经能跑
先聊你最可能问的几个问题,以及 REA 各自的回应。
没装引擎,能不能先跑通 JS 与 Electron 应用?
能,而且这是零依赖通道。静态分析直接读文件、不运行目标,输出模块图、导入关系和 Electron 边界,每项结论都带证据。同类免引擎的还有 Go 与 Rust 二进制检查:inspect-go-binary解析内嵌构建元数据(编译器版本、模块、替换),inspect-rust-binary读取 cargo-auditable 依赖列表,两者都不需要装任何工具链。
原生二进制分析要装什么?
反编译、伪代码、交叉引用、控制流由 REA 自动调用本机的 Hopper、Ghidra、IDA 或 Kuna 完成,你只需用自然语言描述目标,比如"搜索功能是怎么实现的"。已有其中任一引擎即可开工;setup 流程也可以在确认审批后帮你安装 Hopper。
.NET、APK、固件这些杂活各走哪条路?
各有独立通道,互不干扰:.NET 程序集走纯静态元数据与 CIL 解析,不加载不执行;APK 用自带的 headless JADX 反编译;Linux 固件分区交给 Binwalk/Unblob 做区域划分与解包。
运行时行为能不能被受控观察?
能。一方面挂接 Chrome 系浏览器,捕获页面脚本与网络请求;另一方面用本地 PTY 受控运行进程,记录终端交互与退出码。两者的典型用途是对比两次运行的差异,而不是随便跑一遍看运气。
三条命令跑通第一条分析
下面把三条命令串成一件事:注册、验证、自检,做完你手里就有一条可用的分析结果。
先让 Agent 认识 REA。交互式 setup 会先预览对配置的改动,你批准后写入,再按提示重启 Agent,之后就可以直接用自然语言提问:
npx -y rea-agents@latest setup注册完别急着验证引擎,先跑一条完全不需要引擎的静态分析,确认链路是通的:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json对任意 JS 目录或 Electron 应用执行,输出里能看到模块、导入、Electron 边界及各自的证据。跑通这一步,说明从入口到结果整条路径都是好的。
最后做环境自检,按你实际的任务范围检查引擎与注册状态:
npx -y rea-agents@latest doctor --json一次分析请求从终端到结果的路径
你在终端敲的rea与 Agent 发的 MCP 调用,第一站都是 scripts/rea.mjs。它只负责路由:mcp模式加载 MCP 运行时,其余走 CLI 适配层。两条路汇合后流程完全一致。
请求进入 src/server/,MCP 的tools/call在这里被翻译成内部工具调用;src/application/ 接手会话路由、证据账本与快照缓存;具体到某台引擎时,src/ghidra/、src/hopper/、src/ida/下各有一个 provider 实现,负责会话生命周期与结果归一。真正的反编译发生在引擎进程内——bridge/ 里的脚本被送进 Hopper 或 Ghidra 执行,经带认证的本地私有套接字回传。取回的结果在 src/contracts/ 用 Zod 校验输入输出,连同 evidence、limitations、unknowns 三块一起封装返回。
它为什么偏要这么做:代价与回报
CLI 和 MCP 共用同一份编译产物、又把桥接脚本塞进引擎进程,图的是两件事:两条通道各走一套代码,"终端看到的和 Agent 拿到的对不上"就是无底洞;引擎 API 各异、版本不受你控制,直连等于把整个工具链焊死在某个引擎版本上。代价是 bridge/ 目录要跟着引擎升级维护,通信也多一层套接字中转;回报是终端与 Agent 行为严格一致、通信不出本机、升级引擎只动桥接层。
它为什么偏要每个结论强制带证据?因为给 Agent 用的工具如果只给结论,Agent 会把推断当事实继续往下传。所以结果固定包含 evidence、limitations、unknowns,src/domain/ 下千余个文件全是无副作用纯函数,tests/boundary/ 用上千个边界测试文件守住这套行为。代价是输出更长、校验多花时间;回报是结果可复现、可对比、可审计,你能指着证据链追问"这个结论凭什么"。
适合谁用,从哪份文档继续
适合维护 AI 编码工作流、又频繁碰到二进制问题的工程师,也适合只想看懂竞品 App 内部实现、不想啃逆向 GUI 的同学。想继续深入,建议按这个顺序读:docs/installation.md 看引擎配置,docs/cli.md 看命令与输出契约,docs/mcp-contracts.md 看 MCP 工具契约,docs/roadmap.md 看新目标类型的接入进度 🗺️
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考