AI 工具 16 min read

REA 是什麼?24.7 萬星的 AI 逆向工程 MCP,我實測拆 Electron App

REA 是 morluto 在 2026 年 4 月開源的 MIT 專案,用 MCP 把 Hopper、Ghidra、IDA、JADX 等逆向工具接給 Claude Code、Codex,讓 agent 帶著證據分析 App 怎麼運作。我用 6.5.0 實測 Electron 範例,兩條 IPC 呼叫鏈全部配對正確、還會標出哪些只是候選——但要 Node 22.19+、setup 會改全域設定,原生二進位還得另裝反組譯引擎。

REA 是什麼?24.7 萬星的 AI 逆向工程 MCP,我實測拆 Electron App
本文目錄 · 7
懶人包:REA(Reverse Engineer Anything)是 morluto 在 2026-04-14 開源的 MIT 專案,npm 套件叫 rea-agents,用 MCP 把 Hopper、Ghidra、IDA、JADX 這類逆向工具接給 Claude Code、Codex。截至 2026-10-15 有 24.7 萬顆星、最新版 6.5.0。我用 6.5.0 對一個自己加了 IPC 功能的 Electron 範例跑靜態分析,它把 renderer → preload → main 的兩條呼叫鏈完整配對出來,連「哪些關係只是候選」都標清楚。要注意:它需要 Node 22.19 以上、setup 會寫進全域 ~/.claude.json,原生二進位分析還得另外有反組譯引擎。

我是在 Instagram 上看到一支 reel 介紹這個工具,說法是「跟 Claude Code 講一句話,它就會去拆那個 App」。這句話聽起來很神,所以我把 repo clone 下來讀文件,再用 CLI 實際跑一次,看它到底交出什麼。

REA 是什麼?

REA 是一個 MCP server 加 CLI。MCP(Model Context Protocol)是 AI agent 呼叫外部工具的標準介面,REA 做的事是把一堆既有的逆向工程工具包成 agent 能叫的工具,再附一份「怎麼調查」的 skill 指示給 agent。

README 的定位寫得很直白:看到某個 App 的功能,想知道它怎麼運作,就請 agent 用 REA 去查。agent 拿到的是有證據的分析結果,再由 agent 解釋、寫出自己的實作、跑測試。

我在 2026-10-15 查到的專案狀態:

項目數值來源
Repomorluto/rea,MIT,TypeScriptGitHub API
建立日期2026-04-14GitHub API
Stars/Forks247,362/62,010GitHub API
最新版rea-agents 6.5.0(2026-10-14 發布)GitHub release、npm
Commit 數3,234,貢獻者 228 人本機 git log
npm 週下載231,579(10/06–10/12)npm downloads API
Open issues811GitHub API
reel 裡說的是「17 萬多顆星」,我查的時候已經 24.7 萬,這個數字漲得很快,看到時請以 GitHub 頁面為準。

官方網站是 rea.tools。README 特別提醒只認 GitHub morluto/rea、rea.tools 跟 npm 的 rea-agents 三個來源,名字相近的 repo 或抄來的 README 都不算官方。

REA 可以分析哪些東西?

README 的支援表很長,我挑一般開發者最可能碰到的幾類:

目標REA 回傳什麼需要什麼
JavaScript/Electron App模組、import、source map、IPC、preload 與 contextBridge 關係只要 Node.js
原生二進位(Mach-O、ELF、PE)偽代碼、組合語言、字串、符號、呼叫關係Hopper、Ghidra 或 IDA 擇一
.NET 組件metadata、CIL 指令、原生相依不用額外工具
Android APKManifest、類別、反編譯後的方法無頭模式 JADX + 完整 JDK
網站頁面結構、script、網路請求、截圖Chrome 系瀏覽器
已存的網路封包request、response、payload 來源HAR 或 Fiddler SAZ 檔
重點在第一列:靜態 JavaScript 與 Electron 分析不需要任何反組譯引擎,裝了 Node 就能跑,這也是最容易驗證的入口。原生二進位才需要 Hopper、Ghidra、IDA;其中 Hopper 和 IDA 是商業軟體,Hopper 的免費 demo 有原廠限制,REA 不附任何授權。

怎麼安裝 REA 到 Claude Code?

官方安裝只有一行:

npx rea-agents setup

它會讓你勾選要設定哪些 agent(Claude Code、Codex、Cursor、Gemini CLI 等),列出要改的檔案,你同意後才寫入,改之前會先備份。裝完要重啟 agent。

前置需求:Node 版本

README 寫的是 Node.js 22.x(≥22.19)、24.x(≥24.11)或 26 以上。我機器預設的 node 是 v18.12.1,所以我用 nvm 切到 v24.18.0 才跑。

node -v   # 要 v22.19+、v24.11+ 或 v26+
nvm use 24

setup 實際會改什麼?

我沒有直接套用,先用 --dry-run 看計畫:

npx -y rea-agents@6.5.0 setup --client claude_code --dry-run

輸出的計畫有兩個動作(節錄):

status: planned
plannedActions[2]:
  - id: "configure_client:claude_code"
    target: /Users/<you>/.claude.json
    detail: "Add the REA MCP registration for Claude Code; preserve unrelated configuration. ...
             Command: \"npx\" \"-y\" \"rea-agents@6.5.0\" \"mcp\". ..."
    backupPath: /Users/<you>/.claude.json.rea.backup
  - id: "install_skill:claude_code"
    target: /Users/<you>/.claude/skills/reverse-engineer-anything
appliedActions: []

也就是說,它在 ~/.claude.json 加一筆 mcpServers.rea,並把 skill 裝進 ~/.claude/skills/reverse-engineer-anything。這是全域設定,之後你開的每個 Claude Code 專案都看得到 REA 的工具。官方安裝文件有一節專講只給單一專案或獨立 profile 用的做法,不想全域就照那節走。

同一份輸出裡的 doctor 區塊也顯示我機器上 Ghidra、IDA、JADX 都是 not_configured,所以這次我只測不需要引擎的 JavaScript 分析。

我怎麼實測 REA 的 Electron 分析?

我要確認的是 reel 那句「把功能怎麼運作、證據在哪裡整理給你」到底兌不兌現。所以測試目標要是我知道答案的東西,才能對答案。

我拿 Electron 官方的 electron-quick-start(CC0 授權)當底,自己加了一個「筆記搜尋」功能:

// preload.js:把 API 暴露給網頁
contextBridge.exposeInMainWorld('notes', {
  search: (query) => ipcRenderer.invoke('notes:search', query),
  save: (note) => ipcRenderer.send('notes:save', note)
})

// main.js:主程序處理 IPC
ipcMain.handle('notes:search', (_event, query) =>
  notes.filter((n) => n.includes(query))
)
ipcMain.on('notes:save', (_event, note) => {
  notes.push(note)
})

// renderer.js:網頁端呼叫
window.notes.save('hello rea')
window.notes.search('rea').then((hits) => console.log(hits))

這是典型 Electron 功能的資料流:網頁端呼叫 → preload 暴露的 API → IPC 頻道 → 主程序的 handler。

invoke 'notes:search'

send 'notes:save'

renderer.js
window.notes.search()

preload.js
contextBridge 'notes'

main.js
ipcMain.handle

main.js
ipcMain.on

然後跑:

npx -y rea-agents@6.5.0 analyze-javascript-application /absolute/path/to/target-ipc --json > ipc.json

第一次對原版 quick-start 跑花了 2 分 38 秒,第二次對加了功能的版本跑是 30 秒。輸出是一份完整的 JSON evidence,加了功能的版本約 490 KB。

它找到了什麼?

我寫了一小段 Python 把 JSON 裡的 summary 和關鍵關係抽出來:

REA analyze-javascript-application 對 Electron 範例的分析結果摘要,顯示 contextBridge API、兩個 IPC handler 與 renderer 呼叫的配對

跟我寫的程式碼逐項對:

我寫的REA 回報對不對
1 個 exposeInMainWorld('notes')context_bridge_apis: 1、exposes api_key: notes對
暴露 search、save 兩個成員exposed_api_members: 2對
notes:search 用 invoke/handleinvokes 配對到 main.js 的 handle對
notes:save 用 send/onsends 配對到 main.js 的 on對
renderer 呼叫 window.notes.*calls entry: notes.search / notes.save,標 candidate對,但標為候選
原版 quick-start 沒有任何 IPC,REA 回報的 ipc.operations 是 0,context_bridge_apis 也是 0,沒有亂生關係出來。

它怎麼標示「不確定」?

這是我覺得 REA 設計最紮實的地方。每份結果都帶 confidence、authority 和一串 limitations。這次的結果是 confidence: derived、authority: shipped-artifact,limitations 裡明寫:

  • JavaScript 和 HTML 被當成惰性文字解析,bundle 的啟動程式碼從沒被執行。
  • Electron 關係是從語法推出來的,執行期是否真的註冊、是否可達都未證明。
  • 動態或混淆過的表達式可能解不出來,找不到不代表不存在。
renderer 那兩條 calls 標的是 candidate,而 preload 到 main 的 IPC 配對標的是 unique-exact-literal-channel(頻道字串完全一致且唯一)。它把「確定配上」和「推得出來但沒證明」分開講,agent 拿到這份資料時就知道哪些話能說滿。

REA 有什麼限制?

它是給 agent 的證據,不是給你的程式碼。原生分析回傳偽代碼和組合語言,JS 分析回傳模組關係,真正寫出「自己的版本」的是 agent。README 的 FAQ 也是這樣定義的。

靜態分析的天花板很明顯。我的範例頻道名都是字串常數,所以能精準配對;真實商業 App 經過打包、壓縮甚至混淆,頻道名可能是動態組出來的,這時 REA 會照實標成 unresolved,而不是瞎猜。

我只驗了 CLI,沒驗 agent 對話流程。這次我沒有真的執行 setup,所以「在 Claude Code 裡講一句話」那條路我沒跑。CLI 和 MCP 用的是同一套 workflow(README 這樣寫),但 agent 怎麼串多次呼叫、花多少 token,我沒有數據。

分析在本機,模型不在本機。REA 本身不上傳你的目標檔案,但 FAQ 也講明:agent 拿到的工具結果會送給模型供應商,適用對方的資料政策。分析公司內部程式前要想清楚。

版本變動快。一個月內進了兩千多個 commit,release 是 6.x,README 自己也叫你常跑 rea update。要寫進腳本就把版本釘死,例如 rea-agents@6.5.0。

法律邊界:哪些事 REA 明確不幫

reel 最後一句「記得只用在自己有權限分析的軟體」不是客套。REA 的 DISCLAIMER 列得很清楚,它不支援:繞過 DRM、授權檢查、反作弊,做外掛,繞過認證或存取控制,以及複製專有軟體或重製它受保護的程式碼與素材。

所以「看到別人 App 的功能就照著做一個」這件事,合理的範圍是理解運作原理後自己重新設計實作,不是把對方的程式邏輯搬過來。各國對逆向工程的法律規範不同,軟體的授權條款也可能直接禁止,這部分要自己確認,REA 不替你負責。

什麼情況值得裝 REA?

適合:

  • 分析自己的 Electron App,快速畫出 IPC 與 preload 的暴露面,做安全檢查。
  • 研究開源或你有授權的軟體,想讓 agent 幫你從二進位層面理解某段邏輯。
  • CTF、資安研究、惡意程式分析這類本來就在用 Ghidra 的工作,想讓 agent 幫忙串工具。
不適合:
  • 想拿到別人產品的「原始碼」。它不會給你,而且 DISCLAIMER 明說不支援。
  • 只是想看某個網站的前端怎麼寫。瀏覽器 DevTools 就夠了,不用多裝一個全域 MCP。
想先試水溫,我建議跟我一樣從 CLI 開始:
npx -y rea-agents@6.5.0 analyze-javascript-application /absolute/path/to/your-electron-app --json > result.json

拿自己的專案跑一次,對照你知道的答案,看它找得準不準,再決定要不要 setup 進 Claude Code。

延伸資源

author
陳
陳彥彤

AI 工程師 · AI 顧問。Java 後端 8 年、AI 工程師 2 年。AI 內訓 · AI 導入顧問 · 前後端與雲端培訓。

support

覺得文章有用可以到 GitHub 給個 star,或是透過信箱聊聊 AI 內訓、AI 導入顧問或前後端 / 雲端培訓。

related

相關文章

[AI 工具] · 17min
REA 實測混淆 JS:小恐龍速度規則全挖出,381KB 大檔卻撞上 2 萬節點上限
照 IG 影片的小恐龍題目,我把自寫的恐龍遊戲用 esbuild 壓縮混淆成 552 bytes 交給 REA 6.8.0,7 秒產出語意圖,初速 6、每幀 +0.001、上限 13 全對上原始碼。但不給證據 Claude 也答得出來,而同一段程式埋進 381KB bundle 時,REA 的語意圖撞到每檔 20,000 節點上限、常數節點 0 個——它的價值在可追溯的證據,大檔要先看 truncated 再下結論。
[AI 工具] · 21min
讓 Claude 自己配音效:Openverse 找素材、earshot 聽檢,實測從錯位 823 毫秒修到 3 毫秒內
IG 上流傳用 Openverse、MMAudio、earshot 三個工具讓 Claude 自己找音效、配上、再自己聽檢,我做了一支撞擊點已知的測試片把三個都跑了一遍。素材直接疊會錯位最多 823 毫秒還爆音,加上量得出來的合格條件讓它自動修一輪,偏差降到 3 毫秒內——關鍵是檢查迴圈,不是工具本身。
[AI 工具] · 15min
Archify 是什麼?Claude Skill 讀程式碼畫互動架構圖,實測每個方塊都對回原始碼行號
Archify 是 tt-a1i 開源的 agent skill(Apache-2.0、約 9 萬星):AI 讀程式碼寫成 JSON,它驗過後輸出可點擊、可匯出 PNG/SVG/WebM 的單檔架構圖。我拿 14 個元件的 line-talk 實測,4 分鐘出圖、每個方塊都對回 commit 與行號——但它是快照,私有 repo 公開前要另外去敏。