不用買 Hopper 也不必碰 IDA:REA 跑 JavaScript 與 Electron 靜態分析,把 334MB 證據檔縮成 10KB

目錄
共 13 個章節
REA 到底是什麼:它不負責反編譯,只是幫 AI 挑工具的中介層
REA 本身不做反編譯,只像總機,把 Hopper、Ghidra、IDA、JADX、adb、binwalk 包起來,讓 AI 用同一種方式呼叫。架構三層:上層是 Claude Code、Codex、Cursor、Hermes 等 AI 代理,中間 REA 負責編排與證據模型,下層是 Hopper、Ghidra、IDA、JEB 等分析供應器。

專案 morluto/rea 以 TypeScript 撰寫、採 MIT 授權,2026 年 4 月 14 日建立,10 月 11 日累積約 76,785 顆星,三天內從兩萬衝到七萬六,單日最高新增 25,793 星。npm 套件 rea-agents 近 30 天下載約 39,702 次,最新版 6.4.0 於 10 月 11 日發布,原始說明見 morluto/rea 專案。
它提供功能相同的兩個介面:終端機指令 rea 與 MCP server,MCP(模型上下文協定)就是讓 AI 助手直接叫用外部工具的插座。相容的 AI 代理有 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 更新紀錄寫「Added Pi, Hermes and Qwen Code setup, including Hermes active-profile support」,可直接註冊進 Hermes 並支援 active profile 切換。
安裝前先確認 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。
三類完全不用付費工具的目標
REA 支援 15 類目標,只有三類例外:
- JavaScript 應用:只要 Node.js 與 npm
- Electron 桌面程式:同樣只要 Node.js 與 npm
- .NET 組件:純靜態分析,連額外工具都不用
其餘:原生執行檔要 Hopper、Ghidra 或 IDA;離線 ELF 要 Linux x64 加 pwntools;EVM bytecode 要 Linux x64;Linux 當機紀錄要 pwntools(選配 GDB/pwndbg);網站要 Chrome 系瀏覽器;封包紀錄要 HAR,Linux 上用 mitmdump;Android APK 要無頭 JADX 加完整 JDK;Android 裝置要 adb;Android 資源要 Apktool;韌體要 binwalk 或 unblob;封裝與資源、程序行為用內建與原生 PTY。真正要花錢的只有原生執行檔:Ghidra 免費,Hopper 個人版 99 歐元、單機 129 歐元,Binary Ninja 個人版 199 美元、商業版 1,799 美元,JEB 需自行啟動本地 MCP 服務。REA 的 setup 可代裝 Hopper,但要使用者核准;Ghidra 與 IDA 一律自備。
每次分析都會存成結構化證據,分四類:觀察(observation)、推導(derivation)、推論(inference)、未知(unknown)。官方原則「fail、unknown、unsupported、truncated、skipped 永遠不得聚合成 pass」;信心值與 provider 名稱都記在裡面,可匯出、重新匯入、跨版本 diff。證據檔過大時用 jq 投影,Obsidian 案例從 334 MB 壓成約 10 KB。
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
限制也講得白:SECURITY.md 明寫「這不是沙箱」,執行時捕捉會用你的使用者權限真的跑目標程式,分析結果也會進到 agent 的模型供應商。Hacker News 有 720 分、311 則留言,社群普遍認為它的價值是省下工具串接時間,不是能力躍升。
裝好 Node.js 就能開工:環境需求與哪些目標不用花錢
Node.js 是讓 JavaScript 在電腦上直接執行的環境,REA 本身是 TypeScript 寫的 Node 工具。官方要 22.19 以上的 22 版、24.11 以上的 24 版、26 版以後;23、25 與 prerelease 不支援。「以上」指同主版本內的小版:22.18 不行、22.19 可以。用 nvm 就 nvm install 22、nvm use 22,裝完 node -v 確認(來源:官方安裝說明,2026 年)。

原生分析的主機基線是 macOS 12+、Ubuntu 24.04+、Fedora 41+、Nobara 44+ 與 64 位元 Arch Linux、CachyOS、Omarchy;台灣常見的 Ubuntu 22.04 與 CentOS 都不在清單內。Windows 只支援 Ghidra 且標示實驗性。裝完先跑 rea doctor --json 看 Node 版本與已註冊 provider,再跑 rea capabilities --json 確認這台機器能做哪幾類分析。
只有原生執行檔那一類要另外準備工具
15 類目標中,JavaScript、Electron 與 .NET 完全免費,裝好 Node.js 就能開工;要另備 Hopper、Ghidra 或 IDA 的只有原生執行檔。其餘靠既有工具:離線 ELF、EVM bytecode、Linux 當機紀錄要 Linux x64 加 pwntools,Android APK 要無頭 JADX 加 JDK、裝置要 adb、資源要 Apktool,韌體在 Linux 上用 binwalk 或 unblob,網站與封包紀錄用 Chrome 系瀏覽器或 HAR。
| 目標類型 | REA 回傳什麼 | 要準備什麼 |
|---|---|---|
| JavaScript、Electron | 模組、source map、IPC 關係 | Node.js 與 npm,免費 |
| .NET 組件 | metadata、CIL 指令、原生依賴 | 純靜態,免費 |
| 網站、封包紀錄 | 頁面結構、請求與回應 | Chrome 系瀏覽器,免費 |
| 原生執行檔、韌體 | 虛擬碼、組語、字串、呼叫引用 | Ghidra 免費,Hopper 付費 |
Ghidra 由 NSA 開源釋出、完全免費;Hopper 個人授權 99 歐元、單機 129 歐元,一次買斷;IDA 專業版價格高昂、另有 Home 授權;Binary Ninja 個人 199 美元、商業 1,799 美元。REA 不代裝 Ghidra 與 IDA,Hopper 可在核准後代裝,Linux 上會先驗證官方 .deb、.rpm 或 Arch 套件。最低成本零元,前提是用 Ghidra。
安裝腳本會先顯示變更計畫、要求核准(預設 No)並備份設定,也不會順手升級 Node.js、npm、Homebrew 或 Java。旗標有 --dry-run、--version、--no-setup、--no-prompt、--verbose,在 CI 等無人流程特別實用。
接進 coding agent 同樣零成本。支援 17 種 client: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;Grok Bot 得從對話加入。6.4.0 版更新紀錄寫「新增 Pi、Hermes 與 Qwen Code 的設定支援,含 Hermes 的 active profile」。skills.sh 上的 REA skill 只裝指令說明、不含 MCP 註冊。
JavaScript 類證據檔容易膨脹,官方舉例 Obsidian 證據檔約 334 MB,餵不進 agent 上下文。先落地再投影成摘要只剩約 10 KB:npx -y rea-agents@latest 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。原始證據留著可回溯,agent 只看精簡版。
實機操作:把一個 Electron 應用拆成模組、IPC 與原生外掛
假設手上有一個打包好的 Electron 應用(客戶交付的舊系統也行),不用反編譯器、不用付費工具,裝了 Node.js 就能跑這行:

npx -y rea-agents@latest analyze-javascript-application /絕對路徑/到/應用程式 --json
版本要挑對:Node.js 22.19 以上、24.11 以上或 26 以上;23、25 與所有 prerelease 不支援。先跑 node -v 確認。這步不需管理員權限,也不會順手升級系統裡的 Node、npm 或 Java。
平台主戰場是 macOS 12 以上,以及 Ubuntu 24.04、Fedora 41、Nobara 44、64 位元 Arch、CachyOS、Omarchy。Windows 在原生執行檔只支援 Ghidra 且標示實驗性 P0;但 Electron 靜態分析不吃原生引擎,Windows 照跑,這是入門選 JavaScript 的好處。
六個欄位,六種問答
- 模組清單與 import 關係:哪個檔案依賴哪個檔案。
- source map:打包壓縮後的檔名行號能對回原始檔名。
- 路由:應用有哪些頁面或功能入口。
- IPC 通道:Electron 畫面層與系統層怎麼傳話,最常藏問題。
- 原生外掛關係:哪些功能是外掛的原生模組(
.node檔),最難改。 - 信心值與未知標記:官方原則「fail 與 unknown 永遠不得聚合成 pass」,沒查到就明說。
官方在 AGENTS.md 明訂每筆結果拆成觀察、推導、推論、未知四類,信心值與 provider 名稱都記在裡面。所以拿到的不是「這個應用會連去某台伺服器」,而是「在某 IPC 通道觀察到一次呼叫,來源是某檔案某行,信心值高,但實際連線未經執行驗證」。
Notion 剪貼簿案例追的是頁面 API 經 IPC 包裝層到系統剪貼簿的路徑,用 HTML 標記與 rich block 資料佐證。
不確定環境準備好沒,先跑自我診斷:rea doctor --json、rea providers --json、rea capabilities --json。先看 capabilities 再決定要不要裝 Hopper 或 Ghidra。
證據檔會非常大。官方舉 Obsidian,完整應用程式證據檔約 334 MB,餵不進 AI agent 的對話視窗。解法是先落地成檔案,再投影成摘要檢視:
jq -c '{source:{kind:"inline",evidence:.},view:{kind:"summary"}}' app-evidence.json > app-view.json
接著交給 agent:rea inspect-analysis-view app-view.json。投影後只剩約 10 KB,約原始檔案的萬分之一。這個「先存檔、再投影」的順序記錄在官方 CLI 文件裡。
分析在本機跑,但證據會送進 agent 背後的模型供應商。反編譯他人的二進位,等於把別人控制的字串餵進 agent。官方 SECURITY.md 直說:這不是沙箱,執行時捕捉是用你自己的使用者權限真的去跑目標程式。
替代方案有限公司觀點:這條證據鏈能信到什麼程度
REA 把每次分析結果存成「證據」,標記分四種。觀察是工具真的看到的,例如字串與函式名稱;推導是從觀察算出來的,例如把位移量還原成公式;推論是合理但未證明的猜測;未知是它明講「這裡我沒查到」。每條都附信心值與工具名稱。

讀法很簡單:推論與未知就當待辦,不要當結論。看到一大包漂亮 JSON 就下判斷,是最常見的踩坑。
「不確定」不得被美化成「通過」
官方在AGENTS.md寫明,失敗、未知、不支援、被截斷、被跳過的結果,永遠不得聚合成「通過」。翻成白話:AI 不會幫你把「我不確定」說成「沒問題」。這是整個專案最關鍵的設計,也是它跟「直接叫 AI 猜」最大的差別。後者語氣堅定,前者會把不確定的地方標出來。
它自己承認的限制
- 它不是沙箱,官方明講不防禦已在你帳號下執行的惡意程式。
- 執行時捕捉會用你的使用者權限,真的把目標程式跑起來。
- 分析結果會進到模型供應商,不是完全不出門。
- Node.js 23 與 25 不支援,Windows 原生分析仍屬實驗性。
我們的判斷是這樣:如果你本來就有逆向方法論,多這一層主要是省下串接工具的時間,不是能力升級。純手工操作 Ghidra 的人不會被取代,反而更容易看出它哪裡在胡說。但團隊若沒人熟悉反編譯流程,它確實能把「叫 AI 猜」變成有紀錄可查。什麼情況不值得?目標只有一支小程式,或只想確認它連去哪裡,看封包更快。台灣團隊要落地,建議先從 JavaScript 與 .NET 這兩類免付費目標練手,選一個不影響產線的內部小專案試跑兩週,確認證據格式符合你們的稽核習慣,再往原生執行檔推進。
台灣團隊的四個起手場景與費用對照
把鏡頭拉回台灣。多數團隊不會閒著去逆向別人的軟體,真正會碰上的,是手上這幾種有點尷尬的處境。以下四個場景兩週內就看得到成果,前三個不用花錢。
四個起手場景與對應路線
- 客戶交付的舊系統沒有原始碼:卻得先摸清它怎麼跟外部溝通。若是 Electron 或 JavaScript 寫的,裝好 Node.js 就能起手,不必買工具;REA 會把模組、路由與行程間通訊(IPC,同一台電腦上兩個程式互相傳話的機制)列成清單。
- 交接的軟體沒有文件:規格只能靠行為觀察補。在 Linux 或 macOS 上把它實際跑起來,記錄終端輸出、互動過程與檔案異動再跨次比對。官方講得很白,它會用你的使用者權限真的執行目標程式,請在隔離測試機上做。
- 內部資安稽核要確認程式連去哪裡:看封包最快,但想知道程式碼裡寫死了哪些網址與字串,就得進靜態分析。JavaScript、Electron 與 .NET 三類完全免費。
- 自家產品新舊版本差異比對:把兩版證據各存一份再比,比人工翻差異穩定。官方文件舉例,Obsidian 的完整證據檔約 334 MB,投影成摘要檢視只剩約 10 KB,這招是控制成本的關鍵。
付費工具怎麼選
| 工具 | 費用 | 適用時機 |
|---|---|---|
| Ghidra | 免費,開源 | 預算為零、能接受介面樸素 |
| Hopper | 個人版 99 歐元,一次買斷 | 工作機是 macOS,想少一點設定 |
| Binary Ninja | 個人版 199 美元 | 重視反編譯可讀性與外掛生態 |
| IDA | 專業版價格高 | 團隊本來就有,接唯讀介面 |
還有一件常被忽略的事:深度調查很吃 token。反編譯結果動輒數十萬字,整包塞進 AI 代理的上下文,帳單會很有感,這筆成本要跟工具授權費分開算。建議先從 JavaScript 或 .NET 這類免費目標練手,再決定要不要買授權。費用來源:Binary Ninja 官方購買頁(2026)與 Ghidra 開源專案。
常見問題 FAQ
Q:想跑這個,是不是一定得先買 Hopper 或碰 IDA?
不用。文章裡說得很清楚,只要做 JavaScript、Electron 或 .NET 這三類,完全不需要額外付費工具,電腦裝好 Node.js 就能跑。REA 本身是「反編譯器的仲介層」,它把 Hopper、Ghidra、IDA 這些既有逆向工具包起來給 AI agent 呼叫,自己不做反編譯。真正要花錢或花時間設定的只有原生執行檔那一類,那時才需要 Hopper(個人授權 99 歐元)或 IDA;Ghidra 是 NSA 釋出的開源工具,免費。所以入門路線是先拿手上的 Electron 應用來試,用指令跑 JavaScript 靜態分析,不用先買任何授權。
Q:分析的時候,我的資料會不會被傳出去?
要分兩件事看。REA 的分析是在你自己的機器上跑,但官方講得很白:分析結果會進到 agent 的模型供應商,不是完全不出門。另外 SECURITY.md 也明寫「這不是沙箱,也不防禦已在你帳號下執行的惡意程序」,而且執行時捕捉會用你的使用者權限真的去跑目標程式。所以如果你要分析的是別人的二進位檔,等於把對方控制的字串餵進 agent,這點要有心理準備。比較保險的做法,是拿自家產品或 CTF 練習題先試,別一開始就把客戶交付的機密檔案丟進去。
Q:證據檔大到 AI 吃不下怎麼辦?
官方有示範一招:先存檔再投影。Obsidian 完整應用程式的證據檔大約 334 MB,投影成 summary view 之後只剩約 10 KB。做法是先用 CLI 的 analyze-javascript-application 加 –json 把結果寫成檔案,再用 jq 組成 summary view,用 rea inspect-analysis-view 讀取。這樣 agent 拿到的是濃縮摘要,不是全部原始證據。背後原因是 REA 每次結果都會存成結構化證據,內含觀察、推導、推論、未知四類資訊,所以可以選擇只餵摘要給模型,需要細節時再回頭查原始檔。
📩 有任何問題或需要協助,歡迎聯絡我們:[email protected]
Related





