系統定位
REA 是以 TypeScript 實作的 CLI 與本機 MCP 伺服器。它整合原生反組譯器、應用程式靜態分析及執行期觀察,讓 Agent 依證據追查功能,再撰寫與測試自己的實作。官方定義
適用任務:
追查 Electron 的 IPC 路徑。
理解封裝後的 JavaScript 模組。
檢查原生函式的組合語言與偽程式碼。
產出的程式碼仍須測試;靜態關係與未解事項限定了結論的範圍。
Agent 或終端機
- MCP
- CLI
共用分析工作流程
- EnhancedTools
- createWorkflowEvidence
分析工具
- Hopper
- Ghidra
- IDA
- JavaScript
- Browser
分析結果
- Evidence
- locations
- limitations
Evidence 保存以下資訊,供後續追蹤與比對:
目標摘要與來源位置。
觀察與推論。
分析限制。
安裝與驗證
- 未完成:
使用 Node.js 22.x(至少 22.19)、24.x(至少 24.11)或 26 以上版本,並備妥 npm。Node.js 23、25 與預發行版本不支援。
- 未完成:
靜態 JavaScript 分析只需支援的執行環境;原生分析需另備 Hopper、Ghidra 或 IDA。
- 未完成:
網站觀察需 Chrome 系瀏覽器;Android、韌體與其他工具鏈依下節需求準備。
以最新 npm 版本啟動設定精靈:
npx rea-agents@latest setup選取用戶端,檢視變更計畫並核准。精靈加入 MCP 註冊與相符的工作流程 Skill,備份既有設定;完成後重啟 Agent。支援表列出 17 個用戶端。安裝文件
用戶端範例:
Claude Code、Codex。
Cursor、Gemini CLI。
Pi、Hermes。
只檢查 Codex 註冊,或先查看修復計畫:
npx -y rea-agents@latest doctor --client codex --json
npx -y rea-agents@latest setup --client codex --dry-run --json需要固定的終端機指令時,安裝全域 CLI:
npm install --global rea-agents
rea --help
rea providers --json
rea capabilities --json核心能力
Native
open_binary
原生程式分析
透過 Hopper、Ghidra 或 IDA 取得偽程式碼、組合語言、字串、符號及參照;格式與主機支援依引擎而異。
JavaScript
analyze_javascript_application
JavaScript 與 Electron 結構
從目錄或 ASAR 建立應用程式圖譜,整理匯入、模組、來源映射與 IPC;靜態分析不執行應用程式。
Trace
trace_application_feature
功能路徑追蹤
以路由、字串、API、IPC 通道或模組為起點,追蹤已驗證圖譜中的關係與原生分析交接。
Compare
compare_application_versions
版本差異分析
比對兩份應用程式 Evidence;重複候選與不完整涵蓋範圍保留為歧義或未知。
Browser
inspect_web_page
網站結構與觀察
擷取頁面結構、指令碼與網路觀察;互動情境另外使用 capture_browser_scenario,並可能改變網站狀態。
Evidence
inspect_analysis_view
分析結果投影
從已完成的 Evidence 取得摘要或模組頁面;保留完整檔案供後續追蹤與比對。
MCP 名稱使用底線,對應 CLI 名稱使用連字號。多個引擎可用時,明確指定 --provider。CLI 指令
原生 CLI 指令:
analyze、search。function、decompile。xrefs、trace。
| 其他目標 | 輸出 | 額外需求 |
|---|---|---|
| .NET 組件 | 中繼資料、CIL、原生相依與版本比較 | 靜態讀取,無需原生分析引擎 |
| Android APK、裝置與資源 | Manifest、反編譯方法、裝置觀察與資源表 | JADX 與完整 JDK;裝置需 adb,資源需 Apktool |
| 韌體 | 區段、解包結果與原生分析交接 | Linux 上的 Binwalk 或 Unblob |
| HAR 與網路擷取 | 請求、回應、可取得的內容與來源位置 | HAR;原生 mitmproxy 擷取需 Linux 與 mitmdump |
| 程序行為 | 終端輸出、互動、結束狀態與檔案系統觀察 | Linux 或 macOS,需原生 PTY |
| ELF 與 Linux crash | 靜態配置、暫存器及映射候選 | Linux x64 與 pwntools;部分功能另需 GDB 或 pwndbg |
| WASM 與 EVM | WAT、匯入匯出或 bytecode dispatch | WASM 需 WABT 1.0.42;EVM 載體分析需 Linux x64 |
| JEB 專案 | 分析單元、摘要與型別/方法偽程式碼 | 自行啟動提供 MCP 的 JEB,用 REA_JEB_MCP_URL 選取 |
需求取自官方能力表。任務涉及特定主機或格式時,先檢查該工具的可用性與對應指南。
操作原則
工作階段與引擎
以 binary_session 檢查目前工具可用性。原生工作階段綁定所選引擎;明確選擇失敗時不會自動換用其他引擎。
MCP runtime contracts
靜態推論與執行觀察
可到達的程式關係不證明路徑曾執行。動態名稱、模糊化與不支援的語法保留為未知;缺少關係不證明行為不存在。
JavaScript application workflows
完整 Evidence 與閱讀摘要
將完整 JSON 存檔,再用 inspect_analysis_view 取得摘要。跨 CLI 呼叫需傳入已保存的 Evidence;MCP 保留參照屬於同一連線。
CLI and Evidence
版本比較的涵蓋範圍
只有另一份圖譜涵蓋完整時,單邊缺少項目才能判為新增或刪除;不完整輸入保留為未知。
JavaScript application workflows
重建功能前,要求 Agent 列出以下項目:
來源位置。
關係依據。
未解事項。
靜態推論。
執行期觀察。
重建後的測試結果。
操作範例
建立含 notes:search 通道的小型 Electron 程式碼樣本。此範例在 macOS、Node.js 22.23.1 與 REA 6.4.0 實測;只分析檔案,不啟動 Electron。
mkdir -p /tmp/rea-report-fixture
cat > /tmp/rea-report-fixture/package.json <<'JSON'
{"name":"rea-report-fixture","version":"1.0.0","main":"main.cjs"}
JSON
cat > /tmp/rea-report-fixture/main.cjs <<'JS'
const { ipcMain } = require('electron');
const { normalizeQuery } = require('./search.cjs');
ipcMain.handle('notes:search', (_event, query) => normalizeQuery(query));
JS
cat > /tmp/rea-report-fixture/search.cjs <<'JS'
exports.normalizeQuery = query => String(query).trim().toLowerCase();
JS
npx -y rea-agents@6.4.0 analyze-javascript-application /tmp/rea-report-fixture --json > /tmp/rea-report-evidence.json安裝 jq 後,讀取已保存結果的指定欄位:
jq '{operation, relevant_files: .normalized_result.statistics.relevant_files, parsed_javascript_files: .normalized_result.statistics.parsed_javascript_files, main_handlers: .normalized_result.summary.ipc.main_handlers, literal_channels: .normalized_result.summary.ipc.literal_channels}' /tmp/rea-report-evidence.json{
"operation": "analyze_javascript_application",
"relevant_files": 3,
"parsed_javascript_files": 2,
"main_handlers": 1,
"literal_channels": 1
}取得供閱讀的摘要,完整 Evidence 留在原檔:
jq -c '{source: {kind: "inline", evidence: .}, view: {kind: "summary"}}' /tmp/rea-report-evidence.json > /tmp/rea-report-view.json
npx -y rea-agents@6.4.0 inspect-analysis-view /tmp/rea-report-view.json本次結果辨識了樣本的靜態 IPC 結構。以下行為尚未驗證:
Electron 啟動。
通道註冊。
查詢結果。
權限檢查。
請另外執行應用程式並測試這些行為。範例所用契約
限制與注意事項
| 邊界 | 處理方式 |
|---|---|
| 本機分析與模型資料政策 | REA 在本機分析;Agent 會收到工具結果,模型供應商的資料政策仍適用。 |
| 大型結果與資源 | 完整應用程式 Evidence 可能達數百 MB;先存檔並投影摘要,再選取相關模組。 |
| 原生工具與平台 | Hopper 有獨立商業授權與 demo 限制;Windows Ghidra 屬實驗性支援,依引擎文件確認主機與格式。 |
| 執行時間與清理 | 用戶端逾時不一定停止引擎分析;檢查 analysis_activity 與 cleanup_incomplete,確認程序狀態。 |
| 推論與缺漏 | 靜態關係及反編譯結果需保留限制;不完整資料無法證明行為不存在或重建等價。 |
| 測試涵蓋 | 官方提供不同驗證層級及工具鏈測試;使用本機模型 fixture 的用戶端測試不等於真實模型 API 驗證。 |
後續操作
先完成靜態樣本分析,確認版本、Evidence 與摘要投影。
選取實際目標,限定一個功能及預期輸出;依工具可用性加入原生引擎或瀏覽器。
保存 Evidence 與來源位置,追蹤功能路徑;需要比對時,保留兩個版本的完整輸入。
將重建程式與驗收測試放入自己的專案,測試輸入邊界與已觀察的行為。
從靜態 CLI 開始可在不修改 Agent 設定的情況下評估 REA。需要持續對話與追查時,再完成 MCP 註冊;需要執行行為證據時,再配置對應擷取工具。