Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
diaphora-mcp — Server MCP per il diffing binario automatico. | Kitploit
Strumenti/GitHubGitHub/xteardx/diaphora-mcp
Analisi StaticaAnalisi delle VulnerabilitàReverse EngineeringDebuggerFuzzingAnalisi di BinariBinary Exploitation
GitHubxteardx/diaphora-mcp

diaphora-mcp

Server MCP per il diffing binario automatico.

Vedi Repository
1731009 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Versione russa

Diaphora MCP

Confronta due binari analizzati con IDA dal tuo assistente AI. Diaphora MCP esporta i database IDA salvati, esegue Diaphora e consente all'AI di ispezionare le funzioni corrispondenti e i loro call graph.

L'interfaccia predefinita dispone di 10 strumenti incentrati sul confronto. Diaphora fornisce le corrispondenze; l'AI legge il codice effettivo e spiega le modifiche.

Avvio rapido · Esempi · Strumenti · Risoluzione dei problemi

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

Requisiti

  • Python 3.10+, IDA Pro con idat.exe/idat64 e un plugin Diaphora installato.
  • Entrambi i binari analizzati e salvati come database .i64/.idb.
  • Un client MCP locale, come Codex, Claude Code o Cursor.
  • Un decompilatore Hex-Rays compatibile solo se desideri lo pseudocodice.

IDA e Diaphora vengono installati separatamente. La validazione dello schema di diff attualmente è mirata a Diaphora 3.4.1; altri schemi potrebbero richiedere aggiornamenti di compatibilità. L'interprete Python utilizzato per il diff deve avere installate le dipendenze standalone di Diaphora.

Avvio rapido

1. Installa e crea una directory di output

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. Connetti il server MCP

Aggiungi questa voce alla configurazione MCP del tuo client. Sostituisci i percorsi del repository, di IDA e di Diaphora con i tuoi percorsi di installazione. Usa l'eseguibile Python dell'ambiente in cui hai installato questo progetto.

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

Il client avvia il server tramite stdio; non c'è alcun servizio web separato da avviare. Riavvia il server MCP dopo aver modificato il suo codice o l'ambiente. Una connessione riuscita espone i 10 strumenti elencati di seguito.

3. Chiedi al tuo assistente di confrontare i file

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.

Scegli ogni volta una directory di esecuzione nuova. I target generati esistenti non vengono mai sovrascritti.

Esempi

I seguenti blocchi JSON sono argomenti degli strumenti MCP, non comandi shell. Il tuo assistente può chiamare direttamente gli strumenti indicati. I percorsi e 0x401000 sono esempi; usa i percorsi e gli indirizzi restituiti dalla tua esecuzione.

1. Esporta e confronta due database IDA

Strumento: batch_export_and_diff. Il vecchio è sempre il primo input, il nuovo il secondo.

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

Questo mantiene il dettaglio dell'assembly senza richiedere Hex-Rays. Seleziona il profilo di esportazione di cui hai bisogno:

Dettagliouse_decompilersummaries_onlyUso
Riepiloghi delle corrispondenzefalsetruePrima passata veloce; nessun codice dettagliato
AssemblyfalsefalseConfronta il disassembly senza un decompilatore
Assembly + pseudocodicetruefalseRevisione del codice con un decompilatore Hex-Rays compatibile; più lento

Prendi sempre i percorsi di output dalla risposta:

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

Per questo esempio, i file generati sono old.diaphora.sqlite, new.diaphora.sqlite e old_vs_new.diaphora sotto run-001. Nomi di base degli input uguali producono nomi di esportazione distinti old_/new_. Mantieni cleanup=false per l'ispezione successiva delle funzioni.

2. Ottieni un riepilogo e ispeziona le corrispondenze modificate

Strumento: get_diff_summary.

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

Strumento: get_diff_results. Questa pagina inizia con le corrispondenze parziali a rapporto più basso.

{
  "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 seleziona una categoria di corrispondenza di Diaphora, non garantisce un cambiamento comportamentale. Usa match_type="all" per tutte le categorie supportate. La risposta include i conteggi per categoria, il totale filtrato, le corrispondenze, le righe non corrispondenti, next_offset e next_unmatched_offset.

Per continuare, copia gli offset successivi restituiti nella chiamata successiva, mantenendo gli stessi filtri e l'ordinamento. Ad esempio, se sono 50 e 50, usa offset=50 e unmatched_offset=50. Un offset successivo null significa che quella lista è terminata; smetti di avanzarla. Le due liste procedono in modo indipendente. Le dimensioni di pagina devono essere positive e sono limitate a 5000. Usa sort_order="desc" per ispezionare prima le corrispondenze più forti.

3. Confronta una funzione corrispondente e il suo grafo

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

La risposta contiene function_old, function_new, assembly/pseudocodice disponibili, differenze misurate e prove di identità. Puoi usare name invece di address. Se vengono forniti entrambi i selettori, l'indirizzo ha la precedenza; omettilo quando selezioni per nome.

Strumento: get_changed_callgraph accetta gli stessi argomenti di cui sopra. Traduce gli indirizzi corrispondenti di chiamanti/chiamati prima di segnalare le modifiche, e separa i vicini non risolti dalle differenze di edge confermate.

Preferisci indirizzi con prefisso 0x per rendere esplicito l'input esadecimale. Fornisci match_results_path quando disponibile: gestisce il rebasing e le funzioni rinominate. Indirizzi uguali da soli non stabiliscono l'identità. Le corrispondenze ambigue o mancanti rimangono non risolte anziché essere chiamate eliminazioni. Se hai verificato manualmente una coppia, puoi fornire esplicitamente address2 o name2.

4. Trova una funzione e leggi il suo codice

Strumento: search_export_db. name_pattern usa SQL LIKE: % corrisponde a qualsiasi sequenza.

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

Strumento: get_function_pseudocode restituisce lo pseudocodice disponibile e l'assembly, nonostante il nome.

Scarica lo strumento