逆向工程(REA)——逆向了解世间万物

又一个开源项目神级项目 REA,全称 Reverse Engineer Anything,直译过来就是“逆向工程一切”,项目解释是:一套 MCP,用于对二进制文件、应用程序以及运行时行为开展逆向工程。看到心仪的功能,深入理解其工作原理,直至二进制底层。

在这里插入图片描述

官网地址:https://rea.tools/
代码仓库:https://github.com/morluto/rea

它其实是个“插头”

REA 不是那种直接双击就能用的软件,它是一个跑在自己电脑上的服务,走的是 MCP 协议。MCP 这个可以理解成“给 AI 装的插头标准”,该服务安装后,AI 助手就多了一项能力:能去检查一个软件的内部是怎么搭的。

整个流程大概是这样——问一句“看看某软件的搜索功能是怎么做的”,AI 通过 MCP 把这句话转给 REA,REA 去分析那个软件,把发现交回来,AI 再拿这些发现解释,或者干脆写一个类似的实现。REA 它给出的每条结论都带着证据,会告诉这段逻辑是从哪个文件、哪个位置来的,同时它也会明确说,哪些地方它还没弄明白。逆向最怕的就是被一个自信的错误答案带偏,有了证据,至少能核查一遍。

使用之前两件事

一是 Node.js 的版本,REA 要求:22.19 以上、24.11 以上,或者 26 以上。装之前先敲一句 node -v 看看,版本低就需要提前升级 Node.js 版本。

二是反编译器,如果要分析的是 .exe、macOS 的 Mach-O,或者 Linux 的 ELF 这类真正的二进制文件,得先有一个反编译器——Hopper、Ghidra、IDA 三选一。三个里面 Ghidra 免费开源,新手建议从它开始;另外两个是商业软件,需要自己买授权。

但如果只是想看看某个 Electron 应用或者网站是怎么写的,那就什么都不用装,有 Node.js 就能开工。

三条命令就能跑

给 AI 助手装:

npx rea-agents setup
在这里插入图片描述

会提示让勾选要配置哪些 AI 助手,安装完成如下所示。

在这里插入图片描述

跑完记得重启 AI 助手,不然不生效。

如果只是想自己在终端里用,也可以如下安装:

npm install --global rea-agents
rea --help
在这里插入图片描述

比如分析一个已经解包出来的 JS 应用:

npx -y rea-agents@latest analyze-javascript-application /path/to/app --json

它会将模块、导入关系以及 Electron 的进程边界等信息逐一列出,并且每一条结论都会附带相应的证据。

更新命令如下:

rea update
在这里插入图片描述

逆向解析覆盖面很广

原以为这类工具就是冲着二进制去的,结果看了一圈发现范围宽得多。大致能处理这些:

原生二进制文件、JavaScript 和 Electron 应用、.NET 程序集、Go 二进制、Flutter 应用、Android 的 APK、连着的安卓真机或模拟器、网站、网络抓包(HAR 和 pcap)、固件、SQLite 数据库、WASM、EVM 字节码,还有进程行为、逻辑信号这些运行时的东西。

其中一部分需要额外装工具,另一部分什么都不用装。对于新手来说,后一类才是该先玩的:Electron、JavaScript、.NET、Go,都是装了 Node.js 就能直接上。

这里有个容易误解的点顺便说一下:REA 自己确实是在本机分析,目标文件不上传。但问的那个 AI 助手会把分析结果发给它的模型提供方,那家厂商有自己的数据政策。所以如果是敏感的东西,动手前最好想清楚。

官方给的三个例子

官网放了三个案例,难度递增。

最简单的是拿 Notion 开刀。Notion 是 Electron 做的,找到渲染进程里的剪贴板接口,顺着 preload 和 IPC 一路追到主进程。这个例子展示的是逆向最基本的一招——沿着调用链往上追。

进阶一点的是个老游戏 DX-Ball。跟着一次声音调用,追到“根据位置算左右声道”的那个函数,把不完整的伪代码补成 C,最后用 3205 个原始测试用例验证通过,编译出来和原版的 63 个字节完全一致。到这一步就不叫”看懂”了,是真把东西复原出来了。

最后一个更硬核,是早年 PC-98 平台上的一款弹幕游戏 TH04,要处理 16 位的 DOS 指令,把弹幕的发射角度算法恢复出来,再和历史编译器产出的结果做对比。

分析APP测试验证

之前分享过一款在学习 Andriod 时开发的一款 Demo 计算器 APP 应用,这里使用逆向工程对 APP 应用进行分析,看看 REA 到底强在哪里。

这里我使用 Hermes 进行测试验证,可以看到 MCP 前面步骤安装后已有该服务。

在这里插入图片描述

输入提示词,分析需要分析的软件。

在这里插入图片描述

最终分析结果还不错:

在这里插入图片描述

新手容易踩的坑

除了前面说的版本和重启,还有几个。

一个是把伪代码当源码。反编译出来的东西是看起来像 C 的文本,它可能不完整,甚至可能造成误导。

另一个是以为它什么都能自动搞定,实际用下来,提问的质量基本决定了结果的质量。问得越具体,它给的东西越有用。“这个按钮点下去之后调了哪些函数”就比“帮我分析这个软件”强太多。

还有就是忘了配反编译器就去啃 exe。前面提过了,再强调一遍,因为报错信息不一定直白。

注意法律这条线

REA 官方的立场很明确:用于合法的研究、教育、互操作性、软件保存,以及分析自己拥有、或者获得授权可以检查的软件。

另外,IDA、Hopper、JEB 这些商业工具的授权得自己合法买,REA 不提供任何许可或者激活。破解版、盗用密钥、绕过授权限制,都属于未授权使用。

技术上有好奇心没问题,但未经授权去分析别人的软件,用什么工具都是错的。

一直觉得逆向工程是个门槛高得离谱的领域,资料零散,还得靠人带。

REA 这类工具改变的不是“AI 替人逆向”,它更像是把“读汇编”这件苦差事分给了机器,而把“问对问题”和“验证结论”这两件事留给了人。

赶紧动手试试,你学废了么 ^ ^

原文链接:https://blog.csdn.net/tzhuwb/article/details/167814059

此条目发表在 人工智能 分类目录,贴了 , , , , , , 标签。将 固定链接 加入收藏夹。

《逆向工程(REA)——逆向了解世间万物》有0条回应

  1. 没有找到评论。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注