跳至主要內容

工具與應用

REA 逆向工程工具解析:如何透過 MCP 串接 AI 代理與底層分析軟體

本文解析開源逆向工程工具 REA(Reverse Engineer Anything)的核心架構與運作方式。REA 透過 Model Context Protocol(MCP)將 AI 代理連接至 Hopper、Ghidra 與 IDA 等分析工具,支援原生二進位檔案、Electron 應用、Android APK 與韌體等多種目標的靜態分析與動態追蹤,協助開發者深入理解軟體實作細節並取得完整證據鏈。

REA 逆向工程工具解析:如何透過 MCP 串接 AI 代理與底層分析軟體

本文解析開源逆向工程工具 REA(Reverse Engineer Anything)的核心架構與運作方式。REA 透過 Model Context Protocol(MCP)將 AI 代理連接至 Hopper、Ghidra 與 IDA 等分析工具,支援原生二進位檔案、Electron 應用、Android APK 與韌體等多種目標的靜態分析與動態追蹤,協助開發者深入理解軟體實作細節並取得完整證據鏈。

軟體開發與安全研究過程中,理解第三方應用程式或舊系統的底層運作邏輯,往往需要耗費大量時間手動操作反組譯器與偵錯工具。開源專案 morluto/rea GitHub 儲存庫 提出了一套整合方案,讓 AI 代理能夠透過標準通訊協定,直接調度各類逆向工程引擎與分析指令。

什麼是 REA:連結 AI 代理與底層分析工具的橋樑

REA(Reverse Engineer Anything)是一套基於模型上下文協定(Model Context Protocol,簡稱 MCP)打造的本機逆向工程伺服器。開發者可以透過 REA 官方網站 取得完整指引,將 Claude Code、Cursor、Codex 等支援 MCP 的代理工具與 REA 連接。

以往透過語言模型輔助逆向時,使用者通常必須手動從反組譯器匯出組合語言或虛擬碼,再貼進對話視窗提問。這種方式容易遺失上下文,也無法讓模型進一步探索關聯函式。REA 則將逆向工具封裝為代理可呼叫的函式介面,讓 AI 代理能夠根據初步發現,自主發起追蹤查詢與代碼比對。

REA 的運作機制與分析流程

REA 的核心精神在於「證據導向」。代理在分析軟體時,所有推論都必須附帶底層的原始依據,包含指令偏移量、字串參照或呼叫堆疊。

從自然語言提問到程式碼證據鏈

當使用者向 AI 代理提出分析需求時,代理會將高階問題拆解為具體的檢查步驟,並透過 MCP 呼叫 REA 的工具集合。

REA 執行分析後,會回傳結構化的發現與對應證據,例如:

  • 函式反編譯產生的虛擬碼與組合語言。
  • 記憶體中的特定字串、符號表與外部匯入項目。
  • 跨模組的呼叫關係與參照位址。

代理接收這些回傳資料後,可以進一步提出深入問題,或直接驗證演算法實作邏輯。

本機端靜態分析與執行階段動態追蹤

REA 在架構上區分了靜態檢查與執行階段擷取。靜態分析(例如檢視 JavaScript 模組或 .NET 中繼資料)只會讀取檔案結構,不會啟動目標應用程式。

若分析需求涉及程序執行階段行為,REA 則會在使用者本機環境中,依據目前的權限執行被測程式,捕捉終端機輸出、檔案系統異動與網路請求。所有分析程序均在本機端完成,目標軟體的程式碼與二進位檔案不會被傳送至第三方伺服器。

支援的分析目標與工具整合

REA 涵蓋的目標範圍從高階網頁應用一直延伸到底層韌體,不同類型的分析對象需要搭配對應的主機環境與輔助工具。

原生二進位檔案與韌體分析

針對編譯後的原生執行檔,REA 能與業界常見的反編譯軟體搭配運作:

  • Hopper Disassembler:支援 macOS 與 Linux,可在安裝流程中經使用者確認後由腳本安裝。
  • Ghidra:透過呼叫端現有的安裝環境執行,支援多種 CPU 架構與 16 位元 DOS 程式分析。
  • IDA Pro 與 Hex-Rays:支援現有的 IDA 環境,供進階原生分析使用。
  • 韌體映像檔:在 Linux 環境中整合 Binwalk 與 Unblob 工具,自動解包檔案系統分區並轉交原生引擎深入檢視。

針對 Linux ELF 檔案的離線分析與崩潰記錄,呼叫端可搭配 pwntools、GDB 或 pwndbg,擷取暫存器狀態與防護機制設定。

現代應用程式與行動裝置環境

除了編譯二進位檔案,REA 也原生支援現代應用程式框架的拆解:

  • Electron 與 JavaScript:解析已解包的目錄或 ASAR 封裝檔,還原模組匯入關係、IPC 通訊邊界與 Source Map。
  • .NET 程式集:讀取 Common Intermediate Language(CIL)指令與中繼資料,比對原生動態連結函式庫依賴。
  • Android 應用與裝置:搭配 JADX 與 Java 執行環境反編譯 APK 清單與方法,或透過 Android Debug Bridge(ADB)直接觀察實體裝置上的處理程序與記錄檔。
  • 瀏覽器與網路封包:透過 Chrome 系列瀏覽器擷取網頁腳本與 DOM 結構,或讀取 HAR 檔案分析 API 請求與酬載。

實際應用案例

REA 的開發社群展示了數個完整的逆向分析與重建案例:

  1. 經典 PC 遊戲音效演算重建:針對經典打磚塊遊戲《DX-Ball》的立體聲位置計算函式進行追蹤,由組合語言還原至 C 語言程式碼,成功通過 3,205 個原始 x86 測試案例並精確復現 63 個編譯位元組。
  2. Electron 剪貼簿橋接追蹤:分析 Notion 桌面版的剪貼簿機制,從前端渲染層的 API 出發,順著 preload 腳本與 IPC 訊息追蹤至主處理程序,釐清富文字資料格式的傳遞途徑。
  3. 復古遊戲彈幕軌跡計算:分析 PC-98 平台 DOS 遊戲《東方幻想鄉》(TH04)的 16 位元組合語言,還原固定角度與瞄準角運算邏輯,並與歷史編譯器的輸出結果相互對照。

常見問題

哪些 AI 工具可以搭配 REA 運作?

只要支援 Model Context Protocol(MCP)本機伺服器的 AI 代理或編輯器環境,都能與 REA 串接。常見的工具包括 Claude Code、Cursor、Gemini CLI、Codex 等。使用者只需執行 npx rea-agents setup 指令,即可完成設定並安裝對應的工作流程指引。

使用 REA 分析原生程式時,是否必須購買商業反編譯軟體?

不一定。如果僅需分析 JavaScript、Electron 封裝或 .NET 程式集,REA 內建的分析模組即可獨立運作,不需要任何原生反編譯引擎。若需要分析 C/C++ 等編譯出的原生二進位檔案,可以使用開源的 Ghidra 作為分析後端,未持有 Hopper 或 IDA Pro 授權的開發者依然能夠進行原生分析。

分析應用程式時,REA 會將程式碼上傳到雲端嗎?

不會。REA 本身是一個在本機端運行的 Node.js 服務,所有的反組譯、檔案解包與動態追蹤都在使用者電腦上完成。不過,AI 代理在接收到 REA 產生的虛擬碼與分析摘要後,會將這些文本回傳給該代理所屬的模型服務商(例如 Anthropic 或 OpenAI),實際資料處理政策取決於使用者所選用的 AI 模型平台。

結語

REA 透過標準通訊協定,將傳統相對獨立且操作複雜的逆向工程工具整合成可由程式自動調度的工作流。無論是研究軟體架構、排查相容性問題,還是重構無原始碼維護的舊系統,這種以證據為基礎的輔助分析方式,都為工程人員提供了更具系統性的探索途徑。

謝謝你,讀到這裡。

保持好奇,明天繼續探索。

© 2026 Communeify. All rights reserved.