如何用 REA 让 AI Agent 真正看懂二进制:本地逆向工程工具实操指南
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
让大模型讲一个二进制里某函数的行为,它多半会答得很流利。但那份流利通常只是"像那么回事",而非"查过了"——模型从未见过那些字节,依据只有训练数据。REA(Reverse Engineer Anything)就是为这个缺口做的本地逆向工程工具:它把 Hopper、Ghidra、IDA 这类反汇编器,连同 JavaScript、.NET 的静态分析器封装成一个 MCP 服务器(Model Context Protocol,把工具接入 AI Agent 的接口协议)加 CLI,让你的编程 Agent 直接调用真实分析引擎,每一步结论都带回证据。
这是 REA 的典型工作画面:Agent 通过本地桥接脚本驱动 Hopper 反汇编一个 Mach-O 可执行文件,左侧是逐段汇编与入口点标记,底部控制台能看到分析进度,右侧面板显示文件加载器、地址段归属和 CPU 架构。
🚀 快速上手:两条命令接入,一条命令验证
想最快看到结果,从静态 JavaScript 分析入手最省事,它对逆向引擎零依赖。前置条件只有一个:Node.js 22.19+、24.11+ 或 26+,外加 npm。
接入 Agent 只需:
npx rea-agents setup选好想接入的 Agent(Claude Code、Codex、Cursor、Gemini CLI 等受支持客户端均可)。写入配置前,它会先把完整变更清单摆出来供你确认,批准后才落盘,原有配置先行备份,完成后重启 Agent 即可。
不想配 MCP,也能在终端直接验证:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json把解包后的 JavaScript 或 Electron 应用目录传给它,返回模块结构、导入关系、进程边界,以及每一项附带的证据。该命令只读文件,不启动目标应用。长期使用可全局安装rea-agents获得rea命令;命令全集、provider 选择与快照复用详见 CLI 指南。
🗺️ 能力地图:能分析什么,要先准备什么
同一套结果契约之下,分析深度和前置条件因目标而异。下面一项一行:
| 目标 | 你能拿到什么 | 前置依赖 |
|---|---|---|
| 原生二进制(Mach-O / ELF / PE) | 伪代码、汇编、字符串、符号、调用与引用关系 | Hopper、Ghidra 或 IDA 之一 |
| Go 二进制 | 内嵌编译器版本、模块信息、构建设置 | 无,内置静态解析,不装 Go |
| JavaScript / Electron 应用 | 模块图、导入、Source Map、IPC 通道、原生插件边界 | 仅 Node.js 与 npm |
| .NET 程序集 | 元数据、CIL 指令、声明的原生依赖、构建版本对比 | 无,纯静态,不加载不执行 |
| Android APK | 清单声明、类检索、方法反编译 | 无头 JADX 与完整 JDK |
| 网站 | 页面结构、脚本证据、网络元数据、按需截图 | Chrome 系浏览器 |
| 固件 | 区域检查与显式提取 | Binwalk 或 Unblob(Linux) |
| 进程行为 | 终端输出、交互、文件系统观测、运行对比 | Linux 或 macOS,使用原生 PTY |
静态分析只读取你提供的文件;"进程行为"与"网站"这类运行时条目会以你的用户权限运行或交互目标,影响范围写在各自运行时指南里。各目标的前置条件与退出状态,查 安装文档。
🧠 设计原理:为什么每个结论都可以被追问
REA 的输出能扛住追问,靠的是三个设计决策。
工具按"分析师问题"命名。工具形状沿任务语义切分——inspect(查单个对象的事实)、search(找候选)、trace(追跨证据的关系)、compare(对比成对的工件)——引擎内部 API 被收进 provider 适配层。好处很直接:Agent 在 Ghidra 和 Hopper 之间切换时面对的是同一套语义,analyze_function产出的证据可以直接喂给compare_functions做差异分析。
"没查到"记作未知,而非不存在。MCP 契约文档里的规则相当具体:缺失的覆盖范围记为 unknown,不是 absence;调用列表为空且 provider 覆盖不确定时,不能当作"该函数没有调用"的证据。每条证据记录携带工件与引擎身份、来源位置、置信度与限制,外加显式的未知项清单。重建校验也只会报告通过、失败、未知三种状态,"没验证到"永远不会被记成"验证通过"。
失败不静默。引擎不可用时,工具返回原始错误并指向单引擎诊断(如rea doctor --provider ghidra --json),而不是背地里换一台引擎、交给你一份看起来能跑的结果。工件分析与行为捕获全部在本地完成,与 Hopper、Ghidra 之间走本地私有 socket,不向网络端口暴露服务。
⚖️ 边界与选型:它不做什么
先说它不做的,再谈适合谁。
它返回伪代码、汇编和模块关系,但不承诺恢复原始源码。把 REA 当成"自动还原源码"的工具会失望——写实现的是你的 Agent,它负责的是把推导链条和证据交出来。静态命令只读文件,但运行时功能(浏览器观察、进程捕获)有真实副作用,会以你的用户权限执行,用前应先读对应指南的影响范围。目标文件不出本机,Agent 收到的工具结果却会进入你的模型服务商,那侧的数据政策需要单独评估。
适合的场景:一次性、隐私敏感的目标——未发布的产品、内部工具、安全研究——且手边已有 Hopper、Ghidra 或 IDA 之一,整条分析链路本地闭环,终端里可以逐步复现。不适合的场景:期待自动还原源码的人,以及不能接受模型看到分析结果的场合。若你落在前者,REA 的本地化路线基本就是为这类需求设计的;完整文档体系见 文档总览。
【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考