
2026/02/04 15:51
Show HN:Ghidra MCP サーバ― – AI支援逆解析のための110ツール
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Summary
Ghidra MCP Server v2.0.0 は、AI アシスタントや自動化フレームワークに対して Ghidra のリバースエンジニアリング機能をすべて公開する本番環境で使用可能な Model Context Protocol (MCP) サーバです。関数解析、データ構造探索、文字列抽出、インポート/エクスポートマッピング、メモリレイアウト、クロスバイナリドキュメントなどを網羅する 110 の MCP ツールが付属しています。
主な技術的詳細
- エンドポイント:
、check_connection
、get_metadata
、list_functions
、decompile_function
、list_segments
、get_xrefs_to/from
、get_function_hash
、関数名変更、スクリプト管理 (apply_data_type
、run_script
) 及びsave_ghidra_script
によるマルチプログラムサポート。switch_program - 転送オプション:
(AI ツール推奨)と SSE/HTTP。stdio - サーバ起動: Ghidra の UI から – Tools → GhidraMCP → Start MCP Server (デフォルトは
)。http://127.0.0.1:8080/ - デプロイメント: Maven (
) でビルドし、Ghidra Extensions フォルダーへ配置するか PowerShell スクリプトを使用。mvn clean package assembly:single -DskipTests - 前提条件: Java 21 LTS(OpenJDK)、Apache Maven 3.9+、Ghidra 12.0.2、Python 3.8+ with pip;14 の特定 Ghidra JAR を
にコピーする必要あり。lib/
パフォーマンス
バッチ呼び出しで API トラフィックを 93 % 削減でき、多くの操作は 1 秒未満で完了します。
自動化と拡張性
リポジトリには 70+ 自動化スクリプト (
ghidra_scripts/)、包括的ドキュメント (docs/)、MCP を HTTP REST に変換する Python MCP ブリッジ (bridge_mcp_ghidra.py) が含まれ、re-universe や cheat-engine-server-python などのプロジェクトとの統合ポイントがあります。
今後の計画
次期リリースではより多くの MCP ツールを追加し、自動化スイートを拡充し、マルチプログラム解析サポートを強化し、標準 MCP インターフェイスを通じた AI 統合をさらに広げる予定です。
本文
Ghidra MCP サーバー
Ghidra の強力な逆コンパイル機能と最新の AI ツール・自動化フレームワークを結ぶ、実運用に耐える Model Context Protocol(MCP)サーバーです。
🌟 主な特徴
コア MCP 統合
- 完全な MCP 互換 – Model Context Protocol の完全実装
- 110 個の MCP ツールが利用可能 – バイナリ解析用 API を網羅
- 実運用レベルの信頼性 – バッチ処理と原子トランザクションをテスト済み
- リアルタイム解析 – Ghidra の解析エンジンとライブ統合
バイナリ解析機能
- 関数解析 – デコンパイル、呼び出しグラフ、クロス参照
- データ構造探索 – 自動で struct/union/enum を生成
- 文字列抽出 – 文字列の網羅的解析と分類
- インポート/エクスポート解析 – シンボルテーブル・ライブラリ依存関係マッピング
- メモリマッピング – メモリレイアウトを完全に文書化
- クロスバイナリドキュメント – バイナリ版間で関数ハッシュ照合
開発と自動化
- 自動開発サイクル – ビルド・テスト・デプロイ・検証パイプライン
- Ghidra スクリプト管理 – MCP 経由でスクリプトの作成、実行、管理
- マルチプログラム対応 – 複数開いたプログラムを切り替えて比較可能
- バッチ操作 – 効率的な一括リネーム・コメント付与・型指定
🚀 クイックスタート
前提条件
| コンポーネント | バージョン |
|---|---|
| Java | 21 LTS(OpenJDK 推奨) |
| Apache Maven | 3.9+ |
| Ghidra | 12.0.2(または互換バージョン) |
| Python | 3.8+(pip付き) |
インストール
# リポジトリをクローン git clone https://github.com/bethington/ghidra-mcp.git cd ghidra-mcp # Python の依存関係をインストール pip install -r requirements.txt # Ghidra ライブラリをコピー(ライブラリの完全リストは Library Dependencies を参照) # Windows – 提供されているバッチスクリプトを実行 copy-ghidra-libs.bat "C:\path\to\ghidra_12.0.2_PUBLIC" # Linux/Mac – Ghidra インストールから手動でコピー
# プラグインをビルド(統合テストはスキップ) mvn clean package assembly:single -DskipTests # Ghidra にデプロイ .\deploy-to-ghidra.ps1 # Windows # または手動で Ghidra Extensions フォルダへコピー Copy-Item target\GhidraMCP-2.0.0.zip "C:\ghidra\Extensions\Ghidra\"
基本的な使用方法
オプション 1 – Stdio Transport(AI ツール向けに推奨)
python bridge_mcp_ghidra.py
オプション 2 – SSE Transport(Web/HTTP クライアント用)
python bridge_mcp_ghidra.py --transport sse --mcp-host 127.0.0.1 --mcp-port 8081
Ghidra 内で:
- Ghidra を起動し、バイナリを読み込む
- Tools > GhidraMCP > Start MCP Server を選択
- デフォルトでは
でサーバーが稼働http://127.0.0.1:8080/
📊 実運用パフォーマンス
| 指標 | 値 |
|---|---|
| MCP ツール数 | 110(完全実装) |
| スピード | 多くの操作で秒以下の応答 |
| 効率 | バッチ操作で API 呼び出しを 93 % 削減 |
| 信頼性 | 原子トランザクション(全成功または全失敗) |
| デプロイ | 自動バージョン認識スクリプト付き |
🛠️ API リファレンス
コア操作
– MCP 接続確認check_connection
– プログラムのメタデータ取得get_metadata
– サーバー版情報get_version
– バイナリエントリポイント探索get_entry_points
関数解析
– 全関数(ページング)list_functions
– 名前/パターン検索search_functions_by_name
– フィルタ付き高度検索search_functions_enhanced
– C 疑似コードへのデコンパイルdecompile_function
– アドレス指定でデコンパイル済みコード取得get_decompiled_code
/get_function_callers
– 呼び出し関係get_function_callees
/get_function_call_graph
– 関係グラフget_full_call_graph
/analyze_function_complete
– 完全解析analyze_function_completeness
メモリ & データ
– メモリセグメントとレイアウトlist_segments
– アドレスにある関数get_function_by_address
/disassemble_function
– アセンブリ一覧disassemble_bytes
/get_xrefs_to
/get_xrefs_from
– クロス参照get_bulk_xrefs
– メモリ領域構造解析analyze_data_region
– 生メモリ内容表示inspect_memory_content
– 配列境界検出detect_array_bounds
クロスバイナリドキュメント(v1.9.4+)
/get_function_hash
– 正規化オペコードの SHA‑256 ハッシュget_bulk_function_hashes
/get_function_documentation
– ドキュメントのエクスポート/インポートapply_function_documentation
– 永続 JSON インデックス構築build_function_hash_index
– インデックスで一致関数検索lookup_function_by_hash
– すべての一致インスタンスへドキュメント適用propagate_documentation
データ型 & 構造
/list_data_types
– 利用可能なデータ型search_data_types
,create_struct
,add_struct_field
,modify_struct_field
– 構造体管理remove_struct_field
,create_enum
– 列挙型操作get_enum_values
– 配列データ型作成create_array_type
,apply_data_type
,delete_data_type
,consolidate_duplicate_types
– データ型ユーティリティget_valid_data_types
シンボル & ラベル
,list_imports
,list_exports
– シンボルテーブルlist_external_locations
– 抽出済み文字列と解析結果list_strings
,list_namespaces
– 名前空間・グローバル変数一覧list_globals
,create_label
,batch_create_labels
,delete_label
,batch_delete_labels
,rename_label
– ラベル管理rename_or_label
リネーム & ドキュメント
,rename_function
,rename_function_by_address
,rename_data
,rename_variables
,rename_global_variable
– リネームユーティリティrename_external_location
– 一括リネームbatch_rename_function_components
,set_decompiler_comment
,set_disassembly_comment
,set_plate_comment
– コメント管理get_plate_comment
– 一括コメント設定batch_set_comments
タイプシステム
,set_function_prototype
,set_local_variable_type
,set_parameter_type
– 関数・変数型batch_set_variable_types
,set_variable_storage
– ストレージ制御と関数属性set_function_no_return
,list_calling_conventions
,get_function_variables
– 呼び出し規約とメタデータget_function_labels
Ghidra スクリプト管理
,list_scripts
,run_script
,list_ghidra_scripts
,save_ghidra_script
,get_ghidra_script
,run_ghidra_script
,update_ghidra_script
– スクリプトライフサイクルdelete_ghidra_script
マルチプログラム対応
,list_open_programs
,get_current_program_info
,switch_program
,list_project_files
,open_program
– プログラム操作compare_programs_documentation
解析ツール
,find_next_undefined_function
,find_undocumented_by_string
,batch_string_anchor_report
,search_byte_patterns
,get_assembly_context
,analyze_struct_field_usage
,get_field_access_context
,create_function
– その他解析ユーティリティget_function_jump_target_addresses
詳細は
を参照してください。docs/README.md
🏗️ アーキテクチャ
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ AI/Automation │◄──►│ MCP Bridge │◄──►│ Ghidra Plugin │ │ Tools │ │ (bridge_mcp_ghidra.py) │ │ (GhidraMCP.jar) │ └─────────────────┘ └─────────────────┘ └─────────────────┘
- MCP プロトコル – stdio/SSE
- HTTP REST – localhost:8080
- Ghidra API – Program, Listing
🔧 開発
ソースからビルドする
# プラグインをビルド(統合テストはスキップ) mvn clean package assembly:single -DskipTests # Ghidra にデプロイ .\deploy-to-ghidra.ps1 # Windows
プロジェクト構成
ghidra-mcp/ ├── bridge_mcp_ghidra.py # MCP サーバー(Python) ├── src/main/java/ # Ghidra プラグイン(Java) ├── lib/ # Ghidra ライブラリ依存 ├── ghidra_scripts/ # 70+ 自動化スクリプト ├── docs/ # ドキュメント │ ├── prompts/ │ ├── releases/ │ └── project-management/ ├── examples/ # 使用例 └── scripts/ # ビルド・ユーティリティスクリプト
ライブラリ依存
lib/ フォルダには Ghidra の JAR ファイルが必要です。提供されたスクリプトでコピーしてください:
# Windows copy-ghidra-libs.bat "C:\path\to\ghidra_12.0.2_PUBLIC"
必須ライブラリ(14 個、約 37 MB):
| ライブラリ | 用途 |
|---|---|
| Base.jar | コア Ghidra 機能 |
| Decompiler.jar | デコンパイルエンジン |
| PDB.jar | Microsoft PDB シンボルサポート |
| FunctionID.jar | 関数識別 |
| SoftwareModeling.jar | プログラムモデル API |
| Project.jar | プロジェクト管理 |
| Docking.jar | UI ドッキングフレームワーク |
| Generic.jar | 汎用ユーティリティ |
| Utility.jar | コアユーティリティ |
| Gui.jar | GUI コンポーネント |
| FileSystem.jar | ファイルシステムサポート |
| Graph.jar | 呼び出しグラフ解析 |
| DB.jar | データベース操作 |
| Emulation.jar | P‑code エミュレーション |
注意: ライブラリはリポジトリに含まれていません(
)。ビルド前に Ghidra インストールからコピーしてください。.gitignore
📚 ドキュメント
- コアドキュメント – ナビゲーション、プロジェクト構造、命名規則
- AI ワークフロープロンプト – プロンプトシステムガイドとワークフロー
- リリース履歴 – 変更ログと詳細リリースノート
参照:
を確認してください。CONTRIBUTING.md
🤝 コントリビューション
- リポジトリをフォーク
- 機能ブランチ作成 (
)git checkout -b feature/amazing-feature - 変更をビルド&テスト(
)mvn clean package assembly:single -DskipTests - 必要に応じてドキュメント更新
- コミット & プッシュ (
)git push origin feature/amazing-feature - Pull Request を作成
📄 ライセンス
本プロジェクトは Apache License 2.0 の下でライセンスされています。詳細は
LICENSE ファイルをご覧ください。
🏆 実運用ステータス
| 指標 | 値 |
|---|---|
| バージョン | 2.0.0 |
| MCP ツール数 | 110(完全実装) |
| コンパイル成功率 | ✅ 100 % |
| バッチ効率 | API 呼び出しを 93 % 削減 |
| Ghidra スクリプト | 70+ 自動化スクリプト |
| ドキュメント | AI プロンプト付きで網羅的 |
詳細は
を参照してください。CHANGELOG.md
🙏 謝辞
- Ghidra チーム – 逆コンパイルプラットフォームの提供
- Model Context Protocol – 標準化された AI 統合
- コントリビューター – テスト、フィードバック、改善