资讯动态

REA 如何把 Hopper 反汇编器变成 Agent 可驱动的自动化分析后端

发布时间:2026/10/18 1:33:36 来源:尧图企业网站定制
REA 如何把 Hopper 反汇编器变成 Agent 可驱动的自动化分析后端【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/reaREA 是一个万物皆可逆向的分析平台其 Hopper provider 负责对接 Hopper Disassembler后台静默拉起分析器、串行投递分析请求、用缓存摊平反编译开销。适合想自动驱动 Hopper 做逆向的工程师阅读。先看清没有它时你会遇到什么 Hopper 是一个交互式 GUI 反汇编器它面向人设计不面向程序。你的 Agent 想批量查函数、取伪代码、搜字符串会接连撞上三堵墙。第一堵是启动拉 Hopper 打开一个二进制窗口会弹到前台打断你的桌面冷启动后还要等它加载没有确定的就绪信号。第二堵是并发Hopper 内部的 Python 脚本 API 是单线程串行的同一时刻只能处理一个请求并发投递的请求会互相踩线。第三堵是成本procedure.decompile()是 Hopper 里最贵的操作之一同一个函数查十次有界投影朴素实现就会反编译十次。这三件事任何一件不处理自动化分析都会退化成看着终端猜它卡没卡死。Hopper provider 在 REA 中的位置 REA 的架构是一个分析平台 多个可插拔 providerGhidra、IDA、Hopper 各占一席。Hopper provider 对上实现统一的AnalysisProvider契约声明身份、能力清单与可用性对下负责进程生命周期、超时、取消与清理把上层操作翻译成对 Hopper 的调用。中间隔着一根 Unix 套接字上面跑 NDJSON 协议套接字另一头是注入到 Hopper 内部运行的桥接脚本。整体编排关系见 docs/native-investigation.md实现集中在 src/hopper/ 目录。一次完整的分析会话怎么跑 准入校验inspectAvailability只放行 macOS 与 Linux其他平台直接报unsupported_host目标只接受executable与database两类DOS MZ/COM 会明确指向 Ghidra 16 位适配器。获取目标租约macOS 上通过目标租约保证同一个二进制不会被两个 REA 会话同时打开失败时提示该目标已在另一个会话中打开。写引导脚本在会话私有目录生成bootstrap.py权限0o600内容只是几个常量赋值——套接字路径、32 字节随机令牌、run_id——然后编译执行 bridge/hopper_bridge.py。后台拉起先用ps -ax探测 Hopper 是否已在运行已运行则跳过冷启动时执行open --hide --background再固定等待HOPPER_BACKGROUND_STARTUP_MS 5000毫秒预热。启动与认证握手以--executable或--database参数启动目标src/hopper/BridgeLauncher.ts 只拥有短命的启动器进程组不碰 LaunchServices 管理的 Hopper GUI 主进程。客户端创建rea-前缀私有临时目录先跑一个health请求校验响应名为REA Hopper bridge且run_id精确匹配全程受 120 秒启动截止约束。投递请求每个请求带自增数字 id写入套接字形如{ id, token, method, params }一行 JSON响应按 id 关联。缺令牌或不匹配hmac.compare_digest比较直接拒收。两个最值得展开的设计点 ⚙️单请求并发的 FIFO 队列。src/hopper/HopperRequestQueue.ts 的类注释只有一句FIFO that keeps the wire serialized until Hopper actually replies。它把 Hopper 的串行限制显式设计成队列后到的请求不挤占线路而是排队并上报queued behind N Hopper request(s)让你知道自己排在谁后面每个在途请求带 1 秒心跳持续汇报still running in Hopper (xxx ms elapsed)长操作不再是黑盒调用方取消只取消自己——排队中的可摘除进行中的在调用侧标记cancelled但不打断 Hopper 正在执行的操作。任何时刻线路上有且仅有一个在途请求超时、取消、清理都不产生竞态。反编译缓存与失效。桥接脚本用两张字典把开销摊平_pseudocode_cache以(document id, 入口点地址)为键同一函数无论被投影多少次decompile()只执行一次_search_inventory_cache把函数、字符串、命名表整理成不可变的地址排序快照重复搜索直接命中。缓存不是只增不清的分析标注一旦变化重命名、改属性_invalidate_pseudocode与_invalidate_search_inventory按文档粒度整体失效对应条目保证你拿到的永远是当前分析状态下的结果。设计点位置解决的问题FIFO 串行队列HopperRequestQueue.ts串行 API 上的排队、心跳、只取消自己伪代码/清单双缓存hopper_bridge.py昂贵 decompile 去重变更按文档失效目标租约启动前置检查同一二进制不被两个会话并发打开边界与常见坑 ⚠️平台与目标限制仅 macOS/Linux 可用database目标在 macOS 上明确不可用——打开已保存的 Hopper 数据库时桥接脚本无法注入只能改用executableraw-binary、MIPS/RISC-V/PowerPC 架构目标直接拒绝并指向 Ghidra。窗口仍可能被拉到前台Hopper 官方的hopper命令行助手内部会发 AppleScriptactivate源码注释明确这是上游 Hopper 的约束不代表 REA 分析失败。Linux 走专用演示适配器Linux 侧启动前先校验固定构建的 SHA-256经verified_linux_demo模式与私有 X11 显示策略运行未通过校验不会启动。关停有 30 秒上限清理走统一的HOPPER_SHUTDOWN_TIMEOUT_MS 30000握手超时先落定在途请求再删除会话产物每个结果都附带依赖 Hopper 已完成的静态分析的局限性声明分析没跑完时相关操作会拒绝执行。如果你在 macOS 或 Linux 上需要让 Agent 稳定驱动 Hopper 做函数级分析、伪代码提取和字符串搜索这套 provider 是现成的后端但你的目标是 16 位 DOS 镜像、无头 raw 二进制或者需要在 Windows 上跑那就该选 REA 里的其他 provider别在 Hopper 这条路上耗。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑