Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
diaphora-mcp — 自動バイナリ差分のためのMCPサーバー。 | Kitploit
ツール/GitHubGitHub/xteardx/diaphora-mcp
静的分析脆弱性分析リバースエンジニアリングデバッガファジングバイナリ解析バイナリエクスプロイト
GitHubxteardx/diaphora-mcp

diaphora-mcp

自動バイナリ差分のためのMCPサーバー。

リポジトリを見る
1731009日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ロシア語版

Diaphora MCP

AIアシスタントから、IDAで解析済みの2つのバイナリを比較します。Diaphora MCPは保存されたIDAデータベースをエクスポートし、Diaphoraを実行して、AIが対応する関数とそのコールグラフを調査できるようにします。

デフォルトのインターフェースには、比較に焦点を当てた10個のツールがあります。Diaphoraがマッチを提供し、AIが実際のコードを読み取って変更を説明します。

クイックスタート · 例 · ツール · トラブルシューティング

old.i64 + new.i64 → headless export → SQLite exports + diff results
                                       ↓
                            summary → matched code → call graph

要件

  • Python 3.10+、idat.exe/idat64を備えたIDA Pro、およびインストール済みのDiaphoraプラグイン。
  • 両方のバイナリが解析され、.i64/.idbデータベースとして保存されていること。
  • Codex、Claude Code、CursorなどのローカルMCPクライアント。
  • 疑似コードが必要な場合のみ、互換性のあるHex-Raysデコンパイラ。

IDAとDiaphoraは別々にインストールします。diffスキーマの検証は現在Diaphora 3.4.1を対象としています。他のスキーマでは互換性の更新が必要になる場合があります。diffに使用するPythonインタプリタには、Diaphoraのスタンドアロン依存関係がインストールされている必要があります。

クイックスタート

1. インストールと出力ディレクトリの作成

git clone https://github.com/xTeardx/diaphora-mcp.git
cd diaphora-mcp
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
New-Item -ItemType Directory -Force C:\diaphora-outputs | Out-Null

2. MCPサーバーの接続

クライアントのMCP設定にこのエントリを追加します。リポジトリ、IDA、Diaphoraのパスは、ご自身のインストールパスに置き換えてください。このプロジェクトをインストールした環境のPython実行ファイルを使用してください。

{
  "mcpServers": {
    "diaphora": {
      "command": "C:/src/diaphora-mcp/.venv/Scripts/python.exe",
      "args": ["C:/src/diaphora-mcp/diaphora_mcp_server.py"],
      "env": {
        "IDAT_PATH": "C:/Program Files/IDA Professional 9.3/idat.exe",
        "DIAPHORA_DIR": "C:/Program Files/IDA Professional 9.3/plugins/diaphora",
        "DIAPHORA_OUTPUT_ROOT": "C:/diaphora-outputs"
      }
    }
  }
}

クライアントはstdio経由でサーバーを起動します。別途起動するWebサービスはありません。コードや環境を変更した後は、MCPサーバーを再起動してください。接続に成功すると、以下に示す10個のツールが利用可能になります。

3. アシスタントにファイルの比較を依頼する

Use Diaphora to compare C:/analysis/old.i64 (old) against
C:/analysis/new.i64 (new). Save output under C:/diaphora-outputs/run-001.
Export headlessly with assembly detail, keep the exports, show a summary,
then inspect partial matches and explain the code changes in the interesting
functions. Use the result mapping when comparing functions and call graphs.

毎回新しい実行ディレクトリを選択してください。既存の生成済みターゲットが上書きされることはありません。

例

以下のJSONブロックはMCPツールの引数であり、シェルコマンドではありません。アシスタントは指定されたツールを直接呼び出すことができます。パスと0x401000は例です。ご自身の実行で返されたパスとアドレスを使用してください。

1. 2つのIDAデータベースのエクスポートと比較

ツール: batch_export_and_diff。oldが常に最初の入力、newが2番目です。

{
  "idb1_path": "C:/analysis/old.i64",
  "idb2_path": "C:/analysis/new.i64",
  "output_dir": "C:/diaphora-outputs/run-001",
  "export_mode": "headless",
  "use_decompiler": false,
  "summaries_only": false,
  "cleanup": false,
  "limit": 100,
  "unmatched_limit": 50
}

これにより、Hex-Raysを必要とせずにアセンブリの詳細が保持されます。必要なエクスポートプロファイルを選択してください:

詳細use_decompilersummaries_only用途
マッチングサマリーfalsetrue高速な初回パス。詳細なコードなし
アセンブリfalsefalseデコンパイラなしで逆アセンブリを比較
アセンブリ + 疑似コードtruefalse互換性のあるHex-Raysデコンパイラでのコードレビュー。低速

出力パスは常にレスポンスから取得してください:

OLD_SQLITE = steps.export1.output
NEW_SQLITE = steps.export2.output
RESULTS    = steps.diff.output

この例では、生成されるファイルはrun-001配下のold.diaphora.sqlite、new.diaphora.sqlite、old_vs_new.diaphoraです。入力のベース名が同じ場合、old_/new_という異なるエクスポート名が生成されます。後で関数を調査するためにcleanup=falseのままにしてください。

2. サマリーの取得と変更されたマッチの調査

ツール: get_diff_summary。

{
  "results_path": "C:/diaphora-outputs/run-001/old_vs_new.diaphora"
}

ツール: get_diff_results。このページは比率の低い部分マッチから始まります。

{
  "results_path": "C:/diaphora-outputs/run-001/old_vs_new.diaphora",
  "match_type": "partial",
  "min_ratio": 0.0,
  "limit": 50,
  "offset": 0,
  "unmatched_limit": 50,
  "unmatched_offset": 0,
  "sort_by": "ratio",
  "sort_order": "asc"
}

partialはDiaphoraのマッチカテゴリを選択するものであり、動作変更を保証するものではありません。サポートされているすべてのカテゴリにはmatch_type="all"を使用してください。レスポンスには、カテゴリ別の件数、フィルタ後の合計、マッチ、未マッチ行、next_offset、next_unmatched_offsetが含まれます。

続行するには、返された次のオフセットを次の呼び出しにコピーし、同じフィルタとソートを維持します。たとえば、それらが50と50の場合、offset=50とunmatched_offset=50を使用します。次のオフセットがnullの場合は、そのリストが終了したことを意味するため、それ以上進めないでください。2つのリストは独立して進みます。ページサイズは正の値である必要があり、上限は5000です。最も強いマッチを先に調査するにはsort_order="desc"を使用してください。

3. マッチした関数とそのグラフの比較

ツール: compare_functions。

{
  "db1_path": "C:/diaphora-outputs/run-001/old.diaphora.sqlite",
  "db2_path": "C:/diaphora-outputs/run-001/new.diaphora.sqlite",
  "address": "0x401000",
  "match_results_path": "C:/diaphora-outputs/run-001/old_vs_new.diaphora"
}

レスポンスには、function_old、function_new、利用可能なアセンブリ/疑似コード、測定された差分、同一性の証拠が含まれます。addressの代わりにnameを使用できます。両方のセレクタが指定された場合、addressが優先されます。名前で選択する場合はaddressを省略してください。

ツール: **get_changed_callgraph**は上記と同じ引数を受け付けます。変更を報告する前に対応する呼び出し元/呼び出し先のアドレスを変換し、未解決の隣接ノードと確認済みのエッジ差分を分離します。

16進数入力を明確にするために、0xプレフィックス付きのアドレスを推奨します。利用可能な場合はmatch_results_pathを指定してください。これはリベースと名前変更された関数を処理します。アドレスが同じだけでは同一性を確立できません。曖昧または欠落したマッチは、削除と見なされるのではなく未解決のままになります。ペアを手動で検証した場合は、address2またはname2を明示的に指定できます。

4. 関数の検索とコードの読み取り

ツール: search_export_db。name_patternはSQL LIKEを使用します。%は任意のシーケンスにマッチします。

{
  "db_path": "C:/diaphora-outputs/run-001/old.diaphora.sqlite",
  "name_pattern": "%parse%",
  "min_instructions": 20,
  "limit": 20
}

ツール: get_function_pseudocodeは、その名前にもかかわらず、利用可能な疑似コードおよびアセンブリを返します。

{
  "db_path": "C:/diaphora-outputs/run-001/old.diaphora.sqlite",
  "address": "0x401000"
}

疑似コードが空の場合は、互換性のあるデコンパイラを使用して、use_decompiler=trueとsummaries_only=falseで新しい実行ディレクトリにエクスポートを再実行してください。エクスポートのメタデータを調査するには、db_pathを指定してget_export_infoを使用してください。

5. 既存のエクスポートの比較

ツール: diff_diaphora_dbs。これはIDAエクスポートをスキップし、既存の公式SQLiteエクスポートを比較します。

{
  "db1_path": "C:/diaphora-outputs/run-001/old.diaphora.sqlite",
  "db2_path": "C:/diaphora-outputs/run-001/new.diaphora.sqlite",
  "output_path": "C:/diaphora-outputs/another-diff.diaphora"
}

1つの新しいエクスポートには、idb_path、新しいoutput_path、export_mode="headless"を指定してexport_idb_to_diaphoraを使用してください。

ツール

ツール目的
export_idb_to_diaphora保存された1つのIDAデータベースをエクスポート
batch_export_and_diff両方のデータベースをエクスポートして比較
diff_diaphora_dbs既存のエクスポートを比較
get_diff_summaryマッチ統計と範囲を限定した例
get_diff_resultsフィルタ、ソート、ページングされた結果
get_export_infoエクスポートのメタデータと件数
search_export_db関数の検索
get_function_pseudocodeアセンブリ/疑似コードの読み取り
compare_functions解決されたold/newペアの比較
get_changed_callgraphマッピングされた呼び出し元/呼び出し先の比較

正確なシグネチャはMCPのtools/listで確認できます。ツールリファレンスを参照してください。

エクスポートモードと設定

モード動作
headlessIDAをヘッドレスで起動し、diffスキーマを検証。比較に推奨
autoアクティブなGUIブリッジを試し、次にヘッドレスにフォールバック
gui正しい開いているGUIセッションを要求。ヘッドレスへのフォールバックなし

batch_export_and_diffにはheadlessが必要です。

環境変数意味
IDAT_PATHIDAヘッドレス実行ファイルへの絶対パス
DIAPHORA_DIRDiaphoraスクリプトを含むディレクトリ
DIAPHORA_OUTPUT_ROOT新しいエクスポートとdiff結果のための既存の許可されたルート
DIAPHORA_PYTHONオプションのdiffインタプリタ。デフォルトはMCPサーバーのインタプリタ
DIAPHORA_ENABLE_LEGACY_TOOLS正確に1で以前の21ツールインターフェースを有効化

レガシーマッチング、特徴スコア、セキュリティトリアージ、レポート、メタデータ、診断はオプトインのままです。有効にするには、設定のenvオブジェクトに以下のエントリを追加して再起動してください:

{
  "DIAPHORA_ENABLE_LEGACY_TOOLS": "1"
}

これらのツールはヒューリスティックを使用します。そのスコアは、意味的な等価性、セキュリティ修正、因果関係を証明するものではありません。設定 · GUIセットアップ。

トラブルシューティング

ツールをダウンロード