Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
diaphora-mcp — Serveur MCP pour le diffing binaire automatisé. | Kitploit
Outils/GitHubGitHub/xteardx/diaphora-mcp
Analyse StatiqueAnalyse des VulnérabilitésRétro-ingénierieDébogueursFuzzingAnalyse de BinairesExploitation de Binaires
GitHubxteardx/diaphora-mcp

diaphora-mcp

Serveur MCP pour le diffing binaire automatisé.

Voir le dépôt
173100il y a 9 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Version russe

Diaphora MCP

Comparez deux binaires analysés par IDA depuis votre assistant IA. Diaphora MCP exporte les bases de données IDA enregistrées, exécute Diaphora, et permet à l'IA d'inspecter les fonctions correspondantes et leurs graphes d'appels.

L'interface par défaut comporte 10 outils axés sur la comparaison. Diaphora fournit les correspondances ; l'IA lit le code réel et explique les changements.

Démarrage rapide · Exemples · Outils · Dépannage

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

Prérequis

  • Python 3.10+, IDA Pro avec idat.exe/idat64, et un plugin Diaphora installé.
  • Les deux binaires analysés et enregistrés en bases de données .i64/.idb.
  • Un client MCP local, tel que Codex, Claude Code ou Cursor.
  • Un décompilateur Hex-Rays compatible uniquement si vous souhaitez du pseudocode.

IDA et Diaphora sont installés séparément. La validation du schéma de diff cible actuellement Diaphora 3.4.1 ; d'autres schémas peuvent nécessiter des mises à jour de compatibilité. L'interpréteur Python utilisé pour le diff doit avoir les dépendances autonomes de Diaphora installées.

Démarrage rapide

1. Installer et créer un répertoire de sortie

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. Connecter le serveur MCP

Ajoutez cette entrée à la configuration MCP de votre client. Remplacez les chemins du dépôt, d'IDA et de Diaphora par vos chemins d'installation. Utilisez l'exécutable Python de l'environnement où vous avez installé ce projet.

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

Le client lance le serveur via stdio ; il n'y a pas de service web séparé à démarrer. Redémarrez le serveur MCP après avoir modifié son code ou son environnement. Une connexion réussie expose les 10 outils listés ci-dessous.

3. Demandez à votre assistant de comparer les fichiers

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.

Choisissez un répertoire d'exécution neuf à chaque fois. Les cibles générées existantes ne sont jamais écrasées.

Exemples

Les blocs JSON suivants sont des arguments d'outils MCP, et non des commandes shell. Votre assistant peut appeler directement les outils nommés. Les chemins et 0x401000 sont des exemples ; utilisez les chemins et adresses renvoyés par votre propre exécution.

1. Exporter et comparer deux bases de données IDA

Outil : batch_export_and_diff. L'ancien est toujours la première entrée, le nouveau la seconde.

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

Cela conserve le détail de l'assembleur sans nécessiter Hex-Rays. Sélectionnez le profil d'export dont vous avez besoin :

Détailuse_decompilersummaries_onlyUtilisation
Résumés de correspondancefalsetruePremière passe rapide ; pas de code détaillé
AssembleurfalsefalseComparer le désassemblage sans décompilateur
Assembleur + pseudocodetruefalseRevue de code avec un décompilateur Hex-Rays compatible ; plus lent

Récupérez toujours les chemins de sortie depuis la réponse :

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

Pour cet exemple, les fichiers générés sont old.diaphora.sqlite, new.diaphora.sqlite et old_vs_new.diaphora sous run-001. Des noms de base d'entrée identiques produisent des noms d'export distincts old_/new_. Conservez cleanup=false pour l'inspection ultérieure des fonctions.

2. Obtenir un résumé et inspecter les correspondances modifiées

Outil : get_diff_summary.

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

Outil : get_diff_results. Cette page commence par les correspondances partielles à ratio plus faible.

{
  "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 sélectionne une catégorie de correspondance Diaphora, et non une garantie de changement comportemental. Utilisez match_type="all" pour toutes les catégories prises en charge. La réponse inclut les décomptes par catégorie, le total filtré, les correspondances, les lignes non appariées, next_offset et next_unmatched_offset.

Pour continuer, copiez les prochains décalages renvoyés dans l'appel suivant, en conservant les mêmes filtres et le même tri. Par exemple, s'ils valent 50 et 50, utilisez offset=50 et unmatched_offset=50. Un prochain décalage null signifie que cette liste est terminée ; cessez de la faire avancer. Les deux listes progressent indépendamment. Les tailles de page doivent être positives et sont plafonnées à 5000. Utilisez sort_order="desc" pour inspecter d'abord les correspondances les plus fortes.

3. Comparer une fonction appariée et son graphe

Outil : 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 réponse contient function_old, function_new, l'assembleur/pseudocode disponible, les différences mesurées et les preuves d'identité. Vous pouvez utiliser name au lieu de address. Si les deux sélecteurs sont fournis, l'adresse est prioritaire ; omettez-la lors d'une sélection par nom.

Outil : get_changed_callgraph accepte les mêmes arguments ci-dessus. Il traduit les adresses correspondantes des appelants/appelés avant de signaler les changements, et sépare les voisins non résolus des différences d'arêtes confirmées.

Préférez les adresses préfixées par 0x pour rendre l'entrée hexadécimale explicite. Fournissez match_results_path lorsqu'il est disponible : il gère le rebasage et les fonctions renommées. Des adresses égales seules n'établissent pas l'identité. Les correspondances ambiguës ou manquantes restent non résolues plutôt que d'être qualifiées de suppressions. Si vous avez vérifié manuellement une paire, vous pouvez fournir explicitement address2 ou name2.

4. Trouver une fonction et lire son code

Outil : search_export_db. name_pattern utilise SQL LIKE : % correspond à n'importe quelle séquence.

{
  "db_path": "C:/diaphora-outputs/run-001/old.diaphora.sqlite",
  "name_pattern": "%parse%",
  "min_instructions": 20,
  "limit": 20
}
Télécharger l’outil