REA 真实 Provider 验证一条 verify 泳道从构建到干净关闭的完整走查指南【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea敲下一条 verify 命令Hopper 或 Ghidra 就真的被打开、分析、再被检查有没有残留进程。REAReverse Engineer Anything一个把逆向能力封装成 CLI MCP 服务的工具集把逆向工具里最不敢信的一环——结果是否可信——做成了可重复的端到端验证。先澄清一个容易踩的坑这些verify:*命令不会用 mock 引擎糊弄过去。每条泳道都要求你本机装了对应的真实引擎报告里的每一个断言都对应一次真实的 Provider 调用。反过来也成立——没装引擎时这些泳道跑不起来替代路径见文末。下面按一次 verify 运行的生命周期走一遍构建产物 → 拉起真实引擎 → 逐项断言 → 清理检查 → 报告落盘最后单列报告字段怎么读。跑之前要准备什么verify:* 的前置条件速查表三条核心泳道都写在 package.json 里结构都是先构建产物再启动验证脚本。命令、验证目标、前置条件对齐如下命令验证目标前置条件npm run verify:hopper已安装的 Hopper 全流程MCP CLI装好 Hopper 测试夹具脚本会先跑verify:fixturesnpm run verify:ghidra解包好的 Ghidra 12.1.4 宿主原生目标GHIDRA_INSTALL_DIR指向 12.1.4 64 位 full JDK 21npm run verify:ida真实 IDA Proattached GUI 或 headlessREA_IDA_MCP_CONFIG指向上游注册 JSON --target前置条件里有两个高频雷区Ghidra 版本是写死的。脚本会读application.version若不是12.1.4SUPPORTED_GHIDRA_VERSION直接抛 provider version commitment drifted。JDK 也必须是 64 位 full JDK版本落在该安装的application.java.minapplication.java.max区间当前 12.1 线要求 21。IDA 泳道不装任何工具链。它复用你已有的 IDA 与上游ida-pro-mcp缺--target或REA_IDA_MCP_CONFIG会立刻报错并指向 docs/ida-provider.md。引擎是怎么被拉起来的三条泳道的启动差异三条泳道把引擎拉起来的方式各不相同理解这一点能帮你快速定位卡在哪一步。Hopper验证脚本通过 stdio MCP 传输拉起 REA 服务默认dist/main.js可用REA_VERIFY_SERVER_COMMAND覆盖再经 Hopper 桥接打开二进制。它从build/conformance/manifest.json读取3 个夹具目标——主目标c、次目标version-v2、大型符号目标large三者都带 SHA-256 绑定并必须互不相同。同时它会先起一个无关 Hopper 哨兵实例用来证明验证过程不会误伤别家进程。Ghidra校验GHIDRA_INSTALL_DIR为绝对路径且安装可用后现场用cc把版本化的 C 预言机源码tests/conformance/ghidra/inventory.c编译成debug、stripped、jump-table、type-layout等原生目标再经bridge/ghidra/ReaGhidraBridge.java启动 headless 分析器。跨格式泳道还会调用clang、lld、lld-link产出 AArch64 ELF / x86-64 PE / Mach-O。IDA读REA_IDA_MCP_CONFIG里的注册信息attached或headless两种模式不启动、不安装任何东西直接复用现成环境。一条泳道内部发生了什么逐项断言横向对比引擎起来后三条泳道各自问引擎一连串问题并逐条断言。横向摆开看维度Hopper 泳道Ghidra 泳道IDA 泳道目标来源3 个夹具目标SHA-256 绑定清单现场编译inventory.c为多形态原生目标复用已有 IDA 与ida-pro-mcp目录/能力核对listTools必须与session.tool_availability完全一致会话能力列表与固定 capability 数量一致每次 MCP 调用过toolContract输出 schema核心分析断言list_procedures/read_bytes/xrefs/batch_decompile/analyze_function与 C 预言机逐条比对25 个只读操作清单、搜索、反编译、汇编、调用/被调用、引用、CFG、类型恢复CLI 伪代码汇编非空、Evidence 结构完整身份一致性切目标 A→B 文档被替换重开同目标不产生重复文档外部函数、解析后的 thunk、导出符号、strip 后符号行为CLI 与 MCP 的函数身份、伪代码、汇编完全一致parity边界/负例未知 procedure 被拒绝畸形地址被拒绝间接调用、多块 CFG、有界 P-code def-use畸形目标在引擎启动前被拒xrefs传not-an-address必须返回invalid_request清理断言Hopper 自带 MCP 未运行、无关实例存活、临时会话目录清空runtime_root/project_root/socket 路径删除、进程退出attached 保留原输入headless 数据库消失、私有工作区删除其中 IDA 的CLI/MCP parity值得多看一眼它先跑生产 CLIrea function target procedure --provider ida --json再在同一条 MCP 连接里重放相同分析最后断言两者的函数身份、伪代码、汇编逐字段相等——这保证了走 CLI 和走 MCP 拿到的是同一份结果。干净关闭怎么证明清理检查的三层防线能跑通不等于跑得干净。每条泳道都在结尾设了清理闸门顺序都是先写报告、再决定是否抛错。Hopper先用ps -ax确认 Hopper 自带的HopperMCPServer没有在跑close_binary后binary_session.open必须为false再用前后两次snapshotHopperRuntime快照对比确保没有留下任何rea-前缀的临时会话目录无关 Hopper 哨兵实例必须存活。任何一项不满足就写出cleanShutdown:false的报告并抛错。GhidraassertCleanup逐一检查runtime_root、endpoint_path、project_root、socket_root已被删除、且记录下的进程 ID 已不存在最后删除整个夹具临时目录。IDAattached 模式用get_metadata的 SHA-256 与原始输入比对确认 GUI 打开的仍是原输入headless 模式确认自建的数据库 ID 已从上游idb_list消失、私有工作区已被删除。最后再比对原始二进制全程未被修改、从未被执行。验证报告字段怎么读三条泳道都在 stdout 吐一份 JSON 摘要但字段名并不完全一样读报告时别用错字段出现位置含义passedIDA总体结果布尔值cleanShutdownHopper是否干净关闭资源未清理时直接抛错并置false附retainedRuntimePathsokGhidra总体结果成功时恒为truechecksIDA逐条通过的断言如 original binary unchanged and never executedtargets/targetHashesHopper被分析目标路径及其 SHA-256保证证据可追溯verification_lane/fixturesGhidra当前泳道名与每个夹具目标的摘要target_sha256、procedures数量等cleanup/malformed_targetGhidra清理状态恒为complete畸形目标恒为rejected-before-provider-startverifier_run.process_lineageHopper、Ghidra验证器自身子进程谱系status必须为verified且descendants为空证明没有残留子进程failed_phase/detailIDA仅失败时卡在哪一阶段detail提示用--report拿本地私密诊断文件以0600权限写出一个读报告的实用习惯先看总体判定字段passed/cleanShutdown/ok再看verifier_run.process_lineage是否为verified最后用targets/targetHashes确认你分析的确实是那个二进制。Ghidra 与 Hopper 报告里都带verifier_runIDA 报告不带——这是它们的真实差异不是漏写。 本地没装对应引擎时不必纠结verify:hopper等泳道就是为已装好真实工具的环境准备的。想先理解机制可以先看 docs/testing.md 里对测试深度分层的说明真实 Provider → 集成边界 → 黄金回归。完整复现可克隆仓库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),仅供参考