Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ida-pro-mcp — Serveur MCP local-first et déterministe pour IDA Pro/Home : 109 opérations de reverse engineering à schéma strict, des conclusions étayées par des preuves et des modifications d'IDB contrôlées par des politiques. | Kitploit
Outils/GitHubGitHub/grecandrei/ida-pro-mcp
Analyse StatiqueRétro-ingénierieScripting et AutomatisationDébogueursAnalyse de MalwareUtilitaires et FrameworksAnalyse de BinairesRétro-Ingénierie Assistée par IASécurité de l'IAAnalyse de Micrologiciel
GitHubgrecandrei/ida-pro-mcp
8113il y a 1 jourPas encore vérifié

ida-pro-mcp

Serveur MCP local-first et déterministe pour IDA Pro/Home : 109 opérations de reverse engineering à schéma strict, des conclusions étayées par des preuves et des modifications d'IDB contrôlées par des politiques.

Voir le dépôtSite web

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

IDA Pro MCP

IDA Pro MCP — analyse binaire déterministe pour agents IA

IDA Pro MCP est un serveur local Model Context Protocol pour IDA Pro. Il permet à un client MCP d'inspecter un IDB, de demander à IDA des résultats d'analyse déterministes et, lorsque cela est explicitement autorisé, d'écrire des annotations ou d'autres modifications dans l'IDB. Le processus hôte s'exécute en dehors d'IDA et démarre par défaut un processus IDA headless distinct pour chaque session.

Pourquoi cette implémentation

  • Surface d'agent déterministe : 109 opérations ida_* à schéma strict avec découverte en direct via tools/list et ida_help.
  • Architecture locale d'abord : l'hôte et le runtime IDA communiquent via un pont loopback protégé par jeton ; aucun service LLM caché n'intervient dans le chemin d'analyse.
  • Des preuves, pas seulement du chat : les constats durables préservent la provenance, la confiance, l'état du cycle de vie, les conflits et l'historique d'audit en dehors de l'IDB.
  • Mutations surveillées : les opérations modifiant l'IDB restent derrière des contrôles explicites de politique et d'accusé de réception des risques.
  • l'installateur comprend plus de 22 environnements d'agents et leurs formats de configuration JSON, JSON5, TOML et YAML.
Large prise en charge des clients :

La version actuelle est 1.0.0a3. Il s'agit d'un logiciel alpha. Les noms d'opérations publiques ida_*, les schémas et le format d'espace de travail peuvent changer avant une version stable 1.0.0. La surface client par défaut contient 109 opérations à schéma exact. Utilisez la découverte en direct pour le contrat complet : tools/list énumère chaque opération avec son schéma, et ida_help(topic="...") renvoie les arguments exacts et un exemple pour une opération.

Avant d'installer

Vous avez besoin de :

  • IDA Pro ou IDA Home 9.2 ou plus récent, avec un exécutable idat/idat64 utilisable. Les preuves de tests en direct du dépôt couvrent IDA 9.3 et 9.4 ; 9.2 est le seuil de compatibilité déclaré.
  • Python 3.11 ou plus récent pour l'hôte et l'installateur.
  • L'autorisation d'exécuter IDA sur les binaires que vous prévoyez d'inspecter, et suffisamment d'espace disque pour un environnement Python géré, les fichiers de session et les copies d'IDB.
  • Un client MCP prenant en charge un serveur stdio local, tel que Claude Code, Codex, OpenCode, Claude Desktop, Cursor, VS Code/Copilot, Windsurf, Cline, Roo Code, Gemini CLI ou Antigravity.

L'analyse normale ne nécessite ni modèle de langage ni modèle d'embedding. Les fonctionnalités optionnelles de recherche sémantique utilisent un modèle local par défaut et restent désactivées lorsqu'aucun modèle n'est configuré.

Le runtime par défaut est idat : un processus IDA headless par session. Le backend idalib est expérimental, nécessite une installation IDA 9.3 ou plus récente avec le paquet idapro activé, et n'est pas nécessaire pour une première installation.

Installer depuis le checkout source

L'installateur crée un environnement géré sous la racine d'installation, y installe une copie figée du checkout et écrit la configuration client pour les emplacements clients pris en charge. Depuis la racine du dépôt, exécutez :

root@kitploit:~
python3 install.py

Pour une installation IDA connue, passez-la explicitement :

root@kitploit:~
python3 install.py --ida-dir /path/to/ida-pro-9.3

Pour une exécution non interactive :

root@kitploit:~
python3 install.py --yes --no-ida-prompt --ida-dir /path/to/ida-pro-9.3

L'installateur peut également trouver IDA via IDADIR, IDA_DIR, les exécutables IDA présents dans le PATH et les répertoires d'installation courants. --ida-version sélectionne une version lorsque plusieurs installations sont présentes. Utilisez --dry-run pour inspecter d'abord les changements prévus.

L'installateur ne télécharge pas de modèle d'embedding sauf si vous en sélectionnez ou en demandez un. Il peut créer ou mettre à jour des fichiers de configuration pour chaque emplacement client de sa carte de clients intégrée, y compris des clients qui ne sont pas installés sur votre machine. Vérifiez install-report.json dans la racine d'installation et supprimez les entrées inutilisées si nécessaire. Les fichiers de configuration réguliers existants sont sauvegardés avant d'être modifiés ; les fichiers malformés, liés symboliquement ou non réguliers sont refusés plutôt qu'écrasés.

Redémarrez le client MCP après l'installation afin qu'il recharge sa configuration.

Les harnais d'agents découvrent la surface d'outils en direct : tools/list énumère chaque opération avec son schéma, et ida_help(topic="...") renvoie les arguments exacts et un exemple. Aucun fichier de compétence statique n'est installé.

La racine d'installation par défaut est :

  • Linux et macOS : ~/.local/share/ida-pro-mcp
  • Windows : %LOCALAPPDATA%/ida-pro-mcp

Définissez IDA_PRO_MCP_HOME ou passez --install-root pour choisir un autre emplacement.

Installer depuis un artefact de release

Les versions alpha sont construites par GitHub Actions et publiées manuellement en tant que préversions. Lorsqu'une release est disponible, téléchargez l'asset bundle.zip ou bundle.tar.gz et son fichier SHA256SUMS depuis la page des releases. Vérifiez la somme de contrôle, extrayez le bundle et exécutez l'installateur depuis son répertoire de premier niveau :

root@kitploit:~
python3 install.py --yes --no-ida-prompt --ida-dir /path/to/ida-pro-9.3

La release contient également une wheel et une distribution source pour les installations Python scriptées. Le bundle est la voie la plus simple car il inclut l'installateur et tous les fichiers du projet nécessaires pour configurer un client MCP. Les releases sont de qualité alpha ; conservez le binaire et l'IDB d'origine et lisez les notes de version avant de mettre à niveau.

Connecter un client MCP

L'installateur écrit l'entrée serveur pour les chemins de configuration client qu'il connaît. Il prend en charge Gemini CLI, Antigravity, Antigravity IDE, Antigravity CLI, Claude Code, Codex, Copilot CLI, OpenCode, Claude Desktop, Cursor, VS Code, Windsurf, Cline et Roo Code. OpenCode et les clients de la famille Copilot utilisent des formats de configuration différents ; laissez l'installateur écrire ces fichiers ou suivez le guide de configuration OpenCode.

Pour un client qui utilise le format JSON courant, l'entrée est équivalente à :

root@kitploit:~
{
  "mcpServers": {
    "ida-pro-mcp": {
      "command": "/path/to/ida-pro-mcp/.venv/bin/python",
      "args": ["-u", "-m", "ida_pro_mcp.host.server"],
      "env": {
        "IDA_PRO_MCP_HOME": "/path/to/ida-pro-mcp",
        "IDADIR": "/path/to/ida-pro-9.3",
        "IDA_MCP_TOOL_SURFACE": "agent"
      }
    }
  }
}

Sous Windows, utilisez l'interpréteur géré à l'emplacement <install-root>/.venv/Scripts/python.exe. Les détails importants sont l'interpréteur géré, -u -m ida_pro_mcp.host.server, le répertoire IDA sélectionné et IDA_MCP_TOOL_SURFACE=agent. Ne pointez pas le client vers install.py ; ce fichier est l'installateur, pas le serveur MCP.

Après avoir modifié une configuration client, redémarrez complètement le client et vérifiez que ida_help apparaît dans ses opérations disponibles. Si le client n'affiche qu'une ancienne interface étendue tool(action=...), vérifiez que l'environnement sélectionne la surface agent par défaut plutôt que IDA_MCP_TOOL_SURFACE=legacy.

Une première session utile

Utilisez d'abord un chemin absolu vers un binaire de test. L'ouverture d'un binaire attend normalement la fin de l'analyse initiale d'IDA ; un binaire volumineux peut prendre du temps.

root@kitploit:~
ida_open_binary(binary_path="/absolute/path/to/sample")
ida_session_status()
ida_overview()
ida_list_imports(limit=30)
ida_list_strings(query="http", limit=30)
ida_find(query="main", limit=20)
ida_decompile(address="<address returned by IDA>")
ida_xrefs_to(address="<same address>")

Utilisez ida_help(topic="ida_decompile") chaque fois que vous avez besoin du schéma d'arguments exact. Les schémas d'opérations publiques sont stricts : les arguments inconnus sont rejetés. Les adresses peuvent être acceptées sous forme d'entiers ou de chaînes selon le contrat de chaque opération ; utilisez la forme indiquée par ida_help pour l'opération dans votre client.

Pour un petit enregistrement d'investigation, les opérations de constats de l'espace de travail sont :

root@kitploit:~
ida_write_finding(title="Input reaches parser", address="<address returned by IDA>", kind="finding", status="confirmed", confidence=0.8, evidence=[{"type":"call", "value":"recv", "address":"<evidence address>"}])
ida_analysis_brief()
ida_next_target()
ida_export_findings(format="markdown")

Les constats de l'espace de travail sont conservés séparément des modifications de l'IDB. Si la politique active autorise l'écriture dans l'espace de travail, ida_write_finding enregistre un constat localement ; sinon le serveur renvoie une erreur de politique. ida_publish_findings(dry_run=true) prévisualise les modifications de l'IDB. La publication, le renommage, le patch et les autres mutations de l'IDB sont soumis à la politique et nécessitent l'accusé de réception documenté de l'opération lorsque celle-ci en expose un.

Aperçu des opérations

La page d'accueil reste orientée tâches, mais cet index compact permet de parcourir facilement la surface publique. Chaque nom ci-dessous est préfixé par ida_ lors de l'appel. Les schémas et exemples complets sont disponibles en direct via tools/list et ida_help(topic="...").

GroupeOpérations
Sessionopen_binary, open_background, session_state, session_status, session_health, close_session, session_get, session_list, sso_activate, agent_login, agent_logout, session_switch
Découverteoverview, find, semantic_search, reranker_status, function_families, index_functions, index_status, cancel_index, list_functions, list_strings, list_imports, list_types, list_segments, list_sigs, sreg_get, sreg_list, auto_wait, events, registers, search_data_value, search_query_lang, r2_status, r2_bininfo, r2_load_hints, r2_disassemble_hypothesis, r2_vxrefs, fw_detect_vector_table, fw_detect_load_base, fw_detect_mmio, fw_rtos_scan, fw_carve
Codedecompile, disassemble, compare_functions, diff_sessions, xrefs_to, callers, callees, read_bytes, get_type, callgraph, emulate
Constats

Ce qui est sûr, et ce qui ne l'est pas

La politique de base du serveur est assist. Une session peut resserrer la politique de base de l'opérateur mais ne peut pas la relâcher. La politique est déterministe ; elle ne décide pas qu'une opération risquée est sûre parce qu'un client le demande.

L'inspection en lecture seule est le point de départ normal. Les exemples incluent ida_overview, ida_find, ida_list_functions, ida_list_strings, ida_list_imports, ida_decompile, ida_disassemble, ida_xrefs_to, ida_callers, ida_callees, ida_callgraph, ida_read_bytes et les opérations de calcul. Celles-ci consomment tout de même des fichiers locaux et des ressources IDA, et le client MCP reçoit leurs résultats.

Les actions suivantes modifient un état durable ou exécutent du code et doivent être considérées comme à fort impact :

  • ida_rename, ida_comment, ida_patch_bytes, les modifications de fonctions/types/segments/données, l'application de signatures, ida_save_idb, les snapshots et les opérations d'annulation/restauration peuvent modifier l'IDB ou un état associé.
  • ida_publish_findings écrit les constats dans l'IDB. Exécutez d'abord sa forme dry-run ; la forme non dry-run est soumise à contrôle.
  • ida_close_session détruit le runtime IDA actif et est destructif du point de vue de la session.
  • ida_python exécute du Python arbitraire dans le processus IDA actif. Il est bloqué en mode sûr et nécessite un accusé de réception explicite des risques sous la politique normale.
  • ida_emulate est utile pour des vérifications contrôlées, mais les actions de l'émulateur qui modifient l'état nécessitent l'accusé de réception correspondant.
  • ida_til_export et ida_til_import accèdent au système de fichiers et sont soumis à contrôle. Les chemins du système de fichiers sont contraints par la racine mémoire configurée là où cette protection s'applique.

N'utilisez pas --disable-policy comme option de commodité. Cela définit IDA_MCP_POLICY_MODE=off et désactive tous les contrôles de politique, y compris les accusés de réception d'écriture et les autres contrôles de workflow. Si un appel est refusé, lisez l'entrée ida_help de l'opération et fournissez l'argument d'accusé de réception exact uniquement lorsque le schéma de cette opération le prend en charge.

Pendant qu'IDA effectue encore l'analyse initiale, le mode sûr bloque certaines opérations d'analyse de binaire complet, d'indexation et de script. Il est destiné à garder les appels de début de session restreints ; interrogez ida_session_status ou ida_session_health plutôt que de contourner la protection.

Le pont écoute sur le loopback et utilise un jeton par session. Ce n'est pas un service réseau : n'exposez pas et ne transférez pas le port du pont vers un réseau non fiable. Traitez les scripts importés, les traces, les binaires, les données de corpus et les requêtes client comme des entrées non fiables.

Confidentialité et traitement des données

Le chemin normal hôte-vers-IDA est local. Le projet n'exécute pas de service LLM intégré dans le chemin d'analyse, et l'embedding local est opt-in. Cela ne rend pas pour autant l'ensemble du workflow automatiquement hors ligne :

  • Le client MCP connecté reçoit les chemins, symboles, chaînes, octets, décompilations, constats et autres résultats. Le client ou son fournisseur de modèle peut transmettre ce contexte selon ses propres paramètres de compte, de modèle et de rétention. IDA Pro MCP ne peut pas contrôler ces transferts.
  • Si vous sélectionnez explicitement le backend d'embedding Gemini, le serveur envoie une signature comportementale compacte à Google plutôt qu'une décompilation complète. La signature peut néanmoins contenir des appels, des constantes, des littéraux de chaîne et des informations de flux de contrôle dérivés du code. Ne l'activez pas pour des binaires qui doivent rester sur le poste de travail.
  • Les téléchargements de dépendances de l'installateur, les téléchargements optionnels de modèles et de llama-server, les téléchargements optionnels de corpus de menaces et les intégrations externes Rizin/radare2 peuvent effectuer des requêtes réseau lorsqu'ils sont activés.
  • Le cache local, les journaux, les métadonnées de session, les IDB gérés et le blackboard peuvent contenir des chemins, des métadonnées d'analyse et des constats. Protégez les répertoires d'installation/de données. Si vous passez une clé Gemini AI Studio à l'installateur, la clé peut être écrite dans le bloc d'environnement du client MCP généré ; préférez un identifiant basé sur l'environnement et vérifiez la configuration du client.

Pour une configuration entièrement locale, utilisez le runtime local par défaut, laissez Gemini et les autres téléchargements optionnels désactivés, et configurez le client MCP et son modèle conformément à la politique de données de votre organisation. « Entièrement local » nécessite tout de même de vérifier ce que le client envoie à son propre fournisseur de modèle.

Dépannage courant

L'installateur ne trouve pas IDA

Passez explicitement le répertoire d'installation :

root@kitploit:~
python3 install.py --ida-dir /path/to/ida-pro-9.3

Vous pouvez également définir IDADIR ou IDA_DIR. Si plusieurs installations sont trouvées, utilisez --ida-version 9.3 ou --no-ida-prompt pour contrôler la sélection. Confirmez que le répertoire sélectionné contient un idat ou idat64 exécutable.

Le client n'affiche pas IDA Pro MCP

Redémarrez le client et inspectez son entrée de configuration. Confirmez que sa commande utilise le Python du venv géré et -u -m ida_pro_mcp.host.server, et que le bloc env contient le bon IDADIR. Consultez install-report.json ; l'installateur enregistre les échecs de mise à jour des clients et conserve des sauvegardes à côté des fichiers modifiés. Les formats de configuration d'OpenCode et de la famille Copilot diffèrent de l'exemple JSON courant.

L'ouverture d'un binaire prend beaucoup de temps ou semble bloquée

L'appel normal ida_open_binary attend l'analyse initiale. Vérifiez ida_session_status et ida_session_health, accordez plus de temps pour un binaire volumineux et consultez les journaux par session sous le répertoire d'installation/de données. L'opération d'ouverture en arrière-plan est disponible, mais elle est destinée aux cas où vous comprenez son comportement asynchrone et les restrictions du mode sûr.

Une opération d'écriture est refusée

C'est généralement la politique qui fonctionne comme configuré. Utilisez ida_help pour inspecter le schéma exact de l'opération et son exigence d'accusé de réception. N'ajoutez pas d'arguments arbitraires : les schémas sont stricts. Vérifiez IDA_MCP_POLICY_MODE et le fichier de politique de l'opérateur avant de modifier la politique. Désactiver tous les contrôles de politique est un choix distinct et délibérément dangereux.

La recherche sémantique est indisponible

La recherche sémantique est optionnelle et nécessite un index et un backend d'embedding compatible. Le listage ordinaire, la recherche, la décompilation et le travail de références croisées n'en ont pas besoin. Pour configurer le chemin local optionnel, utilisez les options explicites d'embedder de l'installateur, par exemple :

root@kitploit:~
python3 install.py --setup-embedder

L'installateur peut également exécuter --embedder-doctor, utiliser un chemin de modèle explicite, ou télécharger un modèle sélectionné et llama-server lorsqu'on le lui demande. Les licences de modèles, l'utilisation du disque et les téléchargements réseau sont de votre responsabilité. Si le modèle est absent, le serveur doit signaler la recherche sémantique comme indisponible plutôt que de prétendre qu'elle s'est exécutée.

L'installateur refuse une configuration client

Corrigez la syntaxe JSON, JSONC ou TOML signalée et relancez l'installateur. Il refuse également les chemins de configuration liés symboliquement et non réguliers afin d'éviter d'écraser une cible inattendue. Les fichiers réguliers existants sont sauvegardés ; le comportement de rollback par défaut de l'installateur peut restaurer ces sauvegardes si une phase ultérieure échoue.

Une session ou un runtime IDA échoue

Vérifiez ida_session_health, le journal de session et le journal du pont. Confirmez que le client utilise la même racine d'installation et le même IDADIR que ceux enregistrés par l'installateur. Le backend idat par défaut donne à chaque session son propre processus ; ne passez pas à l'expérimental idalib pendant le diagnostic d'une installation de base.

Matériel de référence

  • Wiki du projet — guides orientés tâches pour l'installation, l'investigation, l'édition et le dépannage.
  • Pages wiki locales — le même matériel rédigé à la main, fourni pour l'outil wiki intégré.
  • Découverte des opérations en direct — tools/list et ida_help exposent chaque opération publique, schéma et exemple.
  • Modèle de sécurité — frontières de confiance, modes de politique, transport loopback, propriété des sessions et protections du système de fichiers.
  • Espace de travail d'investigation — constats, preuves, cibles et exports.
  • Intelligence et embeddings — backends de récupération locaux et Gemini optionnels.
  • Configuration OpenCode — configuration d'OpenCode.
  • Architecture — hôte, runtime IDA et flux de données pour les lecteurs qui ont besoin de détails d'implémentation.
  • Politique de sécurité — signalement et conseils de sécurité.
  • Tests IDA en direct — ce que les tests du dépôt prouvent et ne prouvent pas sur une installation IDA réelle.
  • Versionnage et checklist de release et le changelog — statut alpha et historique des releases.
  • Index de la documentation — la carte complète des guides maintenus, références, pages wiki et notes de recherche.

Pour les noms d'opérations exacts, utilisez la référence générée ou demandez au serveur en cours d'exécution avec ida_help. L'ancien backend tool(action=...) reste disponible pour compatibilité et est sélectionné avec IDA_MCP_TOOL_SURFACE=legacy ; les nouvelles intégrations doivent utiliser la surface ida_* à schéma exact.

Télécharger l’outil
write_finding, mark_examined, list_findings, search_findings, update_finding, export_findings, publish_findings, import_annotations, analysis_brief, next_target
Éditioncreate_function, change_function, rename, comment, patch_bytes, save_idb, make_code, undefine, rename_local, declare_type, apply_type, add_segment, set_segment_attrs, apply_sig, sreg_set, create_data, create_strlit, undo_begin, undo_end, add_entry, idb_snapshot, idb_restore_snapshot, struct_member_add, struct_member_del, struct_member_rename, struct_member_set_type, enum_member_add, enum_member_rename, enum_member_revalue, til_delete, til_export, til_import, mark_dangerous
Calculcalc_eval, calc_offset, calc_convert, calc_resolve, calc_deref, calc_chain, calc_align, calc_bitops
Supportpython, continue, help
Workflowbatch