AI 智能體能逆向工程你的應用嗎?
REA——Reverse Engineer Anything——是一個開源 MCP 伺服器和命令列工具,讓程式設計智能體操作專業的逆向工程軟體:將智能體指向一個已發布的應用或二進位檔案,它就會用真正的反編譯器檢查程式碼,把某個功能的工作方式寫成規格,重建該功能,再將重建結果與原件進行核對。它在 2026 年 10 月成為 GitHub 上成長最快的專案之一,並改變了一個老事實的經濟學:任何在使用者機器上執行的東西,都能被該使用者讀取。本文解釋 REA 到底是什麼、它驅動的工具堆疊、使其輸出可信的工作流程,以及發布軟體的開發者應該如何應對。
REA 是什麼
REA(儲存庫為 morluto/rea,採用 MIT 授權,透過 npm 以 rea-agents 的名義安裝)本身不是反編譯器。它自己不反編譯任何東西。它是一個編排層,使用模型上下文協定(Model Context Protocol)——與本站從網站一側處理同一問題的 智能體就緒度工作所用的介面相同——並將逆向工程操作暴露為 Claude Code、Codex 或 Cursor 等程式設計智能體可以呼叫的工具:反組譯這個二進位檔案、反編譯這個函式、列出字串、追蹤交叉參照、展示證據。繁重的工作由它底層的引擎完成,智能體驅動這些引擎的方式就像人類分析師一樣,只是它可以不計成本地做到窮盡。
這種分工正是關鍵所在。反編譯器的輸出龐大且大多枯燥;逆向工程中稀缺的技能從來不是執行工具,而是決定接下來看什麼,以及知道一個答案何時已被證明。REA 將引擎與工作流程指令配對——按固定順序調查、為每個主張記錄證據、說明哪些內容無法解決——因此智能體的輸出不是一堆虛擬碼,而是一組附有憑證的發現。對於原生二進位檔案,它驅動 Ghidra、IDA Pro 或 Hopper;對於 Android 套件,它驅動 JADX;對於即時行為,它可以讀取 HAR 和 mitmproxy 擷取。一套介面,多個引擎,而智能體提供耐力。
一張圖看懂技術堆疊
分析核心。 Ghidra 是美國國家安全局免費的、採用 Apache-2.0 授權的反編譯器,也是大多數人的預設引擎;IDA Pro 是許多專業人士仍然偏愛的商業老牌工具。新鮮之處不在於這兩個工具本身,而在於它們的橋接:GhidraMCP 和 ida-pro-mcp 透過 MCP 將正在執行的 Ghidra 或 IDA 工作階段暴露給智能體,使智能體可以直接查詢反組譯資料庫,而不是看截圖。REA 位於它們之上一層,負責選擇引擎並安排工作順序。
行動端與應用。 jadx 將 Android APK 反編譯回可讀的 Java;Apktool 解包 APK 的資源和 smali 並能重新建構它;Frida 對正在執行的應用進行插樁,在函式執行時掛鉤它們——這是靜態反編譯看不到的動態一半;ILSpy 則為 .NET 組件做 jadx 為 APK 所做的事。(如果想免安裝先看一眼 APK 的宣告而非程式碼,本站的 APK Analyzer 可在你的瀏覽器中讀取其資訊清單、權限和簽章憑證。)
二進位與底層。 radare2 及其更友善的分支 rizin 是可指令碼化、以終端機為先的逆向工程框架;x64dbg 是大多數分析師首選的 Windows 偵錯器;ImHex 是帶有用於描述檔案格式的模式語言的十六進位編輯器;angr 是一個符號執行引擎,能推理一個函式的每一條路徑,而不只是一次執行。這些是用來回答反編譯器難以回答的問題的工具:加殼的二進位檔案、古怪的檔案格式、「這個輸入到底能不能到達那個分支」。
網路與執行環境。 mitmproxy 位於應用與其伺服器之間,記錄雙方的對話——對許多應用來說,API 流量比程式碼更能說明問題,而且它是 REA 原生讀取的擷取格式。dnSpy 即時偵錯和編輯 .NET 應用程式,raddebugger 是 Epic 為 Windows 打造的現代圖形偵錯器。圍繞這一切的是地圖:兩份精選清單,awesome-ai-reverse-engineering(122 個智能體時代的儲存庫,每一個都經過閱讀和評分)和 REA 作者自己的 awesome-reverse-engineering,都連結在下方的來源中。
淨室循環:規格、重建、驗證
REA 鼓勵的工作流程比 AI 更古老:它是淨室工程,這門學科曾被用來在不複製的情況下複製 BIOS。智能體調查目標並寫出 SPEC.md——一份以通俗語言說明軟體功能的規格,並為每種行為附上證據。只有在此之後,才從規格而非反編譯程式碼出發開始重建,並根據驗收標準評判重建結果:相同的輸入、相同的輸出、相同的邊界情況。當評判說不時,循環回到證據——而不是猜測——並再次調查。
這就是為什麼有趣的產物是規格,而不是虛擬碼。附有證據的規格可以被第二個智能體、測試套件或人類檢查;原始的反編譯結果則三者皆不可查。這也是具有法律意義的一步:根據行為規格重建與複製一種實作是不同的行為,這就是為什麼該循環堅持證據和標準而非感覺。任何評估智能體工具的人——無論是用於逆向工程還是其他用途——都應該借鑑這一模式:交付物是經過驗證的主張,而不是自信的答案。
如果你發布軟體,這意味著什麼
這一切都不會讓用戶端程式碼變得秘密;它從來都不是秘密。它只是讓讀取它變得便宜。一位熟練的分析師使用 Ghidra 一直都能從你的應用中擷取 API 端點、功能開關和授權邏輯——REA 級別的工具意味著一位初級人員加一份智能體訂閱就能在一個下午完成第一遍。實際後果是老生常談,只是期限更短了:嵌入已發布二進位檔案中的秘密——API 金鑰、私有端點、那條唯一的折扣規則——實際上等於已經公開;混淆提高了閱讀成本,但只是延遲,不是屏障;任何你的業務賴以保密的東西都必須放在你的伺服器上,放在身分驗證之後,而不是放在應用裡。
防禦措施同樣樸實無華,而且確實有效:將秘密和定價/授權決策放在伺服器端,簽發短期、範圍受限的權杖而非永久金鑰,在風險值得時使用平台完整性證明(Play Integrity、App Attest),並在設計濫用控制時假設你的用戶端行為完全可觀察。這與本站 智能體就緒度的教訓互為鏡像:在那裡,重點是智能體會讀取你網站面向機器的表面,無論你是否設計過它;在這裡,智能體以同樣的方式讀取你應用的二進位檔案。在這兩種情況下,制勝之舉都是有意識地決定面向機器的表面要說什麼。
合法用途——以及界線
逆向工程有光榮的、既定的用途,REA 自己的文件也列出了同一份清單:分析你自己的軟體(包括你遺失了原始碼的那一份副本)、安全研究與漏洞分析、惡意軟體與事件調查、互通性——讓你的產品與另一個產品協同工作——CTF 競賽以及教育。在許多司法管轄區,其中一些用途甚至受到保護,即便授權條款聲稱禁止它們,尤其是互通性和善意的安全研究,儘管細節各有不同,而且本文不是法律建議。
界線同樣清晰。工具上的 MIT 授權不是目標上的授權:它不授權從競爭對手的二進位檔案中複製其產品、擊敗 DRM 或授權執行機制、或散布你擷取的內容。上一節的淨室循環正是為了讓重建停留在那條線的正確一側——行為和證據,而不是複製的實作。本站自己的分析工具也在微觀層面採取同樣的立場:靜態、本機、唯讀、不執行、不規避——只是第一眼,而繁重且法律敏感的工作則留給能夠為其負責的工具和人。
親自試一試
REA 需要 Node.js 22 或更高版本;一條命令——npx rea-agents setup——就能向它找到的程式設計智能體註冊其 MCP 伺服器並安裝配套的工作流程指令,REA 自己的 doctor 命令會檢查每個引擎(原生二進位檔案必須安裝 Ghidra 等原生引擎;JADX 涵蓋 APK)。將它指向你擁有的軟體或你有權檢查的樣本——你寫的一個小工具是完美的第一個目標——並問它某個功能是如何工作的。在閱讀任何虛擬碼之前先讀它產生的規格:證據連結才是真相所在。
如果你想要第一步的零安裝版本,那正是本站 Binary File Inspector 的用途:將 PE、ELF 或 Mach-O 檔案拖入頁面,在瀏覽器中讀取其標頭、區段、匯入和字串——不上傳、不執行、無需工具鏈。它不會反編譯任何東西,而且它明說了這一點;它是五分鐘的分診,告訴你完整的 REA 處理是否值得設定,以及應該用哪個引擎。
來源與延伸閱讀
- REA — morluto/rea (GitHub)
- Ghidra — NationalSecurityAgency/ghidra (GitHub)
- GhidraMCP — LaurieWired/GhidraMCP (GitHub)
- ida-pro-mcp — mrexodia/ida-pro-mcp (GitHub)
- jadx — skylot/jadx (GitHub)
- Apktool — iBotPeaches/Apktool (GitHub)
- Frida — frida/frida (GitHub)
- mitmproxy — mitmproxy/mitmproxy (GitHub)
- awesome-ai-reverse-engineering — zhuyansen (GitHub)
- awesome-reverse-engineering — morluto (GitHub)