news 2026/10/17 2:27:54

把 Hopper、Ghidra、IDA 接进编码 Agent:REA 逆向工作流实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
把 Hopper、Ghidra、IDA 接进编码 Agent:REA 逆向工作流实战

把 Hopper、Ghidra、IDA 接进编码 Agent:REA 逆向工作流实战

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

你手上有一个 .so 或 Mach-O,想弄清某个功能怎么实现,却没有源码。让 AI Agent 替你翻反汇编,一直缺合适的接口。REA 就是为此而生:一个 npm 包,把对原生二进制、JS/Electron、.NET、APK、固件与网页的本地逆向分析,打包成 CLI 命令加 MCP 服务器,供你和编码 Agent 共用。

能逆向哪些目标,哪些必须自备引擎

按目标类型,REA 能直接给出的结果大致分两档。

  • 原生二进制:伪代码、汇编、字符串、符号、调用与交叉引用,前提是本机装有 Hopper、Ghidra 或 IDA。
  • JS / Electron:模块清单、导入关系、源映射、IPC 与原生插件关系,纯静态、不需要任何原生引擎。
  • .NET 程序集:PE/CLI 元数据、成员与 IL,同样静态、无外部依赖。
  • 安卓 APK:清单声明、类、反编译方法与引用,走自带的 headless JADX。
  • 网页 / 固件 / 进程 / SQLite / pcap等也各有对应路径。

和手动开引擎翻窗口相比,差别在于:你不用自己点反汇编窗口,而是让 Agent 经 MCP 拿到带证据、局限性和未知项的结构化结果,并能连续追问。它也不会运行你的目标应用——静态路径只读文件,运行时捕获才以你当前权限去跑/交互,且不上传目标。

内部机制走查:从一条命令到分析证据

入口:分发器先分流 CLI 与 MCP 双通道

一切先过scripts/rea.mjs。它不急着加载业务代码,而是先确认dist/编译产物是否存在(缺失就提示重新构建),再看参数:是mcp就走 stdio 长会话服务器,其余参数交给src/cli.ts这个一次性 CLI 适配层。两条通道最后落到同一套底层工作流,所以你在终端和让 Agent 调用,看到的是一致的。

选择:确定性选引擎,不静默回退

到了应用层,src/application/binary/里的SessionProviderRouter配AnalysisProviderRegistry负责选引擎。规则很死:只有一个可用引擎支持该目标就自动用它;多个候选都支持却没指定,就返回ambiguous错误并把candidate_ids列给你挑。这是故意的——避免你以为结果来自 Ghidra、实际来自别的引擎。

桥接:私有套接字 + 引擎内桥接代码

选定引擎后,src/hopper/这类适配模块通过 Unix 套接字,和跑在引擎内部的桥接代码对话:Hopper 侧是bridge/hopper_bridge.py,把请求翻译成 Hopper 自己的 Python API;Ghidra 侧则是一个打包进bridge/ghidra/ReaGhidraBridge.java的 HeadlessScript。src/process/统一负责进程组、截止时间和清理,保证引擎进程不会失控。

并列的执行层适配,各自靠不同方式拿结果(下表只描述机制,不重复列路径):

目标 / 能力怎么拿结果备注
Hopper 适配Unix 套接字 + 引擎内 Python 桥需本机 Hopper
Ghidra 适配打包 HeadlessScript 桥,支持 16 位 DOS需本机 Ghidra
IDA 适配接管现有会话(GUI 绑定或自带 headless 库)经上游 ida-pro-mcp
.NET 静态进程内解析 PE/CLI 元数据无外部引擎
安卓 APK自带 headless JADX需完整 JDK
固件Binwalk / Unblob 分区提取仅 Linux
进程行为本地 PTY 捕获Linux/macOS

输出:结构化证据 + 快照缓存

结果不是裸伪代码,而是带证据、局限性和未知项的结构化输出。同一进程之间没有共享内存,想让后续命令复用前面的结果,就用--snapshot落盘一份快照文件;当目标字节、操作、参数、Provider 和设置完全一致时,REA 会直接命中缓存而不重启引擎。

最小可跑通路径:四条命令到第一次输出

先注册,让编码 Agent 拿到 REA 的 MCP 工具。

npx rea-agents setup

你会看到:可多选的 Agent 列表、拟议的配置变更与备份提示,确认后重启你的 Agent 即可。

装一个常驻命令,后面几条命令更短。

npm install --global rea-agents

你会看到:安装完成,rea --help列出setup/analyze/doctor等命令组。

先跑一条不需要原生引擎的静态分析,用来熟悉输出结构。

rea analyze-javascript-application /绝对路径/应用 --json

你会看到:模块清单、导入关系、Electron 边界及其对应证据。

确认本机引擎是否就绪,再碰原生目标。

rea doctor --json

你会看到:按任务范围给出的引擎可用性与 Agent 注册状态(对齐 / 缺失 / 失效等),只读不改任何东西。

真正跑一次原生逆向,并顺手存一份快照。

rea analyze /绝对路径/程序 --provider ghidra --snapshot /绝对路径/analysis/program.json

你会看到:二进制总览——伪代码、汇编、字符串、符号与交叉引用,同时落盘一份快照;重复同一查询可直接复用缓存。

边界与代价

  • 需要自备引擎:深度原生分析要本机有 Hopper/Ghidra/IDA;没有引擎时只有静态 JS 与 .NET 路径可用。setup可在批准后帮你装 Hopper,Ghidra/IDA 用你已有的(见docs/installation.md)。
  • Provider 选择无回退:多引擎都支持目标而没指定时,会收到ambiguous错误并列出candidate_ids,从中显式挑一个——这是有意设计,避免结果来源混淆。
  • JS 证据文件可能巨大:README 有真实案例,一个 334 MB 的 Obsidian 应用证据文件,建议先落盘,再用 summary view 投影出约 10 KB 的摘要(见docs/cli.md):
    jq -c '{source:{kind:"inline",evidence:.},view:{kind:"summary"}}' app-evidence.json > app-view.json
  • 每次 CLI 是独立进程:想让后续命令复用前面的结果,要靠--snapshot存快照文件,别指望内存状态。
  • 大二进制易撞超时:用REA_GHIDRA_STARTUP_TIMEOUT_MS或REA_HOPPER_STARTUP_TIMEOUT_MS调高启动截止。
  • 平台限制:进程捕获要原生 PTY(仅 Linux/macOS);Linux 上 Ghidra/JADX/静态 JS 还需要PATH里有 procps 的ps。
  • 本地分析是承诺也是边界:目标不上传,但你的 Agent 会拿到工具返回内容;敏感目标要留意 Agent 侧的上下文管控。

适用人群与下一步

如果你要"用编码 Agent 逆向一个没有源码的目标,并且要能拿证据说话"——竞品功能调研、安全排查、旧二进制行为考证——REA 是少数把 Hopper/Ghidra/IDA 这类重引擎完整接进 Agent 工作流的开源方案;如果你只是偶尔手动反汇编,直接开引擎反而更轻便。

  • 先跑rea doctor --json,确认本机引擎已就绪。
  • 读docs/cli.md的快照与证据投影小节,把一条分析结果存下来再投影出摘要。
  • 顺docs/architecture.mermaid的分层图读应用层会话路由,重点看引擎选择与桥接两层,基本就能掌握它的全部内部逻辑。

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 2:27:07

PHP装修报价器源码解析:从表单校验到报价引擎的完整实现

简介:这套源码以PHP开发,模拟土巴兔装修报价流程,面向需要搭建报价系统的开发者和家装从业者。源码涵盖PHP语法、MVC结构、数据库交互、前端表单处理与报价算法,适合有PHP基础且想了解完整项目实现的人学习。压缩包共2000个文件&a…

作者头像 李华
网站建设 2026/10/17 2:26:32

PTA找鞍点算法详解:C语言与Python实现,避开常见坑

PTA 实验7-2-8 找鞍点:一个二维数组题,到底藏了多少坑看到“找鞍点”这三个字,很多初学C语言的同学第一反应是:这题简单,不就是遍历一下矩阵找最大最小值嘛。可真要动手写,十个里有五六个会踩坑——不是输出…

作者头像 李华
网站建设 2026/10/17 2:26:20

FAB工程师转IC设计:技能迁移避坑指南

一、痛点背景:从一次真实的生产事故说起FAB工程师转IC设计:技能迁移避坑指南这个问题,在FAB里不是一天两天了。我见过太多工程师踩坑:要么是方法用错导致数据误判,要么是工具选型失误导致项目延期,要么是流…

作者头像 李华