news 2026/10/16 3:05:37

一条命令给 AI Agent 装上反汇编能力:REA 逆向工程从入门到复现二进制的实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一条命令给 AI Agent 装上反汇编能力:REA 逆向工程从入门到复现二进制的实战

一条命令给 AI Agent 装上反汇编能力:REA 逆向工程从入门到复现二进制的实战

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

在别人的 App 里看到一个想复刻的功能,却没有源码,也不想靠猜?REA(Reverse Engineer Anything)把 Hopper、Ghidra、IDA 这些反汇编引擎,连同 JavaScript、Electron、.NET、Android 包的分析,统一接成 AI Agent 能直接调用的工具:一个 MCP 服务加一套 CLI 命令。下面用一个真实案例,带你在一条命令配好环境之后,自己把「打开二进制 → 反编译 → 验证行为真的变了」这条链路完整跑通。

上图是一次典型的运行状态:Agent 在上面发号施令,Hopper 在下面老老实实干活。右侧是文件信息面板(Mach‑O、arm64、AAPCS 调用约定),底部是逐段反汇编的进度日志。你不需要打开 Hopper 的菜单,也不用记它的快捷键。

最短链路:从 0 到第一次出结果只要三步

很多人卡在「环境」。REA 把三件本来要分开做的事并进了一个命令:给 Agent 注册 MCP、登记引擎路径、按需装可选组件。

先跑 setup,它会在写入前先给你看一份改动计划,你确认后才会动配置文件和(可选的)Hopper:

npx rea-agents setup # 注册 MCP + 装工作流指令,可选安装 Hopper,改前需你确认

拿不准环境有没有坑时,跑一个纯只读的体检,它逐个读主机、依赖、引擎可用性和各 Agent 的注册情况,不改任何东西:

npx -y rea-agents@latest doctor # 只读环境体检 npx -y rea-agents@latest doctor --provider ghidra # 只体检某一个引擎

平台要求和手动注册引擎的细节在 docs/installation.md。

出第一个结果最省事的方式是静态分析一个 JavaScript / Electron 应用——这条路不碰任何反汇编引擎,前提是 Node 22.19+ / 24.11+ / 26+:

npx -y rea-agents@latest analyze-javascript-application /绝对路径/to/app --json # 直接返回模块、导入、Electron 边界

💡 想要一个长期可用的rea命令,装一次全局就行:npm install --global rea-agents,之后rea --help看所有子命令。临时用也可以直接npx -y rea-agents@latest <命令>。

对原生二进制,装好全局命令后再选一个引擎。下面这条命令链就是完整的「打开 → 反编译」:

rea analyze /绝对路径/to/program --provider ghidra --json # 概览:符号、字符串、段 rea decompile /绝对路径/to/program 0x1000 --provider ghidra --json # 取某函数的伪代码

命令和输出契约的完整清单见 docs/cli.md,能力源码在 src/application/。

目标不全是二进制:REA 覆盖的应用类型

Hopper、Ghidra、IDA 的主场是原生二进制(Mach‑O / ELF / PE),但 REA 能接的目标比这宽得多。不是每个目标都要先装反汇编器:

目标类型REA 怎么处理需要原生引擎吗
原生二进制接 Hopper / Ghidra / IDA 之一,取伪代码、汇编、字符串、交叉引用、调用图需要,至少一款
JavaScript / Electron静态梳理模块、导入、Source Map、IPC 通道,不启动应用不需要
.NET 程序集读元数据与 CIL 指令,可做不同构建的对比不需要
Android APK无界面 JADX 反编译后静态检查不需要
网站 / 浏览器经 CDP 观察页面结构、请求、脚本并截图不需要
固件纳入同一分析框架,做分区与提取视目标而定

除了这几类,它还能静态看 Go / Rust 二进制、SQLite 快照、WASM、EVM 字节码、录制的崩溃和抓包,详见 docs/index.md 的完整目标表。

两句话划清楚边界:没有引擎、甚至目标根本不是二进制时,分析照样能跑;静态这条路只读你给的文件,不会替你启动或运行目标应用。

三个引擎怎么选:会不会替你乱挑

深度分析三选一:Hopper、Ghidra、IDA Pro。这里最容易踩坑的是「我到底用的哪个引擎」,结论的可信度直接取决于它。REA 的态度很明确——它是 A 而非 B:它不会背着你偷偷挑一个,显式传入的--provider优先级最高;多台引擎同时可用而你又没指定时,它直接报错,把候选列出来让你选,保证「结论出自哪款引擎」始终说得清。

想先看看手头能用谁:

rea providers --json # 列出可用的引擎及其支持的操作 rea capabilities --json # 看当前路由下的能力

💡 想固化偏好可以设环境变量REA_ANALYSIS_PROVIDER,但一次性的--provider会盖过它。选错或不支持的引擎,错误会带上原始原因返回,而不是默默换一家。

IDA 的接入契约在 docs/ida-provider.md,原生分析的具体命令在 docs/native-investigation.md。

结论怎么信:证据链、前后对比与 pass / fail / unknown

纯 GUI 分析给你的是屏幕上的反汇编视图,值不值钱取决于你盯着看了多久。REA 的每次分析都带一份 Evidence 证据链——结论来源、引擎版本、目标摘要、置信度和局限,于是「怎么知道它真的对了」有了抓手:

  • 对比改动前后:rea compare 左.json 右.json比两份证据,看改了之后哪些地方变了。
  • 把结论固化:rea evidence-import/rea evidence-export把语义结果存成文件,下次复用不必重新拉起引擎。
  • 重建验证诚实报结果:验证只给pass/fail/unknown,证据缺口就老实标unknown,从不把缺证据伪装成通过。

这里有个值得说透的诚实细节:函数文本对比里的changed只证明「文本不一样」,不等于行为变了。地址、生成名的变化也可能让文本维度改变而控制流没动。所以「行为确实变了」要靠另一条证据链来坐实——官方 DX‑Ball 案例里,一个 63 字节的 Windows PE 函数被还原成 C 之后,跑了 3,205 组「原始 x86 差分用例」,并逐字节复现了编译产物的全部 63 字节,这才敢说行为对齐。证据契约与对比语义见 docs/mcp-contracts.md。

把分析结果变成资产,卸载时只拆 REA 自己

分析结果本质是文件,不只是屏幕视图。把证据导出后,你的调查资产(结论、交叉引用、反编译产物)就和具体引擎解耦了:日后从 Hopper 换到 IDA、或升级引擎版本,已固化的结论照样能读,不必推倒重来。快照还能做命中复用——同样的目标字节、操作、参数、引擎和设置,直接读回上次的结果,不用重新冷启动引擎。

整个过程都在你自己机器上跑,目标软件不会被交给任何托管分析服务。卸载也收得干净:

rea update # 更新拥有当前 CLI 的全局安装 rea uninstall # 只删 REA 自己的注册项与生成文件 rea uninstall --purge-data # 额外清掉 ~/.rea 下的缓存与状态

卸载会保留你的 Hopper、Node、证据文件、抓包记录、无关技能和其它 MCP 服务。维护与排障的完整说明在 docs/installation.md 的「Diagnose, update, and remove」一节。

谁该上手,谁该直接上原生引擎

适合你:想让 AI Agent 替你走完「单个二进制 → 可运行复刻」的逆向流程,又要结论可复核、目标覆盖全栈、数据留在本地——把 REA 放在工具链最前面。

不适合你:只想安安静静盯着窗口看反汇编的人。Hopper、Ghidra、IDA 本体就是好引擎;REA 是跑在它们之上的编排与连接层,是调度者,不是替代品。它也不承诺替你解决每个二进制——目标格式、主机和权限边界,各引擎指南里都写得很清楚。

【免费下载链接】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/16 3:05:19

【恋练有词】背单词

thinkreckonJuly twenty fifth然而&#xff1a;whereas&#xff0c;nonethelessThe economic recessionhave an operationhave surgery

作者头像 李华
网站建设 2026/10/16 3:05:18

在 Python 编程语言中,函数是组织代码、实现模块化设计的核心机制

在 Python 编程语言中&#xff0c;函数是组织代码、实现模块化设计的核心机制。函数的执行结果通常通过 return 语句返回给调用者。然而&#xff0c;一个常被初学者忽视但至关重要的特性是&#xff1a;当函数中没有显式使用 return 语句时&#xff0c;Python 会自动返回 None。…

作者头像 李华
网站建设 2026/10/16 3:05:16

LangChain Agent 进阶:错误处理、重试与人工介入

个人主页&#xff1a;> for_ever_love__ <&#xff08;欢迎各位大佬莅临&#x1f60a;&#xff09; 其他栏目: > 大模型开发从0到1 < 其他栏目: > iOS项目总结大全 < 其他栏目: > 我想学python了 < 其他栏目: > iOS UI < 文章目录LangChain Agen…

作者头像 李华
网站建设 2026/10/16 3:05:07

电器元件-指示灯

简介指示灯是一种用于显示设备状态或操作状态的发光装置&#xff0c;通过颜色和亮灭状态向用户提供直观的信号信息。它在电气控制、电子设备及工业自动化中广泛使用。电源指示灯用于表示系统的电源状态&#xff0c;可选电压为 6.3V、12V、24V、36V、110V、220V、380V。应用场景…

作者头像 李华
网站建设 2026/10/16 3:05:01

单片机点阵显示全攻略:从8x8到16x64的字模、扫描与故障排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 3:04:49

大模型私有化交付:显存估算与压测的三个致命陷阱

项目地址 本文配套的完整交付手册《大模型私有化交付操作手册》已开源&#xff0c;涵盖 8 章正文 3 篇附录 3 张交付模板&#xff0c;覆盖 vLLM / SGLang / TGI / TensorRT-LLM / lmdeploy / ollama 等主流推理引擎。 项目地址&#xff1a;https://gitee.com/wang-guangshu…

作者头像 李华