REA 於二零二六年四月開源,十月二十四日累積三十七萬六千四百零六顆星標與九萬四千零七十七個分支。它把 Hopper、Ghidra、IDA 等反編譯引擎包裝成模型上下文協定伺服器,讓代理直接檢視原生二進位、Electron 應用與 Android 套件。npm 套件近三十日下載六十三萬四千三百一十八次。

REA 儲存庫 README 開頭畫面,顯示專案名稱 REA: Reverse Engineer Anything、標語「One MCP for reverse engineering across binaries, applications, and runtime behavior」,以及 npm 版本與 MIT 授權徽章,下方為 GitHub Trending 單日第一的標記

REA 是什麼?

REA 是開源的逆向工程 MCP 伺服器,採 MIT 授權,主要語言為 TypeScript。它把反編譯與靜態分析工具統一成代理可呼叫的介面,分析在本機執行並附帶證據。

專案全名為 Reverse Engineer Anything,開發者帳號為 morluto,儲存庫建立於二零二六年四月十四日。它的定位是一條通用的檢視通道,把原本分散在圖形介面與命令列工具的逆向工程流程,改成代理可以反覆呼叫的問答形式。

設計上有兩個核心選擇。第一是把分析能力抽成 MCP 伺服器,代理不必理解各家反編譯器的操作方式,只要提出問題。第二是每項結論都要附帶證據,包含原始位址、反組譯片段與推論邊界,讓使用者能自行判斷可信度。

專案的主題標籤涵蓋 agent-skills、binary-analysis、decompiler、ghidra、hopper、mcp 與 reverse-engineering。這些標籤說明它不是單純的包裝層,而是針對代理工作流重新設計的檢視介面。

專案的成長速度有多快?

儲存庫在五個月內累積三十七萬六千餘顆星標與九萬四千個分支,八月曾登上 GitHub Trending 單日第一。npm 套件近三十日下載六十三萬次,最近七日三十九萬次。

這個速度在同類工具中並不常見。儲存庫四月建立,到十月二十四日已有三千三百餘位貢獻者與五千三百二十一次提交,分支數九萬四千零七十七,接近星標數的四分之一。分支比例偏高通常代表實際動手執行的使用者佔比高,而非僅止於收藏。

下載數據可以交叉印證。npm 套件 rea-agents 於七月十二日上架,近三十日下載六十三萬四千三百一十八次,其中最近七日佔三十九萬七千二百七十五次,相當於單週就有一半以上的月度流量。這種集中在近期的分佈,反映版本更新會直接帶動既有使用者重裝。

版本節奏同樣密集。十月十一日發布 6.4.0,十月十四日 6.5.0,十月十八日連出 6.6.0 與 6.7.0。官方在版本說明中直接建議使用者保持更新,並提供 rea update 指令處理全域安裝的升級。

REA 如何連接代理與逆向工具?

執行 npx rea-agents setup 會註冊 MCP 伺服器並寫入工作流指示,支援 Codex 與 Cursor。原生分析需 Hopper 或 Ghidra。

安裝流程刻意壓縮成一行指令。使用者選擇要設定的代理後,工具會先列出將要修改的設定檔並要求確認,再備份原有設定、寫入 MCP 註冊與工作流指示,最後提示重新啟動代理。這個順序讓使用者能在寫入之前檢查變更內容。

設定檔的處理方式在 6.7.0 有明確修正。當 JSON 或 JSONC 設定中出現重複成員時,安裝程式改為編輯最後一個成員,因為多數客戶端實際讀取的是該值。卸載時若移除某個成員會讓被遮蔽的重複項重新生效,工具會直接拒絕該次移除。

MCP 介面預設使用精簡的輸入結構描述,以降低上下文佔用。需要完整欄位說明與巢狀驗證細節時,可在註冊時設定 REA_MCP_INPUT_SCHEMA_PROFILE=full,兩種模式都保留完整工具集與伺服器端驗證。

它支援哪些分析目標?

涵蓋原生二進位、Go 與 Rust 執行檔、.NET 組件、Electron 應用、Android 套件、WASM 與韌體映像,並可解析封包與程序紀錄。

覆蓋範圍是這個專案最實質的部分。原生二進位分析輸出虛擬碼、組譯、字串、符號與呼叫關係,需搭配 Hopper、Ghidra 或 IDA 之一;六月以後加入 Kuna 作為另一個可指定的靜態分析提供者,並延伸 Ghidra 至 Windows ARM 的 PE 目標。

不需要反編譯引擎的項目同樣關鍵。Go 執行檔可讀出內嵌的編譯器版本、模組與建置設定;Rust 執行檔可取出 cargo-auditable 記錄的套件名稱與相依邊界;IL2CPP 中繼資料支援版本 24、27、29、31 與 39 的解碼;Godot 的 PCK 封裝可直接列出內容清單。

周邊格式也沒有被忽略。PE 憑證、ELF 註解、Apple 的 IPS 當機報告、Erlang BEAM 檔、SQLite 資料庫、HAR 與 SAZ 網路擷取,以及 PyInstaller 打包的執行檔,都各自有對應的檢視路徑。這種廣度讓同一套介面可以橫跨行動、桌面與嵌入式目標。

為什麼靜態分析比執行目標更安全?

靜態分析只讀取檔案內容,不會執行目標程式,JavaScript 與 .NET 檢視屬於此類。動態擷取則以使用者權限實際執行標的,官方要求先確認授權範圍再進行。

風險差異來自動作性質。靜態檢視把檔案當作資料解析,即使目標帶有惡意行為也不會被觸發;動態擷取則需要啟動程式、模擬輸入並記錄系統呼叫,每一步都在使用者的權限下進行。官方文件把兩者分開說明,並在每個動態流程的指引中描述其副作用。

環境依賴也隨之不同。原生分析需要外部反編譯器與足夠的記憶體,Android 分析需要 JADX 與完整的 JDK,韌體分析依賴 Binwalk 或 Unblob,封包解析需要 TShark。官方對大型二進位提供啟動逾時參數,例如 REA_GHIDRA_STARTUP_TIMEOUT_MS,避免分析在初始化階段被中斷。

本機執行是另一層保護。官方問答明言分析在本機完成,不上傳目標檔案;代理收到的是工具結果,之後如何處理取決於其模型供應商的資料政策。這句話把責任邊界劃得很清楚,也提醒使用者注意代理本身的資料流向。

代理時代的逆向工程有哪些爭議?

主要爭議在授權與用途。Hopper、IDA 與 JEB 屬商業軟體,須自行取得合法授權;官方限定合法研究、教育與互通性用途,並排除破解版本。

專案在這件事上的表態相當直接。README 末段列出商業工具的授權要求,明確指出專案本身不授予任何工具授權、序號或啟用權益,試用版與展示版仍受各家條款約束,包含自動化與輸出分享的限制。這段文字同時排除盜版與繞過授權的行為。

用途範圍也被限定。官方把適用場景寫成合法研究、教育、互通性、軟體保存,以及對自有或獲授權軟體的分析,並指向獨立的免責文件說明責任使用原則。這種寫法在開源逆向工具中並不常見,反映維護者對法律風險的判斷。

另一個風險來自供應鏈。README 開頭以顯著區塊提醒,只應從官方儲存庫、官方網站或 npm 套件取得工具,並指出名稱相似或抄襲說明文件的專案不能證明下載來源合法。當一個專案在五個月內衝上三十七萬星,仿冒與重新打包幾乎必然出現。

專案數據表現如何?

截至十月二十四日,星標三十七萬六千四百零六顆,分支九萬四千零七十七個,關注者一千三百餘人,未結問題一千二百一十三項,累積提交五千三百二十一次。

376,406星標數
94,077分支數
332貢獻者
MIT授權條款

REA 儲存庫首頁頂部,顯示 morluto/rea 專案名稱、Star 37.6 萬與 Fork 9.4 萬的統計,以及 Issue 594 與 Pull Request 619 的計數,下方為最新提交紀錄與專案描述

程式碼規模可以從儲存庫大小推估。專案佔用約十萬九千 KB,一級目錄包含 src、native、bridge、docs、examples、experiments、scripts、tests 與 website,另有 licenses 與 third_party 目錄集中管理第三方授權。這種分層說明專案同時維護分析橋接、原生模組與網站文件三條線。

REA 版本發布清單頁面,依序列出 rea-agents v6.7.0、v6.6.0、v6.5.0 與 6.4.0,顯示十月內連續四個版本的發布節奏

發布密度值得對照。三十個版本集中在數月之內,且 6.6.0 一次納入 Kuna 提供者、Windows ARM 的 PE 分析、原始 m68k 映像與 APK 多語系資源表。單一版本能同時推進四條技術線,說明維護團隊的並行能力,也解釋為何官方反覆要求使用者更新。

團隊導入前應注意什麼?

先確認 Node.js 達 22.23.4、24.22.1 或 26.12.1 以上,再準備對應的反編譯引擎授權。Linux 環境另需 procps 的 ps 指令。

第一項是版本門檻。官方要求 Node.js 22.x 至少 22.23.4、24.x 至少 24.22.1,或 26.12.1 以上,並需要 npm。Bun 使用者若採用全域安裝,升級工具本身需 1.2.17 以上版本,較舊的 Bun 必須先手動更新。

第二項是授權盤點。Ghidra 屬開源且免費,Hopper 與 IDA 需付費,JEB 亦同。團隊若只做 JavaScript、Electron 或 .NET 的靜態檢視,可以完全不涉商業授權,這條路徑對預算敏感的團隊最實際。

第三項是設定管理。安裝程式會修改代理的 MCP 設定檔,建議在版本控制下進行,或在執行前確認已有備份。企業環境另需考慮分析結果的存放位置,因為虛擬碼與字串可能包含目標程式的敏感內容。

出處連結有哪些?

專案位於 GitHub 的 morluto/rea 儲存庫,官網為 rea.tools,npm 套件名為 rea-agents。官方提醒只應從這三個來源取得工具。

儲存庫位址為 https://github.com/morluto/rea,網站為 https://rea.tools,套件頁面為 https://www.npmjs.com/package/rea-agents。官方文件另設 guides 與 showcase 分區,前者提供逐步操作指引,後者收錄三個完整案例。

案例本身具參考價值。DX-Ball 的聲道計算還原通過三千二百零五個原始 x86 測資,並重現全部六十三個編譯後函式位元組;Notion 的案例沿 Electron 的 preload 與 IPC 追到主程序的剪貼簿格式;TH04 則在 PC-98 的十六位元指令中還原固定角度與瞄準角度的計算。

總結:REA 適合哪些使用者?

需要理解第三方軟體行為的開發團隊、做互通性研究的工程師與資安分析人員最適合。只做網頁或指令碼層分析的個人使用者,可用靜態路徑避免商業工具成本。

這個專案解決的是一個具體摩擦。以往要回答「這個功能怎麼實作」,得在反編譯器裡手動翻找符號、比對呼叫路徑,再自行整理結論。REA 把這段流程改成可重複的提問,並要求每次結論都附上證據,讓推論過程可被檢查。

真正的門檻不在安裝,而在判讀。代理可以快速指出相關函式與呼叫關係,卻無法替使用者判斷某段程式碼是否構成侵權,也無法保證虛擬碼與原始行為完全等價。官方在免責聲明中劃出的界線,正好對應這個限制。

對台灣與東南亞的開發團隊而言,最實用的路徑是從靜態分析切入。JavaScript、Electron 與 .NET 的檢視不需要任何商業授權,卻已能回答多數互通性問題。等需求明確之後,再評估是否為原生分析購入 Hopper 或 IDA,會比事前採購更符合成本效益。