最近Github上有个叫REA的开源项目特别爆火,短短3 天 8 万,7天16 万 Star疯狂增长!涨星速度超过年初的OpenClaw,支持Codex、Claude Code、Cursor、Gemini CLI,一条命令即可接入。
![]()
REA 全称Reverse Engineer Anything,意思为:逆向一切,这名字够狂!
我连夜研究了一下这个项目和相关案例,它的工作原理是:通过 MCP,将逆向分析工具与 AI Agent 连接起来,让 Agent 能够调查二进制文件、桌面软件、Android 应用以及网页的内部实现。
“逆子!拿命来!哇呀呀呀!” 点击 https://www.prompttree.cn/github/6acf1ac4568bb9899c908c32,获取仓库地址。
先说一个开发中经常遇到的问题。
假设你正在开发一款软件,突然发现某个成熟产品的功能做得非常好(笔记中富文本复制粘贴,搜索功能,数据导出功能,流畅的交互效果等)。你想复刻它的功能,但你却不知道它的实现原理,你会怎么办?
过去,通常有几种选择:
问题在于,很多软件根本不会公开源码。
即使是一名经验丰富的开发者,也未必能迅速弄清楚一个复杂功能背后的完整实现路径。
而 REA 尝试解决的,正是这类问题。
它做的事情太逆天,放在以前,基本属于专业逆向工程师、安全研究员,把证据找出来,然后在我的项目里做一个类似的。接下来,Agent 就可以自己调用 REA 去查。
甚至你拿给它一个完全没有源码的软件,它也可以像拆机器一样,一层一层往里面看:有哪些功能、哪些模块互相调用、某个按钮按下去以后到底发生了什么。
网页也一样。比如你想知道一个网站为什么能做到实时刷新、某个按钮点下去以后请求了什么数据、某个功能背后调用了哪个接口,它都可以继续往下查。
所以它能研究的已经不只是某一种软件。电脑程序、手机 App、网页,甚至一些只有编译后文件、完全看不到源码的东西,它都在慢慢覆盖。
我认为,REA 最值得关注的地方,并不是它能分析多少种文件,而是它试图改变 AI Agent 获取技术信息的方式。
传统 AI 编程的工作模式:你告诉 Agent:“帮我实现一个类似 有道云笔记 的富文本编辑器。”
Agent 会根据已有知识、你提供的需求和可访问的文档,生成一套实现方案。
如果需求比较常见,这种方式往往很好用。但如果涉及复杂的内部通信、特殊的数据结构、运行时行为或者某个软件独有的处理逻辑,情况就不一样了。AI 可能给出一份看起来非常合理的代码,实际运行时却漏洞百出。
为什么?
因为它知道很多通用技术,却不一定知道目标软件真正采用了什么实现。
合理的实现,不等于原软件的真实实现。
REA 的设计思路,是让 Agent 不再仅仅依赖已有知识进行推测,而是尝试直接调查目标程序。
Agent 可以直接调查目标程序,获取真实的技术信息。
当然,分析得到的调用关系不一定完整,动态行为也可能受到环境和测试路径的限制。但至少,这为验证 AI 的结论提供了更具体的依据。
对开发者来说,这种变化非常重要。
因为软件开发中最耗费时间的工作,有时候不是写代码,而是弄清楚代码应该怎么写。
根据项目介绍,它覆盖的范围相当广,不只是网页和 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 获取仓库地址。