使用手冊

實戰手冊

REA 逆向工程

REA 的安裝、CLI 與 MCP 架構、原生與 JavaScript 分析能力,以及可重現的 Electron 靜態分析範例。整理版本差異、執行權限與證據限制。

morluto/rea
星標
—
分支
—
授權
MIT
資料截至
—
閱讀時間
7 分
更新日期
補充摘要與數據

REA 將逆向工程工具接到 Agent,回傳程式結構、行為觀察與證據。從靜態 JavaScript 分析開始,再依目標加入原生分析引擎或執行期擷取。

npm 版本
6.4.02026-10-12 查核
設定支援的 Agent 用戶端
17
原生分析引擎選項
3
REA 授權
MIT

01用途與架構

系統定位

REA 是以 TypeScript 實作的 CLI 與本機 MCP 伺服器。它整合原生反組譯器、應用程式靜態分析及執行期觀察,讓 Agent 依證據追查功能,再撰寫與測試自己的實作。官方定義

適用任務:

  • 追查 Electron 的 IPC 路徑。

  • 理解封裝後的 JavaScript 模組。

  • 檢查原生函式的組合語言與偽程式碼。

產出的程式碼仍須測試;靜態關係與未解事項限定了結論的範圍。

  1. Agent 或終端機

    • MCP
    • CLI
  2. 共用分析工作流程

    • EnhancedTools
    • createWorkflowEvidence
  3. 分析工具

    • Hopper
    • Ghidra
    • IDA
    • JavaScript
    • Browser
  4. 分析結果

    • Evidence
    • locations
    • limitations

CLI 與 MCP 共用分析工作流程;CLI 每次呼叫使用獨立工作階段,MCP 則保留連線內的工作階段。CLI 實作;MCP 註冊

Evidence 保存以下資訊,供後續追蹤與比對:

  • 目標摘要與來源位置。

  • 觀察與推論。

  • 分析限制。

02環境與連線

安裝與驗證

  • 未完成:

    使用 Node.js 22.x(至少 22.19)、24.x(至少 24.11)或 26 以上版本,並備妥 npm。Node.js 23、25 與預發行版本不支援。

  • 未完成:

    靜態 JavaScript 分析只需支援的執行環境;原生分析需另備 Hopper、Ghidra 或 IDA。

  • 未完成:

    網站觀察需 Chrome 系瀏覽器;Android、韌體與其他工具鏈依下節需求準備。

以最新 npm 版本啟動設定精靈:

bash
npx rea-agents@latest setup

選取用戶端,檢視變更計畫並核准。精靈加入 MCP 註冊與相符的工作流程 Skill,備份既有設定;完成後重啟 Agent。支援表列出 17 個用戶端。安裝文件

用戶端範例:

  • Claude Code、Codex。

  • Cursor、Gemini CLI。

  • Pi、Hermes。

只檢查 Codex 註冊,或先查看修復計畫:

bash
npx -y rea-agents@latest doctor --client codex --json
npx -y rea-agents@latest setup --client codex --dry-run --json

需要固定的終端機指令時,安裝全域 CLI:

bash
npm install --global rea-agents
rea --help
rea providers --json
rea capabilities --json

03目標與工具選擇

核心能力

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 與 EVMWAT、匯入匯出或 bytecode dispatchWASM 需 WABT 1.0.42;EVM 載體分析需 Linux x64
JEB 專案分析單元、摘要與型別/方法偽程式碼自行啟動提供 MCP 的 JEB,用 REA_JEB_MCP_URL 選取

需求取自官方能力表。任務涉及特定主機或格式時,先檢查該工具的可用性與對應指南。

04官方契約與證據

操作原則

工作階段與引擎

以 binary_session 檢查目前工具可用性。原生工作階段綁定所選引擎;明確選擇失敗時不會自動換用其他引擎。

MCP runtime contracts

靜態推論與執行觀察

可到達的程式關係不證明路徑曾執行。動態名稱、模糊化與不支援的語法保留為未知;缺少關係不證明行為不存在。

JavaScript application workflows

完整 Evidence 與閱讀摘要

將完整 JSON 存檔,再用 inspect_analysis_view 取得摘要。跨 CLI 呼叫需傳入已保存的 Evidence;MCP 保留參照屬於同一連線。

CLI and Evidence

版本比較的涵蓋範圍

只有另一份圖譜涵蓋完整時,單邊缺少項目才能判為新增或刪除;不完整輸入保留為未知。

JavaScript application workflows

重建功能前,要求 Agent 列出以下項目:

  • 來源位置。

  • 關係依據。

  • 未解事項。

分別記錄以下證據,保留各自的驗證範圍。圖譜工作流程;MCP 契約

  • 靜態推論。

  • 執行期觀察。

  • 重建後的測試結果。

05可重現的靜態分析

操作範例

建立含 notes:search 通道的小型 Electron 程式碼樣本。此範例在 macOS、Node.js 22.23.1 與 REA 6.4.0 實測;只分析檔案,不啟動 Electron。

bash
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 後,讀取已保存結果的指定欄位:

bash
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
REA fixture result
{
  "operation": "analyze_javascript_application",
  "relevant_files": 3,
  "parsed_javascript_files": 2,
  "main_handlers": 1,
  "literal_channels": 1
}

取得供閱讀的摘要,完整 Evidence 留在原檔:

bash
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 啟動。

  • 通道註冊。

  • 查詢結果。

  • 權限檢查。

請另外執行應用程式並測試這些行為。範例所用契約

06權限、成本與驗證邊界

限制與注意事項

邊界處理方式
本機分析與模型資料政策REA 在本機分析;Agent 會收到工具結果,模型供應商的資料政策仍適用。
大型結果與資源完整應用程式 Evidence 可能達數百 MB;先存檔並投影摘要,再選取相關模組。
原生工具與平台Hopper 有獨立商業授權與 demo 限制;Windows Ghidra 屬實驗性支援,依引擎文件確認主機與格式。
執行時間與清理用戶端逾時不一定停止引擎分析;檢查 analysis_activity 與 cleanup_incomplete,確認程序狀態。
推論與缺漏靜態關係及反編譯結果需保留限制;不完整資料無法證明行為不存在或重建等價。
測試涵蓋官方提供不同驗證層級及工具鏈測試;使用本機模型 fixture 的用戶端測試不等於真實模型 API 驗證。

權限邊界見安全政策,工作階段狀態見 MCP 契約,測試邊界見驗證指南。

07導入與進階路徑

後續操作

  1. 先完成靜態樣本分析,確認版本、Evidence 與摘要投影。

  2. 選取實際目標,限定一個功能及預期輸出;依工具可用性加入原生引擎或瀏覽器。

  3. 保存 Evidence 與來源位置,追蹤功能路徑;需要比對時,保留兩個版本的完整輸入。

  4. 將重建程式與驗收測試放入自己的專案,測試輸入邊界與已觀察的行為。

從靜態 CLI 開始可在不修改 Agent 設定的情況下評估 REA。需要持續對話與追查時,再完成 MCP 註冊;需要執行行為證據時,再配置對應擷取工具。

參考資料