↑

REA 爆火!7 天狂揽 16 万 Star,AI Agent 竟然开始“拆解”别人的软件了

PromptTree|阅读 0
2026/10/14 17:37
REA逆向工程AI AgentReverse Engineer Anything
REA(Reverse Engineer Anything)爆火开源项目,7 天斩获 16 万 Star。依托 MCP 打通各类逆向工具,赋能 AI Agent 自主逆向分析二进制、APK、网页、固件等程序,可探查调用逻辑、接口与运行行为。区别于传统 AI 凭知识推测,它以可追溯证据输出结论,区分事实、推断与未知,助力开发者研究产品功能、梳理无源码遗留程序、排查故障、学习逆向,使用时需严守知识产权合规边界。

最近Github上有个叫REA的开源项目特别爆火,短短3 天 8 万,7天16 万 Star疯狂增长!涨星速度超过年初的OpenClaw,支持Codex、Claude Code、Cursor、Gemini CLI,一条命令即可接入。

ScreenShot_2026-10-14_173611_902.png

REA 全称Reverse Engineer Anything,意思为:逆向一切,这名字够狂!

我连夜研究了一下这个项目和相关案例,它的工作原理是:通过 MCP,将逆向分析工具与 AI Agent 连接起来,让 Agent 能够调查二进制文件、桌面软件、Android 应用以及网页的内部实现。

rea-investigation-flow.svg

“逆子!拿命来!哇呀呀呀!” 点击 https://www.prompttree.cn/github/6acf1ac4568bb9899c908c32,获取仓库地址。

为什么这么火?

先说一个开发中经常遇到的问题。

假设你正在开发一款软件,突然发现某个成熟产品的功能做得非常好(笔记中富文本复制粘贴,搜索功能,数据导出功能,流畅的交互效果等)。你想复刻它的功能,但你却不知道它的实现原理,你会怎么办?

过去,通常有几种选择:

  • 找官方文档,看看有没有公开实现方案。
  • 搜索技术博客,寻找别人总结的经验。
  • 查看浏览器请求、页面结构和运行日志。
  • 如果能拿到源码,就直接阅读代码。
  • 如果拿不到源码,就只能结合外部表现进行推测,或者投入大量时间进行实验。

问题在于,很多软件根本不会公开源码。

即使是一名经验丰富的开发者,也未必能迅速弄清楚一个复杂功能背后的完整实现路径。

而 REA 尝试解决的,正是这类问题。

它做的事情太逆天,放在以前,基本属于专业逆向工程师、安全研究员,把证据找出来,然后在我的项目里做一个类似的。接下来,Agent 就可以自己调用 REA 去查。

甚至你拿给它一个完全没有源码的软件,它也可以像拆机器一样,一层一层往里面看:有哪些功能、哪些模块互相调用、某个按钮按下去以后到底发生了什么。

网页也一样。比如你想知道一个网站为什么能做到实时刷新、某个按钮点下去以后请求了什么数据、某个功能背后调用了哪个接口,它都可以继续往下查。

所以它能研究的已经不只是某一种软件。电脑程序、手机 App、网页,甚至一些只有编译后文件、完全看不到源码的东西,它都在慢慢覆盖。

我认为,REA 最值得关注的地方,并不是它能分析多少种文件,而是它试图改变 AI Agent 获取技术信息的方式。

传统 AI 编程的工作模式:你告诉 Agent:“帮我实现一个类似 有道云笔记 的富文本编辑器。”

Agent 会根据已有知识、你提供的需求和可访问的文档,生成一套实现方案。

如果需求比较常见,这种方式往往很好用。但如果涉及复杂的内部通信、特殊的数据结构、运行时行为或者某个软件独有的处理逻辑,情况就不一样了。AI 可能给出一份看起来非常合理的代码,实际运行时却漏洞百出。

为什么?

因为它知道很多通用技术,却不一定知道目标软件真正采用了什么实现。

合理的实现,不等于原软件的真实实现。

REA 的设计思路,是让 Agent 不再仅仅依赖已有知识进行推测,而是尝试直接调查目标程序。

Agent 可以直接调查目标程序,获取真实的技术信息。

当然,分析得到的调用关系不一定完整,动态行为也可能受到环境和测试路径的限制。但至少,这为验证 AI 的结论提供了更具体的依据。

对开发者来说,这种变化非常重要。

因为软件开发中最耗费时间的工作,有时候不是写代码,而是弄清楚代码应该怎么写。

REA 能分析哪些东西

根据项目介绍,它覆盖的范围相当广,不只是网页和 Android。

分析方向可以调查的内容
原生二进制汇编、伪代码、字符串、符号、调用关系
ELF 文件节、段、符号、重定位及部分静态防护特征
EVM 字节码分派选择器、字节偏移、推断的参数与状态可变性
Linux 崩溃记录寄存器、信号、线程信息及相关映射
JavaScript / Electron模块、导入、Source Map、路由、IPC
网站页面结构、脚本、网络观察结果、截图
网络捕获请求、响应、可访问的载荷及来源位置
.NET 程序集元数据、CIL 指令、原生依赖和构建对比
Android APK清单、类、反编译方法和引用
Android 设备设备、软件包、进程、日志、转储与截图
JEB 项目分析工件、类型、方法及伪代码
Android 资源解码后的清单、字符串、语言和版本信息
Flutter 应用Dart 快照哈希、不同 ABI 的库摘要
固件固件区域、提取结果及后续分析内容
软件包与资源文件清单、摘要、plist、应用包结构
进程行为终端输出、交互、退出情况及文件系统观察

不同分析方向依赖的工具也不同,例如 Ghidra、IDA、Hopper、GDB、JADX、Apktool、Binwalk 和 Chrome 等。

因此,不能简单理解为安装 REA 后,所有分析能力都会自动生效。具体能做什么,还取决于对应工具是否安装、配置是否正确,以及目标对象是否具备可分析条件。

但从开发工作流的角度看,这种统一接入的思路确实值得关注。

强调证据

REA 有一个特别值得关注的设计思路:让分析过程尽可能建立在可追溯的证据上。

AI 最大的问题之一,就是它有时会把合理猜测说得像确定事实。

分析软件时,这种问题尤其危险。

例如,Agent 发现某个函数名称中包含 export,并不能直接断言它就是完整的数据导出逻辑。

它需要继续查看函数实现、调用关系、输入输出,以及其他可以佐证判断的信息。

因此,我们应该区分三种情况:

  • 事实: 工具实际观察到了什么,例如某个函数、字符串或网络请求。
  • 推断: 根据现有证据推测程序可能采用了什么实现方式。
  • 未知: 当前证据不足,暂时无法得出可靠结论。

这三者不能混为一谈。

在逆向分析中,一个看起来合理的解释,并不等于已经被证实的实现原理。

如果 AI 能够把调查过程、证据来源和不确定性表达清楚,那么开发者就可以进一步核验,而不是直接相信一个听起来很专业的答案。

让 AI 不只是给结论,还能说明结论从何而来,这才是它进入复杂工程场景的重要一步。

普通开发者能用它做什么?

如果你是开发者,我认为 REA 值得关注的地方,主要在以下几个场景。

  • 研究成熟产品的功能。

当你想了解某个网页交互、数据处理流程或客户端行为时,可以先从公开页面、浏览器开发者工具和自己有权访问的测试环境入手,再让 Agent 协助整理观察结果。

  • 分析遗留软件。

有些项目已经找不到完整源码,或者缺少原始开发文档。对于有权分析的程序,REA 所连接的工具可以帮助开发者梳理文件结构、函数关系和运行行为,为维护工作提供线索。

  • 辅助排查疑难问题。

面对崩溃记录、网络捕获或复杂的程序行为,可以让 Agent 协助汇总日志、定位相关函数、比较不同运行结果,减少手动整理信息的工作量。

  • 学习程序内部的工作机制。

对想学习二进制分析、Android 逆向或浏览器运行机制的人来说,让 AI 协助解释工具输出,可以降低入门门槛。

不过,逆向分析不等于可以随意复制别人的软件。实际使用时,仍然需要注意软件许可、知识产权、访问授权、个人信息和商业机密等边界。

最后

希望未来越来越多的 AI 编程工具都能采用这种思路:不仅给出答案,还要告诉我们答案的依据,以及它究竟有多可靠。

AI 的价值不应该只是让答案听起来更可信,而应该让答案更容易被验证。

如果你也对 REA 感兴趣,可以关注本站公众号,访问 https://www.prompttree.cn/github/6acf1ac4568bb9899c908c32 获取仓库地址。