夜雨聆风学习资料网

ARTICLE · 1178093

AI 开始“拆软件”了,这个工具有点意思.

AI 开始“拆软件”了,这个工具有点意思.

最近,一款名字叫作 REA 的开源工具火了,开源短短几天已经将近20W的star了。

它的完整名称是 Reverse Engineer Anything,翻译成中文之后,意思就是“逆向一切”。

平时我们使用 AI 进行代码编写,通常都是先由自己提出具体需求,再让它根据这些需求,帮助我们把相应的功能实现出来。

REA 则提供了另外一种使用方式:将一个已经制作完成的软件交给 AI,让它去研究软件里面的功能具体是怎样实现的,在弄清楚之后,再协助你完成自己需要的那一部分。

让 AI 帮你研究软件

在继续介绍之前,先简单说一下,逆向工程具体是在做什么事情。

正常的软件开发流程,是先把代码编写出来,再经过编译和打包,形成一个能够运行的程序。逆向工程的研究方向则有所不同,它是拿着已经制作完成的程序,回过头去了解这个程序内部的工作过程。

在手里没有源代码的情况下,就需要对程序文件进行检查,分析其中能够恢复出来的代码内容,再结合软件实际运行时的表现,一步一步查清楚某个功能背后的实现逻辑。

这一类工作其实一直都有人在做,只是对于普通人来说,进入其中的门槛并不低。除了需要掌握分析工具的使用方法,还得能够读懂经过反编译之后得到的内容。

REA 所做的事情,就是把这样一套分析过程接入 AI Agent,让 AI Agent 能够参与到这些分析环节当中。

无论是查找相关模块,还是梳理函数之间的关系,以及对具体处理过程进行解释,都可以让 AI 借助相应工具来协助完成。如果你有某个想要进一步研究的功能,也可以围绕这一个功能,继续向它提出更具体的问题。

不过,如果直接把 REA 理解成一个“软件复制器”,这样的说法还是有些夸张。 它究竟能够找到多少实现细节,既取决于程序本身的情况,也和使用的分析工具、所处的分析环境有关。

接进常用的 AI 编程工具

在接入方面,REA 可以与 Codex、Claude Code、Cursor、Hermes、Qoder 等 AI 编程工具配合使用。

如果你目前已经在使用这些工具,就可以直接让Agent进行安装处理。

到了实际使用的环节,把应用所在的路径,以及自己想要研究的功能告诉它,就可以围绕这个目标展开。

对于需求描述得越具体,后面继续查找相关内容的时候,也就越容易明确方向。

比如,在向它交代任务的时候,可以采用下面这样的说法:

请使用 REA,对这个应用里面指定的功能进行分析。先检查当前环境具备哪些分析条件、能够开展哪些分析,再对这个功能的处理逻辑作出解释。每一个判断都需要附上对应的出处,对于还没有查清楚的地方,也请直接说明目前的情况。

等到相关逻辑已经查清楚,再让它为自己的项目编写实现方案。可以先制作出一个能够运行的版本,然后使用实际输入进行尝试,看看运行之后得到的结果,与自己原本的预期具体存在哪些差别。

不同软件,分析难度差不少

REA 所支持的分析对象,覆盖的范围比较广,其中包括 JavaScript、Electron 应用、Android APK、.NET 程序集、网站,以及原生二进制文件等。

不过,对于这些不同类型的对象来说,开展分析时需要具备的条件,并不是完全相同的。

部分 JavaScript 静态分析,可以直接从已经打包好的文件开始进行;如果需要分析 Android APK,就要准备相应的 JADX 和 JDK 环境;而在深入分析原生二进制文件的时候,则可能需要配合 Ghidra、Hopper 或 IDA 来完成相关工作。

所以,即使已经接入了 REA,分析过程中需要用到的专业工具,仍然要根据实际情况进行安装和准备。

还有一些功能,会把关键的处理逻辑放在远端服务器当中,本地程序里面可能只包含请求和返回结果。在这种情况下,即便把安装包交给 AI,它也未必能够查到服务器内部究竟采用了怎样的实现方式。

写在最后

REA 确实让分析软件变得更方便,但也把一个问题摆到了开发者面前:花几个月打磨出来的功能,别人可能很快就能做出相近的版本。

真遇到抄袭,取证和维权还得继续投入时间,但功能相似不等于侵权,让 AI 把代码换一种写法,也不代表就能避开版权问题,具体还得看用了哪些内容、有没有相应授权。

我倒不觉得这就意味着“软件的时代结束了”。

逆向也能帮助人理解程序原理、维护旧工具,只是以后,开发者更难单靠某个功能保持优势了。

关注我们,获取更多精彩内容

▽▽▽

相关学习资料