---
title: "REA AI 逆向工程原理與效能限制"
locale: zh-hant
category: knowledge_base
category_name: "知識庫"
translation_status: reviewed
license: cc_by
author: "injoys"
source_url: https://injoys.com/en/articles/rea-ai-reverse-engineering-performance-and-limits
published_at: 2026-10-19T05:55:51+09:00
---

# REA AI 逆向工程原理與效能限制

> REA 是連接 AI 代理程式與逆向工程工具、用來調查軟體運作方式的工具。本文區分公開案例的驗證範圍與伺服器分析的限制，並說明資安、著作權及分析結果的可重現性。

## Key Points

- REA 透過 MCP 讓 AI 代理程式能夠呼叫逆向工程工具。
- 理解執行檔的運作方式，與還原原始碼是兩回事。
- 公開的 DX-Ball 案例是對特定函式的驗證結果，不代表已完成整個遊戲的還原。
- 應用程式中未包含的伺服器程式碼或非公開模型，無法僅靠分析應用程式取得。
- 分析結果應保留依據及尚未確認的範圍，並與原始版本比較運作方式。

REA 讓 AI 呼叫逆向工程工具，調查應用程式的運作方式。公開案例展示了分析特定功能及重新實作的可能性。但很難將其視為軟體產業終結，或整項服務都能被複製的證據。

DX-Ball 的驗證數據以官方案例在 2026 年 10 月 7 日的進度紀錄為準。

## REA 是什麼

REA 是 Reverse Engineer Anything 的縮寫。這個專案將軟體分析工具連接至 AI 代理程式。它不是自行完成所有分析的單一 AI 模型。

逆向工程是從完成的軟體追查其結構與運作方式。目標是掌握說明功能或實現相容性所需的資訊。

編譯是將人撰寫的程式碼轉換成可執行形式的過程。在此過程中，註解和部分名稱資訊可能消失。最佳化也會改變函式或運算式的形式。

不過，並非所有應用程式最後都只剩下沒有名稱的機器碼。有些發行版本包含 JavaScript 程式碼或除錯資訊。因此，分析方法會隨檔案格式及保留下來的資訊而異。

| 術語 | 簡單說明 | 解讀結果時的注意事項 |
| --- | --- | --- |
| 反組譯 | 將機器碼表示為組合語言指令 | 指令的用途仍需進一步解讀 |
| 反編譯 | 將執行程式碼表示為類似原始碼的形式 | 不保證與原始碼相同 |
| 靜態分析 | 不執行程式，直接調查檔案 | 需與實際執行路徑區分 |
| 動態分析 | 執行程式並觀察其行為 | 尚未確認觀察條件以外的行為 |
| 重新實作 | 根據掌握的行為撰寫新程式碼 | 需與原版比較驗證 |

## AI 和 Ghidra 如何連接

REA 透過 MCP 將代理程式的分析請求傳送給工具。MCP 是讓 AI 與外部工具交換請求和結果的連接規範。Ghidra 是調查執行檔的逆向工程工具。

官方 README 除了 Ghidra，也說明了如何整合 Hopper 和 IDA。JavaScript 靜態分析不需要原生分析引擎。因此，若只用自動操作 Ghidra 來說明 REA 的功能，範圍就太窄了。

分析通常依照以下順序進行。

1. 選定要調查的應用程式和功能。
2. 從字串或函式呼叫找出相關位置。
3. 沿著指令和資料流解讀其運作方式。
4. 透過額外的工具呼叫確認不足的證據。
5. 將重新實作的結果與原版的行為比較。

Ghidra 原本就具備自動分析功能。REA 讓代理程式能持續提出分析請求。實際準確度取決於分析對象、分析引擎、模型及驗證方式。

## 不同條件下的分析範圍

REA 能確認的範圍取決於可存取的檔案和執行環境。本機應用程式可能包含與伺服器通訊的程式碼，但這不代表程式碼也包含伺服器的內部實作。

| 分析對象 | 可以確認的內容 | 無法僅憑分析斷定的內容 |
| --- | --- | --- |
| 本機執行檔 | 運算式、字串、函式呼叫關係 | 原始註解及完整的設計意圖 |
| JavaScript·Electron 應用程式 | 模組結構、畫面與內部處理的關聯 | 僅存在於伺服器的處理邏輯 |
| 網頁與通訊紀錄 | 下載的指令碼、觀察到的請求與回應 | 完整的伺服器原始碼和資料庫 |
| 本機包含的模型檔案 | 可存取檔案的結構與資訊 | 僅在伺服器使用的非公開模型 |
| 執行時觀察到的功能 | 在特定輸入和環境下的行為 | 所有輸入及故障情況下的行為 |

重新實作服務還需要滿足觀察到的功能以外的需求，帳號權限和錯誤處理就是典型例子。即使畫面運作得很相似，也不能據此認定整項服務相同。

## 8 分 41 秒計算機實驗的驗證範圍

8 分 41 秒是尚未找到原始紀錄佐證的示範說法。同時提出的工具呼叫次數為 17 次。找到 4 項計算規則的說法也尚未獲得獨立確認。

需要透過原始影片和執行紀錄確認測試條件。所需時間會隨模型及程式規模而變。不能僅憑一次成功，就判斷一般情況下的分析速度或準確度。

分析計算機時，光是讀懂公式並不代表驗證完成。折扣和優惠券的套用順序可能改變結果。整數除法如何捨去小數，也需要另外確認。

- 折扣和優惠券的套用順序
- 計算稅額所依據的金額
- 中間計算在哪一步四捨五入或捨去
- 條件發生變化時，邊界值的輸出
- 對原版和重新實作的程式碼輸入相同資料後的比較紀錄

要證明分析速度快，除了成功的答案，還需要其他紀錄。失敗的執行及重試次數都會影響比較。僅憑目前確認的證據，很難籠統評價其表現優於人類。

## 公開案例中確認的成果

官方案例展示了 Notion 的剪貼簿處理路徑，以及 DX-Ball 的計算函式。兩個案例都明確指出所調查功能的範圍。也需要留意，這些紀錄是由 REA 專案公開的。

| 案例 | 公開文件中確認的工作 | 不應過度解讀為 |
| --- | --- | --- |
| Notion Desktop 7.6.1 | 追查從應用程式內部呼叫到系統剪貼簿的路徑 | 複製整項 Notion 服務 |
| DX-Ball 1.07 | 重新實作將畫面位置轉換為左右聲道音訊數值的函式 | 已完成整款遊戲的還原 |
| Razer Synapse 輕量替代應用程式 | 本次查核未找到具體的原版驗證紀錄 | 斷定這是已通過官方驗證的 REA 成果 |
| 與 Claude 相關的投影片編輯器 | 本次查核未確認分析對象與重新實作範圍 | 解讀為還原了 Claude 的非公開模型 |

Notion 案例追查了畫面端呼叫經過內部通訊的過程。最後會連接到 Electron 的剪貼簿寫入功能。這個案例說明的是特定功能的處理路徑。

DX-Ball 案例從執行檔確認了函式輸入和運算常數。針對該函式進行了 **3,205 次**比較測試。將已檢查的重定位處理納入後，編譯結果有 63 位元組一致。

這些紀錄支持特定函式的重新實作。官方文件說明，整款遊戲可執行版本的還原仍在進行中。部分函式通過驗證與整個產品完成，是兩回事。

## 觀察與推論標記能保證什麼

證據標記用來區分結論的來源。REA 文件區分觀察、推論與未確認資訊。不過，並非所有工具都使用相同的四種標籤。

官方文件會依分析類型使用不同的狀態和可信度表述。閱讀時，可以像下表這樣區分其含義。表中的分類是為了協助理解。

| 分類 | 含義 | 需要檢查的內容 |
| --- | --- | --- |
| 觀察 | 直接從檔案或執行結果確認 | 對象版本與證據位置 |
| 推導 | 根據觀察到的數值和關係計算出的結論 | 計算過程與前提 |
| 推測 | 需要進一步確認的解讀 | 是否有其他可能的解釋 |
| 未確認 | 尚未取得證據的部分 | 調查範圍與未能確認的原因 |

官方 DISCLAIMER.md 明確指出分析結果的限制。

> Decompilation, reconstruction, heuristics, and AI-assisted analysis may be incomplete or incorrect.
>
> 來源：REA DISCLAIMER.md

這表示反編譯和 AI 分析可能不完整或有誤。即使標為觀察，也不能排除工具出錯的可能。證據標記的價值在於留下可供重新檢查的位置。

## 常見錯誤

最常見的誤解，是把能夠解釋的結果當成已完成驗證。易讀的程式碼可能與原版的行為不同。未調查的路徑也必須另外註明。

| 誤解 | 更準確的理解 |
| --- | --- |
| 反編譯就能還原原始碼 | 通常得到的是類似原始碼的表示形式 |
| 程式碼中有這條路徑，所以它實際執行過 | 靜態連結與執行觀察是兩回事 |
| 沒找到，所以這項功能不存在 | 可能是調查範圍或工具支援不足 |
| 工具成功結束，所以分析已經完整 | 成功的結果仍可能有未確認項目 |
| 結果有證據，所以沒有幻覺 | 證據和解讀都需要檢查 |

REA 的 CLI 文件也區分成功結束與分析完整。工作結束後，部分證據或問題仍可能尚未解決。比起完成訊息，更應確認結果的限制。

## 能夠重新驗證分析結果的紀錄

要讓分析可以重現，就必須一併留下取得結論時的條件。即使是同一款應用程式，更新也可能改變程式碼。如果只記下函式位址，換個版本就難以找到分析對象。

REA 的 Evidence 紀錄會保存對象識別資訊和證據位置。快照功能可以在條件相符時重複使用分析結果。但儲存的結果不代表最新版本也已通過驗證。

請依照以下順序留下驗證紀錄。

1. 記錄對象檔案的版本和雜湊值。
2. 留下 REA 和分析引擎的版本。
3. 為每項結論連結檔案位置或函式位址。
4. 一併保存原版與重新實作程式碼的輸入、輸出。
5. 另外記下未能調查的條件和失敗的測試。

雜湊值是用來比較檔案是否相同的識別值。留下雜湊值，就能追查說明針對的是哪個發行版本。AI 日後引用結果時，也能區分其適用範圍。

## 本機分析與資料對外傳輸

在本機分析，不代表整個過程都不會對外傳輸資料。根據官方 README，REA 對分析對象的處理在本機進行。工具結果則由連接的 AI 代理程式接收。

如果使用外部模型，分析結果可能會傳送給模型提供者。適用的資料政策取決於所連接的服務。處理公司應用程式或非公開檔案時，請先確認傳輸路徑。

- 傳送給模型的程式碼和字串範圍
- 日誌中包含的帳號資訊和存取權杖
- 通訊紀錄中包含的個人資料
- 分析結果的儲存位置和保留政策

靜態檔案調查與執行程式也應區分。執行觀察可能影響檔案或帳號狀態。請在隔離的測試環境中處理不受信任的程式。

## 開發者應確認的安全與權利問題

放進應用程式的機密資訊可能透過逆向工程外洩。OWASP 說明了將敏感資訊放入發行套件的問題。這項風險在 REA 出現之前就已存在。

尤其不能在應用程式中包含具有伺服器權限的機密 API 金鑰。OWASP 建議將靜態機密值保留在伺服器端。混淆處理即使能增加擷取難度，也無法保證機密不會洩漏。

- 檢查發行檔案中包含的密碼和機密金鑰。
- 限制驗證權杖的權限和有效期限。
- 在伺服器端驗證請求者的權限。
- 更換已外洩的認證資訊。

逆向工程的允許範圍因國家、契約和作業內容而異。不能斷定只要目的是實現相容性，所有行為就都被允許。分析與重新散布程式碼、圖片，也需要分別審視。

REA 的 MIT 授權並未授予對分析對象的權利。可以在官方 DISCLAIMER.md 查看專案的使用原則。實際允許範圍，請依適用法律及對象軟體的條款確認。

## 軟體產業會出現什麼變化

REA 展示了降低理解既有功能所需成本的可能性。這是從公開分析案例得出的展望。目前沒有經確認的數據能說明整個產業可節省多少成本。

即使了解部分功能的實作方式，營運服務的能力仍是另一回事。資料品質和故障應變無法僅靠分析執行檔複製。因此，應分別評估模仿功能的難易度與商業競爭力。

| 業務要素 | 從 REA 的分析範圍得出的啟示 |
| --- | --- |
| 應用程式內部的單一功能 | 調查實作方式及重新實作的負擔可能降低 |
| 伺服器專屬處理 | 難以僅靠分析用戶端取得 |
| 資料與存取權限 | 需在理解程式碼之外另行取得及管理 |
| 穩定性與營運信任 | 仍需持續測試、維護及處理故障 |
| 保存既有軟體 | 可從小型功能開始，留下證據並逐步還原 |

REA 的公開案例展示了理解軟體方式的變化，但不是開發需求會消失的證據。重新實作功能後，仍需驗證相容性與營運品質。

## FAQ

### REA 是自有的 AI 模型嗎？
REA 是連接 AI 代理程式與軟體分析工具的專案。分析請求與結果可透過 MCP 傳送。

### 使用 REA 一定需要 Ghidra 嗎？
視分析對象而定。原生程式分析會使用 Ghidra 等引擎。JavaScript 靜態分析則不需要原生程式分析引擎。

### REA 會原樣還原原始碼嗎？
無法保證還原結果與原始碼完全相同。編譯過程中，註解或名稱資訊可能會消失。反編譯結果應視為用來理解程式行為的表述。

### 分析應用程式也能取得伺服器程式碼嗎？
僅靠分析應用程式，無法取得未包含在其中的伺服器程式碼。可以觀察通訊請求與回應，但這些紀錄無法呈現伺服器內部實作的全貌。

### 其他程式也能在 8 分 41 秒內完成分析嗎？
沒有依據可以這樣概括。我們也未能確認該計算機示範的原始紀錄。所需時間會因分析對象的大小、模型和分析環境而異。

### REA 能消除 AI 幻覺嗎？
幻覺不會因此消失。標示依據與未確認的範圍，能讓結論更容易重新檢視。工具結果與 AI 的解讀仍須分別驗證。

### DX-Ball 案例的結果是還原了整個遊戲嗎？
所引用的數據是特定音效計算函式的驗證結果。官方案例說明了 3,205 次比對測試，並表示整個遊戲的可執行還原版本仍在製作中。

### REA 的分析都在離線環境中處理嗎？
REA 對分析對象的分析在本機進行。接收工具結果的代理程式可能使用外部模型。整體資料傳輸範圍須向所連接的服務確認。

### 可以將透過 REA 分析出的程式碼用於商業產品嗎？
取得分析結果，不代表因此取得使用權。須確認分析對象軟體的權利歸屬與授權條款，也請檢視適用法律及分析工具的使用條款。

### 如果 REA 是開放原始碼，分析也免費嗎？
REA 程式碼的授權條款與整體作業成本是兩回事。所連接的模型或商用分析工具可能產生費用。金額請查閱各提供者的收費標準與使用條款。

### 引用分析結果時，需要保留哪些資料？
請記錄分析對象的版本、檔案雜湊值與依據所在位置。分析工具的版本和比對測試結果也不可少。一併記錄未確認的條件，就能區分結論的適用範圍。

## Sources

- [REA 官方儲存庫 README：運作方式、支援對象、本機分析與模型資料政策](https://github.com/morluto/rea)
- [Ghidra 官方教學文件：Introduction to Ghidra](https://ghidra.re/ghidra_docs/GhidraClass/Beginner/Introduction_to_Ghidra_Student_Guide.html)
- [REA 官方案例：分析 Notion 的 Electron 剪貼簿處理流程](https://rea.tools/showcase/notion/)
- [REA 官方案例：重新實作 DX-Ball 的聲音位置計算並進行比較驗證](https://rea.tools/showcase/dx-ball/)
- [REA Tool Design：區分觀察、推導、推論與限制事項](https://github.com/morluto/rea/blob/main/docs/tool-design.md)
- [REA JavaScript Application Graph：依據、狀態、可信度與目標位置](https://github.com/morluto/rea/blob/main/docs/javascript-application-graph.md)
- [REA JavaScript Application Workflows：區分靜態關係與執行驗證](https://github.com/morluto/rea/blob/main/docs/javascript-application-workflows.md)
- [REA CLI and Evidence：紀錄保存、快照與結束狀態](https://raw.githubusercontent.com/morluto/rea/main/docs/cli.md)
- [REA Disclaimer：分析限制、使用權限與成果的權利](https://raw.githubusercontent.com/morluto/rea/main/DISCLAIMER.md)
- [OWASP MASWE-0004：應用程式套件中包含的敏感資訊及因應方法](https://mas.owasp.org/MASWE-0004/)

## Images

![開發者在筆電旁比較兩台平板上的球與擋板測試畫面。](https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mjk5NzksInB1ciI6ImJsb2JfaWQifX0=--2b1213d9736d5cae1ff35ed8e5e7db570784612e/ai-ab7036b9.webp)
![身穿深灰色毛衣的工程師正從小型電腦拔出藍色網路線。](https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mjk5ODUsInB1ciI6ImJsb2JfaWQifX0=--1f2adeb39e8cbbe1342eb9e3c6b1d619bea6e20f/ai-ccb48b79.webp)