Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
diaphora-mcp — MCP Server für automatisiertes binäres Diffing. | Kitploit
Tools/GitHubGitHub/xteardx/diaphora-mcp
Statische AnalyseSchwachstellenanalyseReverse EngineeringDebuggerFuzzingBinäranalyseBinary-Exploitation
GitHubxteardx/diaphora-mcp

diaphora-mcp

MCP Server für automatisiertes binäres Diffing.

Repository anzeigen
173100vor 9 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Русская версия

Diaphora MCP

Vergleiche zwei von IDA analysierte Binärdateien aus deinem KI-Assistenten heraus. Diaphora MCP exportiert die gespeicherten IDA-Datenbanken, führt Diaphora aus und ermöglicht der KI, entsprechende Funktionen und ihre Aufrufgraphen zu untersuchen.

Die Standardoberfläche bietet 10 Tools, die auf den Vergleich ausgerichtet sind. Diaphora liefert Übereinstimmungen; die KI liest den tatsächlichen Code und erklärt die Änderungen.

Schnellstart · Beispiele · Tools · Fehlerbehebung

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

Anforderungen

  • Python 3.10+, IDA Pro mit idat.exe/idat64 und ein installiertes Diaphora-Plugin.
  • Beide Binärdateien analysiert und als .i64/.idb-Datenbanken gespeichert.
  • Ein lokaler MCP-Client, wie Codex, Claude Code oder Cursor.
  • Ein kompatibler Hex-Rays-Decompiler nur, wenn du Pseudocode möchtest.

IDA und Diaphora werden separat installiert. Die Diff-Schema-Validierung zielt derzeit auf Diaphora 3.4.1 ab; andere Schemata benötigen möglicherweise Kompatibilitätsaktualisierungen. Der für den Diff verwendete Python-Interpreter muss über die eigenständigen Abhängigkeiten von Diaphora verfügen.

Schnellstart

1. Installieren und ein Ausgabeverzeichnis erstellen

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. Den MCP-Server verbinden

Füge diesen Eintrag zur MCP-Konfiguration deines Clients hinzu. Ersetze die Repository-, IDA- und Diaphora-Pfade durch deine Installationspfade. Verwende die Python-Executable aus der Umgebung, in der du dieses Projekt installiert hast.

{
  "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"
      }
    }
  }
}

Der Client startet den Server über stdio; es gibt keinen separaten Webdienst zum Starten. Starte den MCP-Server neu, nachdem du seinen Code oder seine Umgebung geändert hast. Eine erfolgreiche Verbindung stellt die unten aufgeführten 10 Tools bereit.

3. Bitte deinen Assistenten, die Dateien zu vergleichen

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.

Wähle jedes Mal ein frisches Ausführungsverzeichnis. Vorhandene generierte Ziele werden niemals überschrieben.

Beispiele

Die folgenden JSON-Blöcke sind MCP-Tool-Argumente, keine Shell-Befehle. Dein Assistent kann die genannten Tools direkt aufrufen. Pfade und 0x401000 sind Beispiele; verwende die Pfade und Adressen, die von deinem eigenen Lauf zurückgegeben wurden.

1. Zwei IDA-Datenbanken exportieren und vergleichen

Tool: batch_export_and_diff. Alt ist immer die erste Eingabe, neu die zweite.

{
  "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
}

Dies behält Assembly-Details bei, ohne Hex-Rays zu erfordern. Wähle das benötigte Exportprofil:

Detailuse_decompilersummaries_onlyVerwendung
ÜbereinstimmungszusammenfassungenfalsetrueSchneller erster Durchlauf; kein detaillierter Code
AssemblyfalsefalseDisassembly ohne Decompiler vergleichen
Assembly + PseudocodetruefalseCode-Review mit einem kompatiblen Hex-Rays-Decompiler; langsamer

Entnimm die Ausgabepfade immer der Antwort:

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

Für dieses Beispiel sind die generierten Dateien old.diaphora.sqlite, new.diaphora.sqlite und old_vs_new.diaphora unter run-001. Gleiche Basisnamen der Eingaben erzeugen unterschiedliche Exportnamen old_/new_. Behalte cleanup=false für die spätere Funktionsuntersuchung bei.

2. Eine Zusammenfassung abrufen und geänderte Übereinstimmungen untersuchen

Tool: get_diff_summary.

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

Tool: get_diff_results. Diese Seite beginnt mit partiellen Übereinstimmungen mit niedrigerem Verhältnis.

{
  "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 wählt eine Diaphora-Übereinstimmungskategorie aus, keine Garantie für eine Verhaltensänderung. Verwende match_type="all" für alle unterstützten Kategorien. Die Antwort enthält Kategoriezählungen, die gefilterte Gesamtzahl, Übereinstimmungen, nicht zugeordnete Zeilen, next_offset und next_unmatched_offset.

Um fortzufahren, kopiere die zurückgegebenen nächsten Offsets in den nächsten Aufruf und behalte dieselben Filter und dieselbe Sortierung bei. Wenn sie beispielsweise 50 und 50 sind, verwende offset=50 und unmatched_offset=50. Ein null-nächster-Offset bedeutet, dass diese Liste abgeschlossen ist; höre auf, sie weiterzuschieben. Die beiden Listen schreiten unabhängig voran. Seitengrößen müssen positiv sein und sind auf 5000 begrenzt. Verwende sort_order="desc", um die stärksten Übereinstimmungen zuerst zu untersuchen.

3. Eine übereinstimmende Funktion und ihren Graphen vergleichen

Tool: 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"
}

Die Antwort enthält function_old, function_new, verfügbares Assembly/Pseudocode, gemessene Unterschiede und Identitätsnachweise. Du kannst name anstelle von address verwenden. Wenn beide Selektoren angegeben werden, hat die Adresse Vorrang; lasse sie weg, wenn du nach Namen auswählst.

Tool: get_changed_callgraph akzeptiert dieselben Argumente wie oben. Es übersetzt entsprechende Aufrufer-/Aufgerufenen-Adressen, bevor Änderungen gemeldet werden, und trennt unaufgelöste Nachbarn von bestätigten Kantenunterschieden.

Bevorzuge 0x-präfixierte Adressen, um hexadezimale Eingaben explizit zu machen. Gib match_results_path an, wenn verfügbar: Es behandelt Rebasing und umbenannte Funktionen. Gleiche Adressen allein begründen keine Identität. Mehrdeutige oder fehlende Übereinstimmungen bleiben unaufgelöst, statt als Löschungen bezeichnet zu werden. Wenn du ein Paar manuell verifiziert hast, kannst du address2 oder name2 explizit angeben.

4. Eine Funktion finden und ihren Code lesen

Tool: search_export_db. name_pattern verwendet SQL LIKE: % entspricht einer beliebigen Sequenz.

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