ARTICLE · 1164619
REA:让 AI 帮你看懂软件,解决手边的小麻烦
最近看到 REA,我先想到的是电脑里那些用了好多年的小工具。
有的早就停更了,数据还在里面。有的每天都在用,只差一个导出按钮,或者一个顺手的快捷键。真要解决,往往得先弄清楚:它把文件存在哪,读数据时做了什么,点下那个按钮之后又发生了什么。
REA 就是帮 AI 查这些事情的工具。名字展开是 Reverse Engineer Anything,翻过来大概是“逆向一切”,挺有气势。实际用起来,可以从一件很小的事开始。
比如,把一个旧工具里的数据搬出来。
先说一件常见的麻烦
假设你一直用某个小软件记账,几年下来攒了几千条记录。现在想换工具,导出功能偏偏很难用,手里只剩软件自己的数据文件。
这时最省事的做法,是先看看文件本身。CSV、JSON、SQLite 这些常见格式,都有现成的读取办法。AI 看一眼文件结构,可能就能写出转换脚本。
碰到自定义格式,事情会绕一点。金额可能用“分”保存,日期可能是一串数字,备注里还夹着特殊字符。文件里的数字看得见,含义得继续查。
REA 可以让 AI 沿着软件的读取逻辑往下找:哪个函数打开文件,哪一段代码解析金额,最后又怎样显示到页面上。
你可以把目标交代得很实在:
这是旧记账工具和一份脱敏的数据副本。请查清它怎样读取日期、金额和备注,写一个只读的 CSV 转换脚本。转换后核对记录总数和金额合计,单独列出解析有疑问的记录。
做完之后,你拿到的是一个能用的转换脚本,以及一份核对结果。打开表格,抽查几笔熟悉的账,看看中文、日期和金额是否都对得上。
这种事就很适合从 REA 开始。问题小,结果也看得见。
REA 给 AI 接上了查软件的工具
平时我们把代码交给 AI,它可以解释,也可以改。遇到只有安装包的软件,就需要先把里面的东西读出来。
逆向工程师一直有这样的工具,Ghidra、Hopper、IDA 都属于这一类。它们能读机器码,整理函数,给出汇编和便于理解的伪代码。使用这些工具,需要经验,也需要耐心。
REA 做的事情,是把这些分析能力接到 AI 编程助手上。中间用的协议叫 MCP,可以理解成给 AI 接工具的接口。你提出问题,AI 调工具去查,拿到结果后继续追问,最后解释给你听。
比如查一个保存功能,AI 可以先找文件名,再追到写文件的函数,接着看谁调用了它、参数从哪里来。过程有点像顺着一根线,把藏在软件里的关系慢慢捋出来。
REA 也有直接处理 JavaScript、.NET 程序集和 Android 应用的路线。分析时走哪条路,要看文件里面是什么。
所以第一次给它任务时,最好同时交代三样东西:软件文件、你想查的行为、你最后要拿到的结果。
“研究这个软件”范围很大。“查清导出按钮怎样把记录写成 CSV,帮我做一个批量导出脚本”,就清楚多了。
从复制粘贴这种小事开始
REA 官网有个 Notion 案例,我觉得很容易理解。
我们在笔记里复制一段带格式的内容,粘到另一个软件,有时候标题和表格都保留了,有时候只剩文字。背后其实有一条调用链:页面发起复制,桌面应用接到请求,再把文本和 HTML 写进系统剪贴板。
这个案例就沿着 Notion 的页面接口,查到 preload 脚本,再经过进程间通信,找到主进程调用 Electron 剪贴板的地方。
对做小工具的人,这条线很有用。比如你想做个会议纪要整理工具,复制出去时希望同时带上标题、列表和表格,就可以研究这种处理方式,再给自己的工具写一个实现。
最后的检查也很朴素:把同一份内容粘到你常用的笔记和表格里,看排版是否保住了。
公共接口的文档已经讲清楚的部分,直接照着做就行。遇到某个软件独有的处理、一个解释起来很费劲的兼容问题,再让 REA 帮忙追到代码里。
很多实用的小工具,就是这样补出来的。一开始只为自己每天少折腾两分钟,后来发现身边几个人也用得上。
老游戏也能查,从一个声音说起
游戏同样属于可以研究的对象。
REA 官网展示过 DX-Ball 的一个案例。就是那种球撞砖块、砖块碎掉的老游戏。球撞到左边,声音偏左;撞到右边,声音也跟着偏右。
研究者想弄清的,就是横坐标怎样变成左右声像数值。
第一次看到的伪代码很简略,于是继续查原始指令、调用这个函数的代码,以及二进制里保存的常量。最后恢复出了计算过程:横坐标乘以一个比例,减去一个偏移,再按声像比例缩放。
官方案例记录了 3,205 个行为用例对比,还用指定的旧编译器复现了这个函数的 63 字节机器码。验证对象很具体,就是这一个声像计算函数。
另一个例子是《东方幻想乡》的环形弹幕。先把子弹均匀排成一圈,再加上玩家方向,整圈弹幕就转向玩家。REA 帮助检查了原始指令,重建项目则负责维护代码和做编译验证。
看完这两个例子,就能理解“反编译游戏”落到实际操作里是什么样子:找一个机制,把相关代码查清楚,写成自己能维护的实现,再和原来的行为对照。
碰撞、存档、伤害计算、弹幕角度,都可以成为一个单独的研究目标。完整游戏还包括画面、声音、资源、输入、关卡和运行环境,工作量要按各部分分别计算。
如果你玩老单机,可能更关心存档。换电脑之前,可以让 AI 查清保存路径怎样组成、涉及哪些文件,再整理备份和恢复步骤。恢复到一份测试环境里,看到原来的进度,才算这件事办完了。
做汉化也是类似的思路。先查文字来自资源表、脚本,还是服务器,再准备翻译。把译文装回游戏,还要接着做构建、签名和显示检查。
这里也有个容易遇到的分岔:Unity 游戏采用不同的构建方式,有的保留托管程序集,有的通过 IL2CPP 编译成本机代码。REA 的 .NET 路线适合检查前一种文件中的元数据和中间语言指令;IL2CPP 需要另选分析路线,额外确认工具能力。
手里有什么文件,就从那份文件能回答的问题开始。
我试了一个很小的例子
这次用了 REA 6.4.0,准备了一个自制的 JavaScript 游戏逻辑模块。内容很简单:存档、读档,以及花金币进入下一关。
分析命令跑完,得到一份 JSON 文件,里面列着模块关系、导出的函数,以及它们在文件中的位置。存档函数和关卡判定函数都能定位到。
接着结合原始代码,就能把规则读出来:存档叫 player-save.json,保存等级、金币和版本号;进入下一关需要 120 金币,成功后扣掉 120。
但存档到底放在电脑哪个目录,要继续查调用者传进来的路径。这个小模块接收一个目录参数,看到文件名之后,调查还得接着往前走一步。
随后单独跑了行为检查:119 金币时进不了下一关,120 金币时刚好够,121 金币时进入后剩 1。再把等级 3、金币 150 写入存档,读回来的内容也一致。
这个练习体验到的是 JavaScript 静态分析。分析工具负责定位和整理,规则解释要结合代码,运行结果则由单独的检查确认。
其中部分计算字段在静态结果里被标成了 unknown。这种结果很有参考价值:它提醒你,接下来还有哪一段需要自己看、让 AI 追,或者实际跑一下。
对于这么小的文件,直接交给 AI 阅读也很方便。文件多起来、模块绕起来之后,REA 整理出来的位置和关系,才会逐渐省下更多查找时间。
想上手,可以照这个顺序来
先准备 Node.js 和 npm。按目前的要求,Node.js 可以选 22.19 及以上的 22.x、24.11 及以上的 24.x,或 26 及以上版本。装好后,在终端看一下版本:
node --version
npm --version
如果你平时已经在用 AI 编程助手,可以运行安装向导:
npx rea-agents@6.4.0 setup
6.4.0 是这次核实和练习使用的版本。向导会让你选助手,展示将要修改的配置。检查后完成安装,再重启助手,让它加载 REA。
第一次练习,选自己写的小程序,或者授权明确的开源软件最省心。JavaScript 目录分析的准备工作也比较少。
把目标目录复制到一个单独的文件夹,用它的绝对路径运行:
npx -y rea-agents@6.4.0 analyze-javascript-application \
"/你的绝对路径/目标目录" --json > evidence.json
这条命令读取目录里的 JavaScript 和相关文件,生成分析结果。拿到 evidence.json 之后,把它和目标目录一起交给助手。
任务可以这样写:
请结合 REA 的分析结果和原始文件,查清这个程序怎样保存数据。列出文件位置、字段含义和路径来源,每个结论附上对应代码位置。最后写一个独立的读回检查,把已经确认的内容和需要继续查的内容分开列出。
给结果留一个能落地的检查方法,会省很多来回。做导出就核对条数和合计,做备份就恢复一次,做功能就拿几组输入跑一下。
如果研究的是 EXE、SO 这类本机代码,还要配置对应的分析引擎。选 Ghidra 路线时,需要自己准备匹配的 Ghidra 和完整 JDK;选 Hopper 或 IDA 时,也按各自的安装和授权要求准备。
配置完成,先检查引擎是否就绪:
npx -y rea-agents@6.4.0 doctor --provider ghidra --json
再让 AI 围绕你要研究的功能,查字符串、函数和调用关系。本机代码分析这部分,本文按官方文档整理;这次本地练习用的是前面的 JavaScript 路线。
费用也可以提前算清楚。REA 自身开源,AI 助手的订阅或调用费用、商用分析工具的授权费用,按你选择的组合计算。目标越大,分析时间和对话消耗通常也越多。
操作时用自制、开源或获授权的软件副本。涉及个人数据,先做脱敏;工具分析在本地进行,交给助手的结果仍会按你所用模型服务的方式处理。
我更想拿它做一些小东西
比如给停更的工具补一个导出脚本,把旧数据搬到新软件里。或者查清一个文件格式,写个转换器,以后双击就能用。也可以研究一个喜欢的交互,再放进自己做的小应用。
这些东西都很小,省下的麻烦却很具体。
REA 让这类尝试多了一条路:你可以用自然语言提出目标,再让 AI 带着工具到软件里面查。查到哪里,证据就跟到哪里;查清一小段,就先把那一小段用起来。
第一次用它,我会选一个惦记了很久、花半天就能验证结果的小问题。做成之后,电脑里就多了一个真正属于自己的小工具。
来源:REA 项目及官方文档。文中的 Notion、DX-Ball 和 TH04 案例来自 REA 官网;自制 JavaScript 模块的分析与行为检查于 2026 年 10 月 12 日在本地完成。
项目地址:https://github.com/morluto/rea
官方案例:https://rea.tools/showcase/
安装与配置:https://github.com/morluto/rea/blob/main/docs/installation.md
JavaScript 分析:https://github.com/morluto/rea/blob/main/docs/javascript-artifact-reconstruction.md
.NET 分析:https://github.com/morluto/rea/blob/main/docs/managed-code-analysis.md