AI

REA 不是反編譯器,是反編譯器的仲介層:跟直接叫 AI 猜差在哪,證據鏈到底長什麼樣

2026年10月12日
3 分鐘閱讀
REA 不是反編譯器,是反編譯器的仲介層:跟直接叫 AI 猜差在哪,證據鏈到底長什麼樣

REA 是什麼:它不反編譯,它是幫 AI agent 排工具的那一層

很多人第一次看到 REA(Reverse Engineer Anything)會以為它是一套新的反編譯器。不是。它自己不拆任何執行檔,而是把你電腦裡原本就有的 Hopper、Ghidra、IDA、JADX、adb、binwalk 包起來,做成一組命令列指令加一個 MCP server,讓 AI coding agent 叫得動。MCP 是 AI 助理與外部工具之間的共通插座,插上去,助理就知道怎麼下指令叫工具。

GitHub 專案首頁,可見專案名稱、星數與目錄結構,用來判斷專案規模與文件完整度。
▲ GitHub 專案首頁,可見專案名稱、星數與目錄結構,用來判斷專案規模與文件完整度。

官方把它定位成「反編譯器的仲介層」,本身不具備反編譯能力。它支援 17 種 coding agent,包括 Claude Code、Codex、Cursor、Gemini CLI、Windsurf 等,6.4.0 版更加入 Hermes 與 Qwen Code 的 setup。

差別在哪?以前叫 AI 猜一支程式在做什麼,它只能靠檔名瞎編;現在是拿真工具跑出真結果,再整理成一份有出處的報告。

舉個具體例子:分析 Android APK 會叫 JADX 反編譯,原生執行檔會叫 Ghidra 跑虛擬碼。每條結論都標明是觀察、推導、推論還是未知,並附上信心值與 provider 名稱。

三層架構:誰負責什麼

  • 上層是你的 AI coding agent,Claude Code、Codex、Cursor 都算,負責聽你說話、決定要查什麼。
  • 中間是 REA,也就是編排層。它挑對工具、下對參數,把各家長得完全不一樣的輸出統一成同一種證據格式。
  • 底層是真正的分析引擎,Ghidra、Hopper、JADX、Apktool 都算,真正拆開檔案的是它們,功勞不在 REA。

官方架構圖把 provider 分成深度分析(Hopper、Ghidra、IDA、JEB)與輔助(JADX、adb、Apktool、binwalk、pwntools)兩類。CLI 與 MCP server 共用同一套引擎,兩邊能做的事一模一樣。

官方在 AGENTS.md 寫得很白:觀察、推導、推論、未知必須分開標記,而且「失敗、未知、不支援、截斷、跳過,永遠不得聚合成通過」。這是它跟「叫 AI 猜」最大的分野。

實際運作上,每次結果會存成結構化證據(Evidence v2),可匯出、重新匯入、跨版本 diff。官方舉例,Obsidian 的完整證據檔約 334 MB,投影成 summary view 後只剩約 10 KB。

專案數據都查得到:儲存庫 morluto/rea 採 MIT 授權,主要語言 TypeScript,2,228 次提交、約 82 位貢獻者,最新版 6.4.0 於 2026 年 10 月發布。命令列與 MCP server 共用同一套引擎,做的事一模一樣(來源:GitHub 專案頁、npm registry,2026)。

社群熱度也很猛:三天內從兩萬星漲到七萬六千星以上,單日新增超過兩萬五千星。npm 套件近 30 天下載 39,702 次,安裝只需 Node.js 22.19 以上或 24.11 以上。

證據鏈長什麼樣:觀察、推導、推論、未知,四種東西分開放

大部分人用 AI 查陌生程式,拿到的是語氣很像專家的猜測。REA 把每次分析拆成四類分開存放,每條都附信心值與 provider(哪個逆向工具交出來的),你一眼能看出哪句是工具真的看到、哪句只是推測。

官方頁面,功能定義、文件入口與產品定位。
▲ 官方頁面,功能定義、文件入口與產品定位。

這四類就是 Evidence v2 的實際資料結構:每筆結果除了分類標籤,還綁著信心值與 provider 名稱,這條結論是 JADX、Ghidra 還是 adb 交的都查得到。證據可匯出成 JSON、重新匯入,也能跨版本 diff,看出某條推論何時出現、何時被降級成未知。

四類資訊,為什麼不能混在一起

  • 觀察:工具實際看到的,例如某函式真的呼叫了剪貼簿。
  • 推導:從觀察算出來的,例如把一段位移還原成數學式。
  • 推論:合理但未證明,例如推測登入碼每 30 秒輪替。
  • 未知:明確標示沒查到,不假裝有答案。

官方在 AGENTS.md 把規則寫死:失敗、未知、不支援、被截斷,一律不得聚合成「通過」(來源:AGENTS.md,2026)。

官方案例:觀察與推測的距離

Aegis 驗證器是 Android 應用,REA 追出六位數登入碼算法後把展示時鐘往前移,驗證 30 秒輪替一次。Notion 剪貼簿屬 Electron,從頁面 API 追到 IPC 包裝層再到系統剪貼簿,靠觀察 HTML 標記與 rich block 資料的連結(來源:REA 官方案例頁,2026)。

另外三案更能看出分層用意:DownUnderCTF 是原生二進位,先觀察檢查函式裡的遮罩運算與加總,再推導還原成方程式解出 flag,並回頭用原始程式驗證;DX-Ball 從 1996 年 Windows 遊戲還原音場計算,寫成 C 函式後對照全部 63 個編譯位元組確認一致;TH04 彈幕則從 PC-98 DOS 的 16 位元角度輔助函式還原成 C++。三案裡跳出觀察的那一步都被單獨標成推論,事後用實驗補證。

案例證明的是工作流程可重現,不是「按一顆按鈕解開任何程式」;拿到報告先看哪些條目標成未知,那裡通常要另外排時間。社群最常補的一刀是「行為不等於實作」:能模仿外部行為,卻推不出內部的快取策略、衝突解決順序、離線資料模型。因此 provider 欄位不是裝飾:不同工具給的推論層級常不一致,交叉比對才看得出哪條站得住。

動手跑一次:一行 npx 就能分析 JavaScript,證據檔太大再投影

REA 支援 15 類目標,JavaScript、Electron、.NET 三類不需付費工具,裝好 Node.js 就能跑;付費工具只有原生執行檔需要(來源:REA README、installation.md,2026)。

registry.npmjs.org 的官方頁面(/rea-agents),說明這項功能的設定方式與可用選項。
▲ registry.npmjs.org 的官方頁面(/rea-agents),說明這項功能的設定方式與可用選項。

REA 不是反編譯器,是「反編譯器的仲介層」:把 Hopper、Ghidra、IDA、JADX、adb、binwalk、Apktool 包成 CLI 加 MCP server,供 AI coding agent 呼叫。AGENTS.md 要求區分 observation、derivation、inference 與 unknown,且 fail、unknown、unsupported、truncated、skipped 不得聚合成 pass。最新版 6.4.0(2026-10-11 發布),npm 套件名 rea-agents,近 30 天下載約 39,702 次(來源:npm registry、AGENTS.md)。

npx -y rea-agents@latest analyze-javascript-application /絕對路徑 --json

--json 回傳結構化資料:模組、import 關係、source map、路由、IPC(應用程式內部模組互相呼叫的通道)與原生外掛關聯。官方案例:Notion 剪貼簿沿 IPC 追到系統剪貼簿;Aegis 驗證器(Android APK,六位數登入碼、30 秒輪替)、DownUnderCTF(原生二進位)、DX-Ball 音場(對照全部 63 個編譯位元組)與 TH04 彈幕(PC-98 DOS)(來源:rea.tools/showcase/,2026)。

證據檔太大,先存檔再投影

實測 Obsidian 證據檔約 334 MB,塞不進 agent 上下文。官方解法先存檔再投影:投影後只剩約 10 KB,少掉 3 萬多倍(來源:cli.md,2026)。

rea analyze-javascript-application /path/to/app --json > app-evidence.json

jq -c '{source:{kind:"inline",evidence:.},view:{kind:"summary"}}' app-evidence.json > app-view.json

rea inspect-analysis-view app-view.json

三個自我診斷指令能問出什麼

跑不起來時先問這三個:rea doctor 檢查環境、rea providers 列出接上的分析引擎、rea capabilities 回報能處理哪幾類目標,三個都加 --json。若 rea providers 顯示 Ghidra 缺席,原生執行檔分析會歸類為 unsupported。SECURITY.md 明講「這不是沙箱」,執行時捕捉會用你的使用者權限真的跑目標程式,分析結果會進到 agent 的模型供應商。

安裝硬規則:Node.js 只支援 22.x(>=22.19)、24.x(>=24.11)與 26 以上,23、25 版及所有 prerelease 都不在清單;原生分析主機基線是 macOS 12+、Ubuntu 24.04+、Fedora 41+、Nobara 44+、64 位元 Arch Linux、CachyOS、Omarchy;Windows 僅支援 Ghidra,標示實驗性 P0。安裝腳本先顯示變更計畫、要求核准(預設 No)並備份設定,不會順手升級 Node.js、npm、Homebrew 或 Java。Ubuntu 22.04 或 CentOS 系不在支援基線內(來源:installation.md,2026)。

17 個 client ID:Claude Code、Claude Desktop、Codex、Cursor、Gemini CLI、Windsurf、Devin、OpenCode、Antigravity、GitHub Copilot CLI、Command Code、Qwen Code、VS Code、Grok Build、OMP、Pi、Hermes。6.4.0 CHANGELOG 明寫「Added Pi, Hermes and Qwen Code setup, including Hermes active-profile support」(來源:installation.md、CHANGELOG.md,2026)。

每次成功結果存成 Evidence v2:observation 是工具看到什麼、derivation 是從觀察算出什麼、inference 是合理但未證明什麼、unknown 標示沒查到的部分;信心值與 provider 名稱都記錄,證據可匯出、重新匯入、跨版本 diff(來源:AGENTS.md、rea.tools/faq/)。

限制:行為不等於實作,推不出內部快取策略、衝突解決、離線資料模型;反編譯程式碼缺乏設計脈絡;對已有逆向方法論的人,價值是省下工具串接時間;深度調查很吃 token,成本另計(來源:dev.to/arshtechpro,2026)。

替代方案有限公司觀點:它在台灣團隊的工作流該擺在哪個位置

我們用自己的工作機實測過,Linux Mint 22.3(Ubuntu 24.04 基底)搭 Node v22.23.3,對照官方需求清單是合格的,跑 JavaScript 與 Electron 靜態分析沒有卡關,不必為了試用換一套作業系統。

REA 官方網站首頁,可見工具定位、安裝指令與主要功能入口。
▲ REA 官方網站首頁,可見工具定位、安裝指令與主要功能入口。

我們認為 REA 該擺的位置很明確,就是「已經決定要用逆向工具,但不想每次手工串接」的那一層。它把 Ghidra、Hopper、JADX 包成統一介面,讓 AI 助理直接呼叫,並把每次調查整理成同一種格式。對台灣團隊真正的價值是紀錄長得一樣、可以跨版本比對,交接時不必再問「上次那個結論是怎麼來的」。

老實說,它不會讓沒有逆向方法論的人突然會逆向。對已經有方法論的人,它省下的是工具串接時間,不是能力躍升。

三個台灣團隊會撞到的現實條件

  • 作業系統基線比想像中高。官方支援 Ubuntu 24.04 以上,不少台灣公司還停在 22.04 或 CentOS 系。
  • Windows 只能算半套。原生執行檔分析仍標示為實驗性,官方只保 Ghidra 一條路,Node.js 23 與 25 也不支援。
  • 它不是沙箱,也不完全本機。官方在安全文件明講這不是沙箱,執行時會用你自己的權限真的去跑目標程式,分析結果會進到 AI 模型供應商,深度調查的 token 成本要另外算。

我們的落地建議是先挑一個沒有機密的自家舊專案,走不用付費工具的 JavaScript 或 .NET 類別,跑一輪完整的證據匯出與版本比對,確認團隊真的用得上,再考慮原生執行檔那條需要花錢或花時間設定的路線。

限制與取捨:官方自列的三類限制,加上跟 Ghidra、IDA、Hopper 的分工

REA 值得信任的地方,是官方自己在安全文件把限制講白,沒有過度承諾。三類限制要先看清楚,再決定要不要用。

REA 官方 Get Started 頁,列出安裝步驟與第一次分析的實際操作方式。
▲ REA 官方 Get Started 頁,列出安裝步驟與第一次分析的實際操作方式。

第一類是沙箱。官方明講「這不是沙箱,也不防禦已在你帳號下執行的惡意程序」。第二類是資料流向:執行時捕捉會用你自己的使用者權限真的去跑目標程式,分析結果也會進到 AI 代理的模型供應商,等於內容出了你的機器。第三類是平台支援,Windows 的原生分析仍標示為實驗性,Node.js 23、25 版不支援,macOS 若缺少特定授權則無法擷取。社群另外補一刀:它模仿得出外部行為,卻推不出內部的快取策略與離線資料模型,而且深度調查很吃 token,成本要另外算。

跟 Ghidra、IDA、Hopper 的分工

Hacker News 上最多人問的一句是「這跟直接叫 Claude 裝 Ghidra 有什麼不同」。差別在 REA 是編排層,不是反編譯器。它負責選工具、下參數、把結果整理成帶信心值的證據鏈,真正的反編譯還是交給以下幾套:

  • Ghidra:開源免費,預算有限時的第一選擇
  • IDA:業界標準,專業版價格高,REA 以唯讀方式接它
  • Hopper:macOS 生態主力,個人授權 99 歐元,一次買斷
  • Binary Ninja:個人版 199 美元,本身沒有代理編排層

已經有一套逆向方法論的人,裝 REA 主要是省下工具串接時間,不是能力躍升。反過來說,如果你的需求只是 JavaScript、Electron 或 .NET,這三類完全不需要付費工具,也不需要 Ghidra,那麼上述限制對你的影響就小很多,先用這條路線試水溫最划算。

常見問題 FAQ

Q:這跟我直接把程式碼貼給 AI 問「這支程式在幹嘛」,差在哪?
最大的差別是,REA 交出來的不是一段聽起來很像的猜測,而是一條可以回頭查證的證據鏈。它本身不做反編譯,而是把 Hopper、Ghidra、IDA、JADX 這些現成逆向工具包成一個 CLI 加一個 MCP server,讓 AI agent 直接呼叫,再把結果整理成統一格式。每個結論都會標明這是「觀察到」的、「推導出來」的、還是只是「推論」,沒查到的部分更會老實標成 unknown,並附上信心值。官方原則寫得很白:fail 和 unknown 永遠不得聚合成 pass。所以社群也提醒,它能模仿外部行為,卻推不出內部為什麼這樣設計。

Q:裝了之後,我分析的檔案會不會被傳到外面去?
要分兩段來看。分析本身是在你自己的機器上跑,但官方 SECURITY.md 自己也寫明,分析結果會進到 agent 的模型供應商,並不是完全不出門。也就是說,被分析目標裡的字串、符號這些內容,有機會跟著 agent 的對話一起送出去。另外官方也直說「這不是沙箱」,執行時捕捉會真的用你的使用者權限去跑目標程式,並不防禦已經在你帳號下執行的惡意程序。所以如果是要拿它跑外部交付的二進位檔做稽核,這件事最好先想清楚。

Q:我只是想分析自己公司的東西,一定要花錢買工具嗎?
看你要分析哪一類。如果是 JavaScript、Electron 或 .NET 這三類,完全不需要額外付費工具,裝好 Node.js 就能跑,CLI 也有 analyze-javascript-application 這類指令可以直接下。真正要花錢或花時間設定的只有原生執行檔那一類,得自備 Hopper、Ghidra 或 IDA,其中 Ghidra 是免費開源的,Hopper 個人版 99 歐元,IDA 另有 Home 授權。環境上要留意 Node.js 需 22.19 以上或 24.11 以上,Windows 原生分析官方只標示為實驗性支援,Linux 則要 Ubuntu 24.04 以上。

📩 有任何問題或需要協助,歡迎聯絡我們:[email protected]

REA 官方教學頁,示範一次完整調查的輸出,以及觀察與推論分開存放的證據格式。
▲ REA 官方教學頁,示範一次完整調查的輸出,以及觀察與推論分開存放的證據格式。

Related

延伸閱讀