LaurieWired/GhidraMCP
MCP Server for Ghidra
GhidraMCPとは?
GhidraMCPは、Model Context Protocol (MCP) サーバーであり、AIアシスタント(LLM)がGhidra(NSAのオープンソースリバースエンジニアリングツールキット)を使用して、ソフトウェアを自律的にリバースエンジニアリングできるようにします。LLMとGhidraの強力なバイナリ分析機能の間のギャップを埋めます。
仕組み
2つの部分で構成されています:
- Ghidraプラグイン — Ghidra内にインストールされ、小さなHTTPサーバー(デフォルト
http://127.0.0.1:8080/)を実行し、Ghidraの分析機能を公開します。 - 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/ポート設定)
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト