安装与配置 REA
把这段话复制给编程助手:
使用 npx rea-agents@latest setup 安装 REA,并连接到这个编程助手。先展示安装计划,等我确认后再执行,然后验证安装结果。
也可以在终端运行:
npx rea-agents@latest setup
确认安装计划后,重启编程助手。
第一次使用,还没安装 Node.js 或编程助手?跟着安装指南一步步来 →
什么是逆向工程?
通过检查程序本身,弄清软件如何工作。
目标是理解一项功能,从而能解释它、修改它,或重新实现它。
比如:为什么计算器算 200 + 10% 会得到 220?
使用 REA 之前 · 你要亲自调查
原始 x64 指令节选
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
0x180124960: LEA RCX, [RSP + 0x160]
0x180124968: CALL 0x180122650
0x18012496e: LEA RDX, [R13 + 0x160]
0x180124975: LEA RCX, [RSP + 0x78]
0x18012497a: CALL 0x180109720
0x18012497f: MOV RSI, RAX
0x180124982: MOV qword ptr [RSP + 0x28], RAX
0x180124987: LEA RDX, [RSP + 0x160]
0x18012498f: MOV RCX, RAX
0x180124992: CALL 0x180123190
; … value-copy instructions omitted …
0x180124a14: MOV RDX, RDI
0x180124a17: LEA RCX, [RSP + 0xf8]
0x180124a1f: CALL 0x180109720
0x180124a24: LEA R8, [RSP + 0x30]
0x180124a29: MOV RDX, RAX
0x180124a2c: LEA RCX, [RSP + 0xb8]
0x180124a34: CALL 0x180123c10
你需要读懂指令、追踪调用,再还原计算过程。
使用 REA · 你只需问编程助手
一句话即可。
用日常语言告诉助手你的问题。
用 REA 检查 Windows 计算器。为什么 200 + 10% 会得到 220?
在 + 之后,% 按钮计算的是第一个数的百分比。
10% of 200 = 20200 + 20 = 220
- REA 提供
- 处理函数的指令、反编译代码和调用关系。
- 编程助手解释
- 走哪个分支、怎样计算,以及如何重新实现。
来试两个例子。先调整游戏速度,再回到计算器,重新实现 % 按钮。
示例 01 · Chrome 小恐龙游戏
为什么恐龙变得更快?
- 目标
- 重建一个速度可调的游戏。
- 为什么逆向工程?
- 要复现加速过程,得先找到实际运行的游戏中的规则:起始速度是多少、每次增加多少、何时停止加速。
试玩重建版
原版规则:速度从 6 开始,逐渐增加到 13。
REA 返回
页面实际运行的脚本。助手读取更新函数和速度设置,再把规则用到新的游戏中。
用 REA 检查这个小恐龙游戏。它为什么会越来越快?找出速度规则,再做一个速度可调的小版本。
分析目标:wayou 基于 Chromium 制作的浏览器版本。
if (this.currentSpeed < this.config.MAX_SPEED) {
this.currentSpeed += this.config.ACCELERATION;
}
起始速度为 6。速度低于 13 时,每次没有发生碰撞的更新增加 0.001。
打开速度实验室 →各部分负责什么
- 01 · REA读取正在运行的游戏脚本把实际代码和设置交给助手。
- 02 · 编程助手重建规则,加入控制把还原的加速规则用于带速度滑块的小游戏。
- 03 · 你调整速度,亲自试玩先体验原版加速,再选择自己的节奏。
查看脚本、验证过程和分析步骤
REA 通过本地调试连接检查 HTTP 浏览器版本,返回了已加载的 index.js,包含源码和摘要。
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6
我们在受控的浏览器检查中调用原版更新函数,禁用了障碍物和自动调度。保留一位小数时,更新 4,000 次后的速度为 10.0,更新 10,000 次后为 13.0。
新小游戏保留了这条速度规则。绘图、跳跃和碰撞代码是简化的教学实现。打开实验室,可以查看新代码并运行同样的速度检查。
示例 02 · Windows 计算器
重新实现计算器的 % 按钮。
我们已看到为什么 200 + 10% 得到 220。现在把 + 和 × 后的规则都还原出来,亲自试试。
- 目标
- 做一个小计算器,能正确处理 + 和 × 两种情况。
- 为什么逆向工程?
- 同一个按钮,在+ 和 × 后采用不同规则。我们检查已安装的应用,弄清百分比究竟作用于哪个数。
试试计算
200的10%=20. 则200+20=220。
REA 返回
一个分支除以 100;另一个还要乘上第一个数。助手用这两条规则重新实现 % 按钮。
对于这个例子, previous = 200 和 current = 10.
用 REA 检查 Windows 计算器的 % 按钮。还原 + 和 × 后的规则,再做一个同时采用这两条规则的小计算器。
if (operation == multiply || operation == divide) {
percent = current / 100;
} else {
percent = current * previous / 100;
}
- 在 + 之后
-
取第一个数字的10%。
10% of 200 = 20 → 200 + 20 = 220 - 在 × 之后
-
把10%变成0.1。
200 × 0.1 = 20
从已安装的应用,到能运行的 % 按钮
-
01 · REA 读取 calc.exe它启动计算器应用代码打开
ms-calculator:。助手随后选择已安装应用的库。 -
02 · REA 读取库返回 % 处理函数的代码函数检查运算符,并使用常量
100。 - 03 · 编程助手解释解释并复现规则对照 Microsoft 的源码核实分支,再试试上面的 + 和 ×。
查看实际代码和验证方式
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
#define IDC_MUL 92 // 0x5c
#define IDC_DIV 91 // 0x5b
#define IDC_PERCENT 118 // 0x76
0x64 = 100
使用 REA 4.1.0 检查 Windows 计算器 11.2508.4.0(x64)。可读摘要采用 Microsoft 公开源码中的名称,解释还原的分支。
第一次调查
用一个小应用试试 REA。
下载 Notes 示例,追踪 CSV 导出,再修改一个输入来验证。
想更深入吗?
告诉助手你想弄清什么,或者想做什么。有了 REA,你们可以从克隆这个网站,一直做到从可执行文件重建一款游戏。
用 REA 检查 https://reverseengineeranything.app/。帮我克隆这个网站。
对,就是这个网站。
用 REA 从这个游戏的可执行文件重建游戏。用 C 还原游戏逻辑,并对照原版测试。
根据目标选择配置和分析指南:
有什么问题吗?
阅读 FAQ、在 Discord 和我们聊聊,或提交 GitHub issue反馈 bug 和功能需求。