Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Ghidra 與 REA:逆向工程框架與 AI Agent 逆向 MCP

資料查核日期:2026-10-12(版本號以各 repo 最新 release 為準)

專案定位語言 / 授權最新版本
NationalSecurityAgency/ghidra軟體逆向工程(SRE)框架Java / Apache-2.0Ghidra 12.1.4
morluto/rea讓 AI Agent 透過 MCP 做逆向分析TypeScript / MITrea-agents 6.4.0

兩者的關係:Ghidra 是分析引擎,REA 是把 Ghidra(或 Hopper、IDA)接給 AI Agent 的橋樑。


Ghidra

美國國家安全局(NSA)開源的軟體逆向工程框架。

  • 反組譯 / 反編譯:支援 x86、ARM、MIPS、PowerPC、RISC-V 等多種處理器架構,可把機器碼還原成類 C 的偽代碼(pseudocode)。
  • GUI + Headless:除了 GUI 互動分析,也能用 analyzeHeadless 做批次自動化分析。
  • 腳本擴充:可以用 Java 或 Python 撰寫腳本與 plugin。
  • 協作:Ghidra Server 支援多人共用專案。
# 安裝:從 Releases 下載 zip,解壓後執行(需 JDK 21+)
./ghidraRun

# Headless 批次分析
./support/analyzeHeadless /tmp/proj MyProj -import ./a.out

相關筆記:用 AI Agent 與 Ghidra MCP 做基礎逆向工程


REA(Reverse Engineer Anything)

官網:https://rea.tools

一個 MCP server,讓 Agent 逆向分析二進位檔、應用程式與執行期行為。 典型用法是:「看到某個 App 的功能 → 讓 Agent 在沒有原始碼的情況下分析它怎麼運作 → 附上證據 → 在自己的專案實作類似功能」。

運作方式

Agent 透過 MCP 呼叫 REA 檢查目標,REA 回傳發現與其證據(程式碼、參照、未知處),Agent 再據此追問、解釋或實作。分析在本機執行,CLI 也走相同的流程。

可分析的目標(節錄)

目標回傳內容需求
Native binaries偽代碼、組合語言、strings、symbols、呼叫與參照Hopper、Ghidra 或 IDA
Go binaries編譯器版本、modules、build settings內建,不需安裝 Go
JavaScript / Electronmodules、imports、source maps、IPCNode.js、npm
Websites頁面結構、scripts、網路觀察、截圖Chrome 系瀏覽器
.NET assembliesmetadata、CIL 指令、native 相依無(純靜態)
Android APKmanifest、classes、反編譯 methodJADX + JDK
Firmware區段、解包結果Binwalk / Unblob(Linux)
WASM / EVM bytecode區段、WAT、dispatch selectorsWABT / 本地檔案

快速開始

需要 Node.js 22.x(>=22.19)、24.x(>=24.11)或 26 以上版本。

# 註冊到 Agent(支援 Claude Code、Codex、Cursor、Gemini CLI 等)
npx rea-agents setup

# 直接在終端機分析 Electron app 目錄或 ASAR
npx -y rea-agents@latest analyze-javascript-application /abs/path/to/app --json

# 全域安裝 CLI
npm install --global rea-agents
rea --help
rea update

對 Agent 的提問範例:

Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.

兩者差異

面向GhidraREA
本質逆向工程分析引擎(反組譯、反編譯)MCP 橋接層:把各種分析工具接給 AI Agent
操作者人(GUI 點選、寫腳本)AI Agent(自然語言提問),也可用 CLI
分析範圍以 native binary 為主(ELF、PE、Mach-O、firmware 映像)native binary 之外,還支援 JS/Electron、網站、.NET、APK、WASM、EVM 等
是否自帶反編譯器有沒有,native 分析要呼叫 Ghidra、Hopper 或 IDA
輸出偽代碼、函式圖、交叉參照,由人自己解讀結論 + 證據(程式碼位置、參照)+ 未知處,Agent 可以接著實作
深度與控制高:可手動改型別、重新命名、patch、寫 plugin由 Agent 決定追蹤路徑,深度受模型能力與 context 限制
安裝需求JDKNode.js(native 分析另外需要 Ghidra/Hopper/IDA)

一句話:Ghidra 負責「看懂機器碼」,REA 負責「讓 Agent 去問 Ghidra 等工具並整理出答案」。


使用場景

適合用 Ghidra

  1. CTF / 漏洞研究:需要逐條指令看控制流程、手動修正型別與結構,找 buffer overflow 等漏洞。
  2. 惡意程式分析:樣本不能交給雲端模型,或需要精確掌握每個分支行為。
  3. 韌體 / 嵌入式:沒有符號的 ARM、MIPS 映像,需要手動設定記憶體映射(memory map)與載入位址。
  4. 大量批次分析:用 analyzeHeadless 加上腳本,對上百個 binary 抽取函式或特徵。
# 例:批次匯入並執行自訂腳本,輸出所有函式名稱
./support/analyzeHeadless /tmp/proj Batch \
  -import ./samples/*.elf \
  -postScript ListFunctions.java \
  -deleteProject

適合用 REA

  1. 看到某個 App 的功能想抄概念:讓 Agent 追出功能的實作方式,並在自己的專案寫出類似版本。
  2. Electron / JS 桌面 App:不需要反編譯器,直接分析 ASAR 的 modules、IPC、source maps。
  3. 跨格式的目標:同一個產品裡混著 JS、native add-on、.NET,由 REA 統一用一套 MCP 介面處理。
  4. 快速了解陌生 binary:先讓 Agent 掃一遍 strings、symbols、關鍵函式,產出摘要,再決定要不要進 Ghidra 深挖。
# 例:分析某個 Electron App 的結構(JSON 輸出,可以交給腳本處理)
rea analyze-javascript-application /opt/SomeApp/resources/app.asar --json
# 例:在 Claude Code 對 Agent 提問(native 分析會透過已安裝的 Ghidra 進行)
分析 /usr/bin/xxx 的 license 檢查流程,列出相關函式與證據,標出不確定的地方。

搭配使用(建議流程)

  1. REA 先探路:讓 Agent 定位關鍵函式、整理呼叫關係與證據。
  2. Ghidra 深挖:根據 REA 給的函式位址,在 Ghidra GUI 裡修正型別、重新命名、確認細節。
  3. 回到 Agent 實作:把確認過的邏輯交給 Agent,在自己的專案重寫並測試。

注意:只分析你有權分析的軟體,並遵守授權條款(EULA)與當地法規。