安裝與配置 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 和功能需求。