REA 真实 Provider 验证指南3 条命令跑通 Hopper、Ghidra 与 IDA 端到端测试【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea如果你用 AI Agent 做逆向分析那么拿到反编译结果之前先得确认这些结果确实来自真实引擎。REAReverse Engineer Anything是一套面向 AI Agent 的逆向工程 MCP 工具集其中REA 真实 Provider 验证是它内置的一整套验证流程用你机器上真实安装的 Hopper、Ghidra、IDA 跑端到端测试检查反编译、交叉引用、进程生命周期与资源清理是否可信。本文带你跑通第一条验证并读懂它输出的 JSON 报告。01 三个翻车场景逆向结果会在哪里不可信函数列表看起来正常其实不完整。工具能打开文件、list_procedures也返回了结果但和二进制里实际的函数数量对不上漏掉的函数后面根本无从查起。反编译结果好看却不来自真实引擎。伪代码读起来通顺可一旦和引擎的实际输出对不上这份结果就失去了追溯价值——你无法确定它到底是怎么来的。会话关闭后进程还在后台。MCP 会话显示已结束进程列表里却还留着引擎的子进程临时目录也没清空反复跑几次就是一堆残留。所以逆向工具的验收标准里能启动只是最低一档。REA 的测试理念按证据强度排序优先用真实生产引擎跑完整工作流其次才是集成测试与回归对比详见 docs/testing.md。Hopper、Ghidra、IDA 的真实验证各自独立成npm run verify:*命令不和普通单元测试混在一起。02 通用流程从构建到 JSON 报告一条线不管验证哪个引擎流程都是同一根线先构建产物npm run build:cached走缓存复用不重复编译再执行验证脚本例如node scripts/verify-real-hopper.mjs脚本内部真实调用引擎的每一项能力而不是检查几段 mock 返回值最后输出 JSON 报告验证结束写回终端。注意报告只在清理完成之后才会标记成功——只要还残留临时目录或子进程直接记为失败。中间任何一步失败脚本都会先写出带失败信息的报告再退出你不用猜是哪一步出了问题。速查表三条命令与前置条件命令验证目标前置条件npm run verify:hopper真实 Hopper 全流程已安装 Hopper 且其 MCP 服务可用命令会自动准备测试夹具npm run verify:ghidra真实 Ghidra 12.1.4GHIDRA_INSTALL_DIR指向解包好的 Ghidra 12.1.4 64 位 JDK 21经JAVA_HOME或 PATH 提供npm run verify:ida真实 IDA ProGUI 或 headlessREA_IDA_MCP_CONFIG指向上游 ida-pro-mcp 注册 JSON三个验证脚本分别是 scripts/verify-real-hopper.mjs、scripts/verify-real-ghidra.mjs 与 scripts/verify-real-ida.mjs读源码比读文档更直观。03 逐引擎跑起来环境、命令与检查点03.1 Hopperverify:hopper 怎么运行环境准备机器上装好 Hopper 且其 MCP 服务可用。verify:hopper会先执行夹具构建verify:fixtures测试目标不用你自己准备——三个夹具目标全部带 SHA-256 校验文件是否被动过一眼可查。执行命令npm run verify:hopper它替你检查了什么加载三个夹具目标主目标、次目标和一个大型符号目标工具清单一致性MCP 会话声明的工具可用性必须与服务端实际工具清单完全一致真实分析 APIlist_procedures、read_bytes、xrefs、batch_decompile、analyze_function的结果与一份标准答案 C 夹具逐条比对——夹具是结果已知的 C 代码引擎输出对不对一目了然目标切换从目标 A 切到目标 B文档被正确替换重复打开同一目标不会产生重复文档干净关闭Hopper 自带 MCP 服务没有残留运行、无关的 Hopper 实例不受影响、临时会话目录全部清空、子进程谱系归零。03.2 GhidraGHIDRA_INSTALL_DIR 与 JDK 21 怎么配环境准备把环境变量GHIDRA_INSTALL_DIR指向解包好的Ghidra 12.1.4目录版本是固定写死的再用JAVA_HOME或 PATH 提供 64 位 JDK 21。这两项就是 Ghidra 12.1.4 验证的环境变量组合缺一样都会在启动阶段报错。执行命令npm run verify:ghidra它替你检查了什么验证脚本现场用cc把版本化的 C 语言标准答案源码编译成两个原生目标debug 版与 stripped 版25 个只读操作清单、搜索、反编译、汇编、调用/被调用、引用、CFG、类型恢复外部函数、解析后的 thunk、导出符号以及符号被 strip 后的行为是否符合预期间接调用含无目标计算跳转、多块 CFG、有界的 P-code def-use 图边界行为取消、启动超时、序列化并发、畸形目标拒绝以及进程/项目清理。另有几条扩展验证流程可选verify:ghidra:cross-formatAArch64 ELF / x86-64 PE / Mach-O 跨格式、verify:ghidra:switch、verify:ghidra:dos、verify:ghidra:nativeaot。完整的边界与语义契约见 docs/ghidra-provider.md。03.3 IDAREA_IDA_MCP_CONFIG 怎么配环境准备IDA 验证不安装任何工具链它复用的是你已有的 IDA 与上游ida-pro-mcp服务。按 docs/ida-provider.md 的说明配好上游 MCP 注册 JSON把文件路径写入环境变量REA_IDA_MCP_CONFIG执行时再指定目标二进制。执行命令npm run verify:ida -- --target 二进制路径想留档可加--report 路径把完整报告写进文件它替你检查了什么三段式CLI 阶段用生产 CLI 跑rea function target procedure --provider ida --json断言伪代码与汇编均非空、Evidence 结构完整MCP 阶段在单条 MCP 连接内完成open_binary、analyze_function、xrefs、字符串搜索等操作并确认 CLI 与 MCP 返回的函数身份、伪代码、汇编完全一致——同一函数的两条入口结果必须对得上清理阶段attached 模式验证 GUI 打开的仍是原始输入headless 模式验证自建数据库已从上游会话中消失、私有工作区已被删除。最后还要确认原始二进制全程未被修改、也从未被执行。04 验证报告 cleanShutdown 是什么先看这 4 个字段每条流程结束时都会输出 JSON 摘要最值钱的字段就这几个passed总体是否通过。为false时报告里会附带失败阶段的详细信息直接指出卡在哪一步。cleanShutdown是否干净关闭。以 Hopper 流程为例只要还有资源没清掉临时目录、MCP 服务、子进程它就是false并且脚本直接报错——这是整份报告里最严格的字段。checks通过项清单逐条列出这次验证实际覆盖的检查例如 original binary unchanged and never executed原始二进制未被修改也从未被执行。verifier_run.process_lineage验证脚本自身的子进程谱系status必须是verified且 descendants 为空证明验证器自己也没留下后台进程。另外targets与targetHashes字段记录被分析目标的 SHA-256 摘要方便你事后核对证据来自哪份文件。所有这些字段背后是同一条原则每条断言都不是对 mock 的自我检查而是一次对真实引擎的调用换来的结论。05 排错清单报告没通过时看什么1. 没装引擎或环境不完整verify:*系列是为已装好真实工具的环境准备的缺环境会在启动阶段直接报错。按顺序自查Hopper 是否安装且 MCP 服务可用GHIDRA_INSTALL_DIR是否指向 12.1.4、64 位 JDK 21 是否在 PATH 或JAVA_HOME中REA_IDA_MCP_CONFIG指向的注册 JSON 是否合法。2. 运行超时Ghidra 首次启动偏慢JVM 冷启动加首次索引IDA 的注册 JSON 里也带超时参数别把一次慢跑判死刑。重跑一次并用报告里记录的失败阶段判断到底卡在哪一段。3.passed为false先看报告最先写出的失败信息再区分两类问题分析断言没过函数列表、伪代码比对不对指向引擎状态cleanShutdown为false指向生命周期管理临时资源没清掉。两类问题的排查方向完全不同。06 小结与延伸阅读一句话总结先构建、再实跑、清理完成才允许报告说通过——这就是 REA 真实 Provider 验证的完整闭环。延伸阅读测试方法论docs/testing.mdGhidra Provider 契约docs/ghidra-provider.mdIDA 接入指南docs/ida-provider.md 本地没有对应引擎时无需强行复现可先克隆仓库浏览文档与脚本git clone https://gitcode.com/GitHub_Trending/rea2/rea【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?