夜雨聆风学习资料网

ARTICLE · 1161707

AI开始逆向一切软件!10万Star开源项目REA,让Agent学会拆软件

AI开始逆向一切软件!10万Star开源项目REA,让Agent学会拆软件
开源新发现 · REA从功能,追到实现

最近,GitHub 上有个开源项目突然火了,叫 REA(Reverse Engineer Anything),Star 数已经突破10万。

这个项目有点意思。

过去,我们用 Claude Code、Codex 写代码,基本都是告诉 AI 想做什么,然后让它去实现。

但现在,玩法开始变了。

你看到别人软件里有一个很好用的功能,即使拿不到源代码,也可以让 AI 去研究它到底是怎么实现的。

比如,你发现一款桌面软件的搜索功能特别好用,或者某个 App 的复制粘贴机制很巧妙。

以前,你可能只能参考界面,自己猜测实现方式。

现在,你可以让 AI 帮你拆解软件,顺着模块、函数、路由、IPC 通信一路往下追踪,找到具体的实现逻辑,然后帮你在自己的项目里重新实现类似功能。

这就是 REA 正在做的事情。

一、REA 到底是什么?

先解释一个概念:逆向工程。

正常开发软件,是程序员写好代码,经过编译和打包,最终生成一个可以运行的程序。

逆向工程则是反过来。

我们拿到一个已经编译或打包的软件,通过分析程序文件、执行逻辑和机器指令,尝试理解它的内部实现。

过去,这主要是安全研究人员、逆向工程师和底层开发者的工作。

因为技术门槛比较高。

比如,要分析一个 Windows 程序,你可能需要熟悉汇编语言,使用 Ghidra、IDA 等反汇编工具,一层层研究函数调用关系。

有时为了弄清楚一个算法,就需要花上好几天。

REA 最有价值的地方,就是把这些专业逆向工具接入了 AI 智能体。

它本质上提供了一个 MCP 服务。

MCP 可以简单理解为 AI 调用外部工具的标准接口。

接入 REA 后,Claude Code、Codex、Cursor 等 AI 编程工具,就能调用专业逆向分析能力。

整个流程大致是:

已有软件 → REA分析 → AI理解代码逻辑 → 功能重新实现 → 测试验证

AI 可以根据你的任务,自动寻找相关模块、分析函数、追踪调用关系,再把结果整理成可理解的技术说明。

对于普通开发者来说,这相当于多了一位能够辅助阅读反编译代码的技术研究助手。

二、它到底能干什么?我认为有5个场景

1. 研究优秀软件的功能

假设你正在开发一款桌面 AI 工具。

你看到某个成熟软件的文件搜索、快捷操作或者富文本编辑体验特别好。

你很想知道它的技术方案,但官方没有公开源码。

REA 可以帮助你分析软件里相关模块的组织方式、函数调用和数据处理逻辑。

比如对于 Electron 应用,它可以追踪:

  • • 页面和模块之间如何组织
  • • 前端和主进程之间如何通信
  • • 某个功能调用了哪些系统 API
  • • 数据从哪里产生,经过哪些处理环节

找到相关技术机制后,再让 AI 根据这些信息设计自己的实现。

当然,前提是你有合法的分析权限,同时要尊重他人的知识产权。

2. 分析 Electron 桌面应用

这一类尤其值得关注。

像 Notion、VS Code 等桌面软件,很多都使用 Electron 技术。

Electron 应用本质上融合了 Web 技术和桌面运行环境,部分 JavaScript 代码会存放在 ASAR 等本地打包文件中。

ASAR 归档本身并不提供加密保护。

所以,某些 Electron 应用即使没有公开源代码,研究人员仍然可能提取和分析它的客户端模块。

REA 可以自动梳理其中的 JavaScript 模块、依赖关系、IPC 通信以及原生扩展。

这对理解 Electron 软件架构很有帮助。

但需要注意,客户端可分析,不代表服务端代码、数据库和完整商业逻辑都可以被恢复。

3. 拯救没有源码的老软件

这个场景的实际价值可能比很多人想象的更大。

尤其是企业里的一些老系统。

软件用了十几年,原来的开发团队已经离职,文档不完整,甚至连源码都找不到。

但业务还在运行。

这种情况下,如果想迁移系统或者升级功能,成本往往很高。

REA 可以结合 Ghidra、Hopper、IDA 等逆向工具,辅助分析机器码、汇编和伪代码。

例如,找回一段数据转换规则,理解一个特殊文件格式,或者分析某个历史算法。

虽然不能保证还原完整的原始代码,但对于系统维护、技术迁移和算法恢复,已经有很大的参考价值。

4. 分析 Android 应用、.NET 程序和固件

REA 支持的对象不止桌面软件。

根据官方项目说明,它还支持多种类型的分析目标,包括 Android APK、.NET 程序、网站、固件、WASM 和部分区块链字节码等。

不同类型需要不同的依赖和分析引擎。

例如,分析 Android APK 时,可以借助 JADX 获取应用结构及反编译结果。

分析传统原生程序时,则需要借助 Ghidra 等工具。

所以,REA 的能力可以理解为把不同类型的逆向分析工具整合进了统一的 Agent 工作流。

5. 帮你重新实现某个算法或功能

这是我最看好的一个方向。

以往,我们让 AI 写功能,通常先要由开发者提供比较详细的需求描述。

现在,需求来源还可以是一个已经存在的软件行为。

比如:

“研究这个程序中某个数据转换函数的实现方式,解释它的逻辑,并帮我用 TypeScript 重新实现,最后编写测试。”

整个过程中,AI 可以辅助完成技术调查、代码编写和测试验证。

对于 AI 编程来说,这相当于拓宽了输入信息的来源。

三、官方三个案例,确实很有代表性

REA 官方展示了三个比较有意思的案例。

第一个是经典打砖块游戏 DX-Ball。

研究者希望还原其中一个控制声音左右声道的算法。

通过分析原始 x86 指令和函数调用,最终恢复出相应的 C 语言实现。

更有意思的是,这段代码经过了 3,205 组测试,与原始程序行为一致。

在指定的历史编译条件下,编译出的 63 字节函数机器码也和原版一致。

这个案例说明,逆向工程可以深入到具体算法,并通过测试进行验证。

第二个是 Notion 桌面版。

研究者分析的是它的复制粘贴机制。

REA 帮助追踪了从页面调用、预加载脚本、IPC 通信,一直到 Electron 主进程调用系统剪贴板 API 的完整链路。

对于开发 Electron 桌面应用的人,这个案例很有参考意义。

第三个是 PC-98 老游戏《东方幻想乡》(TH04)。

研究者通过分析 16 位机器指令,恢复了游戏中弹幕子弹环的角度计算方法。

随后将算法重新实现为 C++,并结合历史编译工具进行对照验证。

案例截图4:TH04 固定方向与朝向玩家的子弹环角度示意。 属于官方复原说明,非游戏实机画面。

这三个案例代表了三种不同的价值:

理解软件架构、恢复具体算法,以及维护那些已经没有完整开发资料的老程序。

补充:剪映、Photoshop 这类软件,已经有怎样的开源尝试?

把视线从函数和汇编移到日常软件,开源社区已经有更容易看懂的尝试。下面是草稿兼容与编辑器重写方向的独立项目,用来补充理解这条路线;目前没有依据将它们归为 REA 的实现成果。

1. 剪映:直接生成可编辑时间轴

pyJianYingDraft 从剪映草稿文件这一层入手,用代码生成视频、音频、字幕和转场,再交给剪映打开。下面是项目作者提供的示例时间轴:各类素材已经落在不同轨道上。这展示的是草稿兼容与编辑自动化,具体功能受剪映版本限制。

界面实图1:脚本生成的剪映草稿,包含视频、字幕、音频与转场。 项目作者提供的示例截图。来源:GuanYixuan / pyJianYingDrafthttps://github.com/GuanYixuan/pyJianYingDraft

2. PhotoCraft:重写 Photoshop 式编辑工作流

PhotoCraft 是 ArtCraft 团队用 Rust 独立重写的图像编辑器。官方说明它依据公开规范和可观察行为实现,提供图层、蒙版、曲线调色与 PSD 文件处理。看这张界面图,画布、工具栏、图层面板和曲线编辑器都已经能看见。

界面实图2:PhotoCraft 的曲线调色和多图层编辑界面。 项目官方界面截图;画作《神奈川冲浪里》为公版作品。来源:ArtCraft / PhotoCrafthttps://github.com/storytold/photocraft

再看一个更容易理解的效果:用椭圆选区和调整图层,让人物脸部保留颜色、周围变成灰色。这里已经能看到编辑动作对应的视觉结果。PhotoCraft 仍处于早期 Alpha,官方也说明它尚不能完整替代专业工作中的 Photoshop。

界面实图3:PhotoCraft 通过选区与蒙版完成局部保色。 项目官方界面截图;画作《戴珍珠耳环的少女》为公版作品。来源:ArtCraft / PhotoCrafthttps://github.com/storytold/photocraft

3. FilmCraft:重写 Premiere 式剪辑工作流

同一团队的 FilmCraft 则面向非线性视频编辑。官方公开的阿波罗任务剪辑工程里,已经出现素材库、预览窗口、多轨时间轴、字幕和调色面板。它同样是独立实现且仍在开发中的项目,画面能说明当前工作流,不代表已经达到原软件的全部能力。

界面实图4:FilmCraft 官方展示的多轨剪辑工程与调色工作区。 项目官方界面截图;航天素材来自 NASA。来源:ArtCraft / FilmCrafthttps://github.com/storytold/filmcraft

这些项目让我更关心一个问题:软件里哪些能力可以被重新理解、实现并验证?具体可以做到哪一步,要回到各项目的代码、测试和实际使用结果。

四、怎么使用?一行命令就可以接入

REA 已经支持 Claude Code、Codex、Cursor、Gemini CLI 等 AI 编程工具。

如果本机已经安装符合要求的 Node.js 和 npm,可以按照官方方式运行:

npx rea-agents setup

这个命令会检查支持的 AI 编程客户端,让用户确认需要安装的 MCP 配置,并对原有配置进行备份。

安装完成后,重启相应的客户端即可使用。

注意,分析原生程序仍可能需要额外安装 Ghidra、Hopper 或 IDA。Electron 和 JavaScript 的静态分析则不需要这些原生反汇编引擎。

假设你要研究自己开发的一款 Electron 软件,可以给 Codex 这样的提示词:

请使用 REA 分析这个 Electron 应用中的 CSV 导出功能。

找到相关模块、核心函数以及 IPC 通信链路,解释数据如何从页面传递到文件写入模块。

请提供每个关键判断的分析证据,标记无法确认的部分。

最后参考功能需求,在我的项目里独立实现类似的导出模块,并生成测试用例。

对于有开发经验的人,上手成本并不算特别高。

但要强调,安装成功只是第一步,实际能分析到什么程度,仍取决于软件类型、工具能力、运行环境以及目标程序本身。

五、我对这个项目最大的思考:AI编程正在进入一个新阶段

最近一年,我一直在关注 Claude Code、Codex 这类 AI 编程工具的发展。

有一个变化越来越明显:

AI 的软件工程能力,正在从代码生成,向完整的软件开发流程扩展。

最开始,我们让 AI 写一个函数。

后来,我们让 AI 阅读整个代码仓库、开发网站、修改工程、执行测试。

再后来,AI 开始通过浏览器工具和桌面操作能力,直接观察程序界面,验证自己编写的功能。

而 REA 带来了另一种能力:

让 AI 进一步理解那些没有直接提供源代码的软件。

这件事对独立开发者和一人公司尤其有启发。

以前开发一个产品,很多时间消耗在技术调研上。

看到一个不错的交互或功能,需要搜索大量资料、阅读文档、寻找类似项目,甚至重新探索已经被别人解决过的问题。

现在,AI 可以辅助完成其中一部分调查工作,开发者把更多精力投入到产品设计、技术取舍和最终验证上。

当然,我不认为 REA 可以实现所谓的“一键复制任何软件”。

大型商业软件包含复杂的服务端系统、业务数据、基础设施和长期积累的工程能力。它们无法简单地通过分析客户端得到完整重建。

而且,逆向第三方软件必须遵守法律、许可协议和授权边界,不能随意复制受保护的代码和资源。

REA 本地分析目标文件,但分析结果可能传递给 AI 模型服务商。企业内部使用时,也必须考虑敏感代码和数据保护问题。

即便有这些限制,我依然认为这个方向值得重视。

过去,AI 编程很大程度上依赖开发者提供源码、文档和需求。

未来,AI 有机会结合源码、程序行为、网络请求、编译产物和运行时信息,建立对软件更完整的理解。

从读代码,到运行代码,再到研究编译后的软件,AI 的工具能力正在变得越来越完整。

未来,软件开发者的一项重要能力,可能就是指挥一组 AI 工具去理解、分析、构建和验证软件。

REA 展示了这条路线中非常有意思的一步。

如果你正在学习 Claude Code、Codex,或者准备独立开发 AI 产品,我建议收藏这个项目。

也许短期内用不到它的全部能力,但它值得关注。


开源项目:REA — Reverse Engineer Anything

GitHub:https://github.com/morluto/rea

官网:https://rea.tools

欢迎关注「越哥聊AI」

如果你也在探索 AI 工具、企业 AI 落地和 FDE 实战,欢迎关注「越哥聊AI」,一起把新技术用到真实工作里。

觉得这篇有帮助,记得点个赞、点个在看,也欢迎分享给正在学习 AI 编程的朋友。

你最想用 REA 研究哪个软件的功能?欢迎在评论区聊聊。

相关学习资料