如何验证 REA 的反编译结果可信用真实 Hopper、Ghidra 和 IDA 完整跑一遍端到端验证【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea你让反编译器吐出一段伪代码格式漂亮、逻辑自洽——但它凭什么值得写进结论REA 是一套面向 AI Agent 的逆向工程 MCP 工具集针对引擎到底说了真话还是在糊弄这个问题它内置了真实引擎验证流程用你本机已装好的 Hopper、Ghidra 或 IDA 把完整分析链路跑一遍逐条核对结果、交叉引用、目标切换和进程清理。这篇指南写给还没跑过这套验证的新手三条流程各要备什么、怎么跑、报告里哪几个字段最重要。它到底解决了什么问题引擎能启动不代表结果可信。这套验证要回答的就是反编译、引用分析和资源清理是否都和真实引擎的行为对得上而不是只检查了一个 mock。开始之前把准备工作一次列清三条流程都写在仓库根目录package.json的 scripts 里都在仓库根目录运行命令内部会先构建产物不需要你手动 build。差异在外部依赖上先对照这张表自查命令前置条件验证对象npm run verify:hopper已安装 Hopper测试夹具由命令自动构建真实 Hopper 全流程工具清单对账、分析与 C 预言机比对、目标切换、彻底清场npm run verify:ghidraGHIDRA_INSTALL_DIR指向解包好的 Ghidra 12.1.4JAVA_HOME或 PATH 里能用到 64 位 JDK 21主机装有cc只读操作集、stripped 符号行为、间接调用与 CFG、异常路径与进程/项目清理npm run verify:ida已有 IDAGUI 或 headless与上游 ida-pro-mcp 服务REA_IDA_MCP_CONFIG指向 MCP 注册 JSONCLI 与 MCP 的结果一致性、上游数据库与工作区清理、原始二进制未被修改且从未被执行跟着跑一遍npm run verify:hopper 全流程Hopper 这条覆盖面最广就拿它完整走一次。装好 Hopper 后在仓库根目录敲下npm run verify:hopper命令会先构建测试夹具与产物再启动验证脚本。跑起来之后你会看到脚本第一件事是对当前 Hopper 运行状态做快照——后面判断有没有残留全靠这个基线。接下来它从夹具清单里取三个目标主目标、次目标和一个大型符号目标每个都带 SHA-256 校验一个字节对不上就停。随后脚本启动生产版 MCP 服务器并连上先做对账会话声明的工具可用性必须与服务端的实际工具清单逐项一致多一个、少一个都算失败。对完账才谈得上分析。然后打开主目标依次执行list_procedures、read_bytes、xrefs、batch_decompile、analyze_function把每一项结果与 C 夹具里预先写好的标准答案oracle逐条比对。跑完主目标后切到次目标文档必须被替换而不是叠加重复打开同一目标也不许出现重复文档。大型符号目标则用来验证完整清单。最后一段是最有分量的清场检查Hopper 自带的 MCP 服务没有运行、与验证无关的 Hopper 实例还活着、临时会话目录全部清掉、验证器自己拉起的子进程归零。四项全过报告里才会出现cleanShutdown: true。任何一步失败脚本会带着失败信息退出不会给你一个含糊的绿勾。另外两条流程套路相同构建产物、真跑一遍、出 JSON 报告。命令跑什么npm run verify:ghidra现场用cc把带版本号的 C 预言机源码编成 debug 与 stripped 两个原生目标再核对 25 个只读操作清单、搜索、反编译、汇编、调用/被调用、引用、CFG、类型恢复、外部函数与解析后的 thunk、导出符号、strip 后的符号行为、含无目标计算跳转的间接调用以及取消、启动超时、并发串行化、畸形目标在 provider 启动前被拒、进程与项目清理。更完整的 Ghidra 契约见 docs/ghidra-provider.mdnpm run verify:ida不装任何工具链复用你已有的 IDA 与上游 ida-pro-mcp 服务。先跑生产 CLIrea function target procedure --provider ida --jsonprocedure 默认rea_fixture_add断言伪代码与汇编非空、Evidence 结构完整再在单条 MCP 连接里完成open_binary、analyze_function、xrefs与字符串搜索确认 CLI 与 MCP 的函数身份、伪代码、汇编完全一致收尾验证 attached 模式 GUI 目标仍是原始输入headless 模式自建数据库已从上游会话消失、私有工作区已删除原始二进制全程未被修改、从未被执行。接入方式见 docs/ida-provider.mdGhidra 还有几条扩展命令verify:ghidra:cross-formatAArch64 ELF、x86-64 PE、Mach-O 跨格式、verify:ghidra:switch、verify:ghidra:dos、verify:ghidra:nativeaot跑法一致只是目标不同。报告怎么看4 个字段定去留三条流程结束时都会输出一份 JSON 报告不用逐行读盯住这几个passed/cleanShutdown总体结论。IDA 报告看passedHopper 报告看cleanShutdown——清场没做完时它是false脚本同时报错这份报告等于事故现场。checks逐条通过的断言比如 IDA 报告里的 original binary unchanged and never executed。少了哪条就知道哪个阶段没跑完。targets/targetHashes被分析的目标路径与 SHA-256。拿它和自己手头的文件对一下就能确认证据出自哪一份二进制。verifier_run.process_lineage验证器自身拉起的子进程谱系status必须是verified且descendants为空否则连验证器自己都漏了进程。报告里的结论不靠嘴说每一条 check 背后都是对真实引擎的一次调用加一次比对。⚠️ 常见卡点引擎没装、环境变量漏配verify:ghidra一启动就报 GHIDRA_INSTALL_DIR 错误原因——脚本只接受指向 Ghidra 12.1.4 安装根目录的绝对路径相对路径或指错目录都会被拒。解法export GHIDRA_INSTALL_DIR/绝对/路径/ghidra_12.1.4_PUBLIC后再跑。卡在 JDK 或 Ghidra 版本检查原因——这条流程只承诺 Ghidra 12.1.4 64 位 JDK 21系统默认 Java 太老或 Ghidra 版本漂移都会在此停下。解法用JAVA_HOME明确指到 JDK 21别依赖 PATH 里的默认版本。verify:ida提示缺--target或REA_IDA_MCP_CONFIG原因——这是故意的守卫该流程不替你装任何工具链目标与注册文件缺一即拒。解法先按 docs/ida-provider.md 的说明生成上游 MCP 注册 JSON再导出REA_IDA_MCP_CONFIG并带上--target 二进制路径。仓库刚 clone 下来就跑构建步骤失败原因——没装依赖产物构建跑不通本地没有对应引擎时对应的验证流程本来就跑不了。解法先npm ci、装好引擎只想先熟悉流程的可以先git clone https://gitcode.com/GitHub_Trending/rea2/rea把验证脚本读一遍。一句话引擎说真话报告里才有证据。想继续深入测试方法论在 docs/testing.md三个引擎的适配器源码分别在 src/hopper/、src/ghidra/、src/ida/。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考