LaurieWired/GhidraMCP

MCP Server for Ghidra

GhidraMCPとは?

GhidraMCPは、Model Context Protocol (MCP) サーバーであり、AIアシスタント(LLM)がGhidra(NSAのオープンソースリバースエンジニアリングツールキット)を使用して、ソフトウェアを自律的にリバースエンジニアリングできるようにします。LLMとGhidraの強力なバイナリ分析機能の間のギャップを埋めます。

仕組み

2つの部分で構成されています:

  1. Ghidraプラグイン — Ghidra内にインストールされ、小さなHTTPサーバー(デフォルト http://127.0.0.1:8080/)を実行し、Ghidraの分析機能を公開します。
  2. Python MCPサーバー — そのHTTPサーバーに接続し、MCPリクエスト(Claude CodeやVS Codeなどのクライアントからの)をGhidra操作に変換します。

MCPクライアント(例:Claude Code)がPythonサーバーを起動し、HTTP経由でGhidraプラグインと通信します。LLMはGhidraに関数の逆コンパイル、メソッド/クラス/インポートの一覧表示、さらにはシンボルの名前変更を要求できます。すべて自律的に行われます。

主な機能

  • 逆コンパイルと分析 Ghidra内のバイナリを分析
  • 自動名前変更 メソッドとデータ(シンボル名の変更)
  • メソッド、クラス、インポート、エクスポートの一覧表示
  • ヘッドレスモード — PyGhidraを使用してGhidra GUIなしで動作し、バイナリを独自にインポートおよび分析できます
  • クライアント非依存 — 任意のMCPクライアント(VS Code、Claude Codeなど)で動作

技術スタック

  • Ghidra 12.1.4(リバースエンジニアリングフレームワーク)
  • Python 3.10+、MCPサーバー用に uv/uvx を使用
  • PyGhidra ヘッドレス操作用
  • Java 21 + Gradle Ghidra拡張機能のビルド用
  • MCP(Model Context Protocol)LLM通信用

なぜ重要か

リバースエンジニアリングは伝統的に遅く手動のプロセスです。GhidraMCPはLLMがGhidraを直接操作できるようにし、「この関数は何をするのか?」といった質問をして逆コンパイル出力を取得し、シンボルを名前変更して反復処理を行います。これはAIエージェントが専門ツール(Ghidra)を使用して複雑な技術タスクを自律的に実行する実用的な例です。

ユースケース

  • マルウェア分析と脆弱性研究
  • 未知のバイナリやファームウェアの理解
  • 大規模なリバースエンジニアリングプロジェクトでのシンボル名変更とコード注釈の自動化
  • LLMがGhidraのデータをクエリして人間のアナリストを支援

制限事項(READMEより)

  • 特にGhidra 12.1.4が必要
  • ヘッドレスモードにはPython 3.10–3.13とGhidra拡張機能のインストールが必要
  • macOSでは、ヘッドレス使用前にGhidraデコンパイラを手動でビルドする必要があります
  • MCPサーバーとGhidraプラグインは互いを指すように設定する必要があります(IP/ポート設定)

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト