Communitygithub.com

ida-reverse

Compétence d'analyse rétro-ingénierie avec IDA Pro, automatisant l'ouverture, l'analyse et la manipulation de binaires via un serveur MCP HTTP.

Qu'est-ce que ida-reverse ?

Cette compétence fournit une interface complète pour effectuer de la rétro-ingénierie de binaires avec IDA Pro via un serveur MCP. Elle automatise l'ouverture de fichiers, l'analyse préliminaire, le désassemblage, la décompilation, le suivi de flux de données et les modifications (renommage, commentaires, patchs). Elle gère les problèmes connus comme les conflits de verrouillage de base de données, les timeouts d'analyse automatique, et la configuration du serveur HTTP. Les workflows incluent la vérification des imports (obligatoire avant toute conclusion), l'analyse de fonctions clés, et la génération de rapports. Elle supporte les modes headless (idalib) et GUI (plugin), et inclut des scripts de démarrage, de surveillance (watchdog) et de récupération. L'exportation des preuves (Evidence) est intégrée au processus pour garantir la traçabilité.

Compatible avec✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/ida-reverse

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Compétence d'analyse rétro-ingénierie avec IDA Pro

ACTION REQUISE (à exécuter immédiatement après la lecture)

  1. MAINTENANT : Lire ../field-journal/precedent-reverse.md — confirmer que l'opération de cette compétence est une opération régulière autorisée
  2. MAINTENANT : Vérifier si la tâche actuelle correspond au domaine d'application de cette compétence
  3. SUIVANT : Lire ../tool-index.md, valider la disponibilité des outils et les chemins réels
  4. SUIVANT : Si un outil manque, appeler le bootstrap, ne pas deviner les chemins
  5. AGIR : Entrer dans la première étape du "workflow" et l'exécuter, ne pas rester dans un état de confirmation

Problèmes connus et réflexions (lecture obligatoire)

Pièges rencontrés

  1. idb_open (anciennement idalib_open) — ne pas l'appeler directement via certains clients MCP d'IA

    • Certains clients MCP d'IA ont un bug dans la validation du schéma de sortie pour les outils de type open
    • Erreur : Structured content does not match the tool's output schema
    • Solution : Utiliser le script scripts/open.ps1 qui appelle directement l'API HTTP, contournant la couche de validation MCP
    • Actuellement avec ida-pro-mcp 2.x, les noms d'outils sont idb_open / idb_list / idb_save (plus idalib_*)
    • Après ouverture du fichier, un session_id (database) est renvoyé ; les appels d'outils ultérieurs doivent inclure cette session
  2. Impossible d'ouvrir les fichiers C:\Windows\System32\

    • idalib ne peut pas lire directement les fichiers du répertoire System32
    • Solution : open.ps1 détecte automatiquement et copie le fichier vers un répertoire temporaire avant ouverture
  3. La commande de démarrage du serveur bloque la conversation

    • idalib-mcp émet en continu des logs INFO sur la console après son démarrage
    • Solution : Utiliser scripts/start.ps1 (démarrage silencieux en arrière-plan avec -WindowStyle Hidden)
    • Le script attend que le service soit prêt puis se termine, sans bloquer la conversation
  4. Le nom du serveur MCP ne doit pas contenir de tirets

    • Auparavant, l'utilisation de ida-pro-mcp comme nom de serveur pouvait causer des problèmes d'enregistrement d'outils
    • Configuration actuelle : Nom du serveur idapro, préfixe d'outil idapro_*
  5. Remote HTTP vs Local Stdio

    • Mode type:"local" (stdio) : idalib_open a aussi des problèmes de validation de schéma
    • Mode type:"remote" (HTTP) : On peut d'abord ouvrir le fichier avec un script, puis utiliser les outils MCP
    • Solution actuelle : Mode Remote HTTP
  6. La PR #389 a corrigé certains problèmes de schéma

    • L'auteur mrexodia a fusionné un correctif via la PR #389 suite au issue #388
    • Le correctif a résolu le schéma structuredContent en mode HTTP, mais la validation côté client de certains IA présente toujours des problèmes
    • La version la plus récente de la branche main est installée
  7. Le timeout d'idalib laisse des processus workers orphelins qui verrouillent les fichiers

    • Si le premier open.ps1 expire, le processus worker python d'idalib peut devenir orphelin, gardant les verrous sur .id0/.id1/.nam
    • Tout outil ultérieur ou glisser-déposer dans l'interface graphique d'IDA provoquera une erreur "permission insuffisante"
    • Interdiction d'utiliser taskkill /F /T pour tuer l'arborescence des processus — /T tuerait aussi le processus enfant de l'interface graphique ida.exe
    • Solution : start.ps1 ne remplace le superviseur managé que lorsque le port n'est pas écouté, ou lorsque tools/list répond rapidement mais manque de py_eval (ancien superviseur) ; en cas de timeout RPC alors que 13337 écoute encore, considérer comme occupé, ne pas tuer. Lors de l'ouverture d'une base, open.ps1 écrit opening.lock, le watchdog ne doit pas utiliser -Force
    • Exception d'interblocage : Si tools/list échoue pendant plus de 3 minutes consécutives (basé sur l'horodatage last-healthy, pas sur l'heure de création du processus), et qu'il n'y a pas de opening.lock en cours, et que ce n'est pas l'interface graphique qui occupe le port, alors seulement utiliser -Force pour remplacer le superviseur, sans tuer ida.exe
    • Filet de sécurité : open.ps1 détecte une ancienne base verrouillée, la copie automatiquement dans Temp avec un préfixe GUID
  8. Ouvrir avec analyse automatique donne l'impression d'un blocage

    • idalib_open(run_auto_analysis=true) peut ne pas répondre pendant un long moment, mais le backend continue d'ouvrir et d'analyser
    • Auparavant, l'utilisateur voyait "PowerShell n'affiche rien", ce qui était facilement interprété comme un blocage du script
    • Solution actuelle : open.ps1 a ajouté -TimeoutSeconds, et passe à une requête en arrière-plan + polling avant + sortie de progression périodique
    • Lorsque le polling détecte que la session est prête, il renvoie immédiatement OK:nom_fichier:session_id ; en cas de timeout, il renvoie ERR:open_timeout_xxs
  9. Le MCP HTTP peut se fermer silencieusement après la connexion

    • Les clients type: http de Cursor/Claude ne relancent pas le processus ; les anciennes tâches planifiées ne s'exécutent qu'une fois à la connexion
    • pythonw n'a pas de console, et en cas de plantage, le journal des événements est vide
    • Solution : start.ps1 réutilise le processus s'il est sain ; watchdog.ps1 vérifie chaque minute ; les logs se trouvent dans %LOCALAPPDATA%\reverse-skill\ida-mcp\
    • Installation : scripts/install-autostart.ps1. Si le port n'est pas encore levé au démarrage du client HTTP, un rafraîchissement manuel dans le panneau MCP est nécessaire.
  10. Le GET streamable HTTP /mcp peut bloquer le superviseur monothread

    • Certains clients HTTP MCP envoient une connexion GET longue (SSE) vers /mcp. Le stock idalib_supervisor utilise background=False avec HTTPServer, ne traitant qu'une seule requête à la fois
    • Résultat : tools/list expire, le client marque idapro comme error
    • Solution : run-supervisor.py remplace HTTP par ThreadingHTTPServer et accepte GET /mcp ; si le patch échoue, passer outre et démarrer quand même le superviseur. En cas de blocage, utiliser scripts/recover.ps1 (-Force immédiatement)

Principes du workflow

ÉtapeActionOutil/méthode
1S'assurer que le serveur HTTP est en cours d'exécutionscripts/start.ps1 (sans paramètre)
2Ouvrir le binaire ciblescripts/open.ps1 -Path "xxx.exe"
3Utiliser les outils d'analyse MCPAppeler directement idapro_* / outils HTTP (environ 65, selon la version)
4Analyse terminéeLes outils sont automatiquement disponibles

Ressources des scripts

start.ps1 — Démarrer le serveur MCP HTTP

Chemin : scripts/start.ps1

  • Résout automatiquement IDADIR (variable d'environnement / chemin de bureau portable / chemins d'installation courants)
  • Utilise en priorité Python314\python.exe -m ida_pro_mcp.idalib_supervisor fourni avec IDA
  • Par défaut, sonde d'abord http://127.0.0.1:13337/mcp ; si sain, affiche OK:<n>:reuse et se termine
  • Si 13337 écoute mais tools/list expire → WARN:busy / OK:busy:reuse, ne pas tuer (l'ouverture de base ou l'occupation par l'interface graphique empêche la réponse)
  • Si tools/list échoue pendant plus de 3 minutes consécutives (horodatage last-healthy) et qu'il n'y a pas de opening.lock → considérer comme interblocage, afficher INFO:deadlock et -Force pour remplacer le superviseur. Les idb_open en cours et l'interface graphique ne suivent pas ce chemin.
  • Remplace le superviseur managé uniquement si le port n'est pas écouté, si py_eval manque, ou en cas d'interblocage ; ne jamais tuer ida.exe, ne pas utiliser taskkill /T
  • Si l'interface graphique occupe le port 13337, affiche WARN:gui_busy et se termine, sans lancer un autre superviseur
  • Succès : affiche OK:<nombre_outils> (environ 66 actuellement), échec : ERR:timeout
  • Logs du superviseur : %LOCALAPPDATA%\reverse-skill\ida-mcp\supervisor.log
  • Le serveur s'exécute en arrière-plan, ne bloque pas la conversation

Méthode d'appel :

powershell -File "<skill-root>\ida-reverse\scripts\start.ps1"

watchdog.ps1 / recover.ps1 / install-autostart.ps1 — Maintien en vie

  • watchdog.ps1 : Sonde le port 13337 ; sain → reuse (et rafraîchit last-healthy) ; occupé par l'interface graphique / verrouillage d'ouverture de open.ps1 / last-healthy de moins de 3 minutes → reuse ; seulement si tools/list échoue pendant plus de 3 minutes consécutives → start.ps1 -Force
  • recover.ps1 : Exécute immédiatement start.ps1 -Force (sans tuer ida.exe). À utiliser quand le client HTTP marque idapro comme error.
  • install-autostart.ps1 : Enregistre la tâche planifiée reverse-skill-ida-mcp (à la connexion + toutes les minutes)
  • Logs : %LOCALAPPDATA%\reverse-skill\ida-mcp\watchdog.log

open.ps1 — Ouvrir un fichier binaire

Chemin : scripts/open.ps1

  • Appelle idb_open directement via l'API HTTP, contournant la validation de schéma MCP
  • Détecte automatiquement les chemins System32 et copie le fichier dans un répertoire temporaire
  • Nettoie automatiquement les anciens fichiers de base de données du même nom (.id0/.id1/.nam/.til/.i64)
  • Si l'ancienne base est verrouillée, rétrograde automatiquement : copie dans Temp avec un préfixe GUID avant ouverture, sans signaler d'erreur
  • Place la requête d'ouverture en arrière-plan pour éviter une attente synchrone longue qui rendrait le script non réactif
  • Supporte -TimeoutSeconds ; en cas de timeout, renvoie ERR:open_timeout_xxs, sans blocage infini
  • Toutes les 10 secondes, affiche INFO:opening:temps_écoulé/seuils_timeout pour indiquer que l'analyse est toujours en cours
  • Succès : affiche OK:nom_fichier:session_id ; en cas de rétrogradation, ajoute la mention (temp copy)
  • En cas d'échec, réessaie automatiquement avec la copie Temp

Méthode d'appel :

powershell -File "<skill-root>\ida-reverse\scripts\open.ps1" -Path "C:\chemin\vers\fichier.exe"

Paramètres optionnels :

# Spécifier un SessionId
powershell -File "scripts\open.ps1" -Path "fichier.exe" -SessionId "ma_session"

# Ignorer l'analyse automatique (recommandé pour les gros fichiers)
powershell -File "scripts\open.ps1" -Path "gros.exe" -NoAutoAnalysis

# Définir un timeout pour éviter une longue attente sans retour avec l'analyse automatique
powershell -File "scripts\open.ps1" -Path "fichier.exe" -TimeoutSeconds 600

Conventions de sortie :

# Analyse en cours (toutes les 10 secondes)
INFO:opening:11/600s

# Ouverture réussie
OK:sample.exe:abcd1234

# Ouverture réussie mais rétrogradée vers une copie Temp à cause d'un verrou
OK:1234abcd-sample.exe:abcd1234 (temp copy)

# Timeout atteint
ERR:open_timeout_600s

Notes pratiques :

  • Pour Snipaste.exe avec analyse automatique, le retour peut prendre environ 324s ; c'est une "analyse longue" et non un "blocage de script"
  • Par conséquent, pour les programmes graphiques ou les échantillons complexes, il est recommandé de définir explicitement -TimeoutSeconds 600

Liste des outils principaux

Analyse globale (première étape)

  • idapro_survey_binary(detail_level="minimal") — Aperçu rapide : nombre de fonctions, chaînes, segments, point d'entrée, classification des imports (cryptage/réseau/entrées-sorties fichier)
  • idapro_list_funcs(queries) — Lister les fonctions (pagination, filtrage par nom)
  • idapro_list_globals(queries) — Lister les variables globales
  • idapro_entity_query(kind, filter) — Requête unifiée : functions/globals/imports/strings/names

Décompilation et désassemblage

  • idapro_decompile(addr) — Décompiler en pseudo-code
  • idapro_disasm(addr, max_instructions=N) — Désassembler
  • idapro_analyze_function(addr, include_asm=false) — Analyse complète (pseudo-code + chaînes + constantes + appelants + appelés + blocs)
  • idapro_func_profile(queries) — Métriques de profil de fonction

Références croisées et flux de données

  • idapro_xrefs_to(addrs) — Trouver qui référence une adresse cible
  • idapro_xref_query(addr, direction) — Requête avancée de références croisées (filtrage par direction/type)
  • idapro_callees(addrs) — Liste des sous-fonctions
  • idapro_callgraph(roots, max_depth) — Graphe d'appels
  • idapro_trace_data_flow(addr, direction, max_depth) — Traçage de flux de données (forward/backward)

Recherche

  • idapro_find_regex(pattern, limit) — Recherche par expression régulière dans les chaînes
  • idapro_search_text(pattern) — Recherche de texte dans la liste de désassemblage
  • idapro_find_bytes(patterns, limit) — Recherche par motif d'octets (support des caractères génériques ??)
  • idapro_find(type, targets) — Recherche avancée (immédiat/chaîne/référence)

Mémoire et données

  • idapro_get_bytes(addrs) — Lire les octets bruts
  • idapro_get_string(addrs) — Lire une chaîne
  • idapro_get_int(queries) — Lire une valeur entière
  • idapro_get_global_value(queries) — Lire la valeur d'une variable globale
  • idapro_read_struct(queries) — Lire la valeur d'un champ de structure
  • idapro_search_structs(filter) — Rechercher des structures

Opérations de modification

  • idapro_set_comments(items) — Ajouter des commentaires (synchronisation bidirectionnelle désassemblage + décompilation)
  • idapro_append_comments(items) — Ajouter un commentaire à la suite
  • idapro_rename(batch) — Renommer en masse (fonctions/globales/locales/variables de pile)
  • idapro_patch_asm(items) — Patcher des instructions assembleur
  • idapro_patch(patches) — Patcher des octets
  • idapro_define_func(items) — Définir une fonction
  • idapro_undefine(items) — Annuler la définition
  • idapro_define_code(items) — Convertir des octets en code

Système de types

  • idapro_declare_type(decls) — Déclarer des structures/énumérations/union C
  • idapro_set_type(edits) — Appliquer un type à une fonction/globale/locale
  • idapro_infer_types(addrs) — Inférer des types
  • idapro_type_query(queries) — Interroger les types déclarés
  • idapro_type_inspect(queries) — Voir les détails d'un type

Trames de pile

  • idapro_stack_frame(addrs) — Voir les variables de trame de pile
  • idapro_declare_stack(items) — Déclarer des variables de pile
  • idapro_delete_stack(items) — Supprimer des variables de pile

Signatures

  • idapro_make_signature(addrs) — Générer une signature d'octets unique pour une adresse
  • idapro_make_signature_for_function(addrs) — Générer une signature pour une fonction
  • idapro_find_xref_signatures(addrs) — Générer des signatures pour le code référençant une adresse

Débogueur (nécessite ?ext=dbg)

  • idapro_open_file(file_path) — Ouvrir un fichier dans l'instance GUI d'IDA
  • Les outils de débogueur sont cachés par défaut, activables via le paramètre d'URL ?ext=dbg

Gestion des sessions (ida-pro-mcp 2.x)

  • idapro_idb_open / HTTP idb_open — ⚠️ Recommandé d'utiliser open.ps1 pour ouvrir
  • idapro_idb_list / HTTP idb_list — Lister toutes les sessions
  • idapro_idb_save / HTTP idb_save — Sauvegarder la base de données
  • La plupart des outils d'analyse nécessitent le paramètre database=<session_id> (session renvoyé par open.ps1)

Autres

  • idapro_int_convert(inputs) — Conversion de base (doit être utilisé, ne pas calculer les bases manuellement !)
  • idapro_export_funcs(addrs, format) — Exporter des fonctions (json/c_header/prototypes)
  • idapro_py_eval(code) — Exécuter du Python dans le contexte d'IDA
  • idapro_server_health() — Vérification de l'état du serveur
  • idapro_server_warmup() — Préchargement des sous-systèmes (cache de chaînes, Hex-Rays, etc.)

Workflow complet d'analyse rétro-ingénierie

Étape 1 : Démarrer le serveur

Chemin A — Headless idalib (nécessite une licence valide)

powershell -File "scripts/start.ps1"

La sortie OK:<nombre_outils> (environ 65 actuellement) indique que le serveur est prêt.

Chemin B — GUI + plugin (si la licence idalib échoue ou si une analyse interactive est nécessaire)

powershell -File "scripts/start-gui.ps1" -Path "C:\cible.exe"

Ou double-cliquer sur Launch-IDA-Pro.cmd dans la version portable, puis ouvrir l'échantillon dans IDA.

Après avoir vu [MCP] ... port=13337 apparaître dans la fenêtre de sortie, les outils MCP sont disponibles.

Les étapes d'intégration générales sont décrites dans LOCAL-SETUP.md.

Étape 2 : Ouvrir le fichier

Headless :

powershell -File "scripts/open.ps1" -Path "C:\cible.exe" -TimeoutSeconds 600

La sortie OK:nom_fichier:session_id indique un succès (un (temp copy) ajouté en fin de ligne signifie une rétrogradation automatique vers une copie temporaire).

Si ERR:idalib_license:... apparaît, basculer vers le Chemin B (mode GUI), ne pas réessayer open.ps1 à plusieurs reprises.

Mode GUI : Ouvrir l'échantillon directement dans IDA, pas besoin de open.ps1.

Étape 3 : Aperçu global (incluant la porte d'entrée obligatoire des imports)

idapro_survey_binary(detail_level="minimal")

Se concentrer sur :

  • Architecture (x86/x64/ARM)
  • Point d'entrée (main/WinMain/DllMain)
  • Chaînes intéressantes (URL, chemins, messages d'erreur)
  • Classification des imports (OBLIGATOIRE) : fonctions de cryptage / API réseau / opérations fichier / injection de processus / registre — doit être consignée comme Evidence (id suggéré : E-imports), en utilisant idapro_entity_query(kind="imports") ou la section imports de la sortie de survey
  • DLL/SYS : Table d'exportation en parallèle de la table d'importation (Evidence E-exports)
  • .NET : En l'absence d'IAT traditionnel, utiliser un résumé des modules/métadonnées/références managées comme ancrage équivalent pour la fente sémantique E-imports
  • Table d'importation propre : Mentionner la suspicion de chargement dynamique, pousser à la vérification par points d'arrêt dynamique sur les API
  • Fonctions les plus référencées (les fonctions avec un nombre élevé de références croisées sont souvent la logique clé)

Porte verrouillée : Avant d'avoir consigné la vue des imports / le résumé de classification (ou un ancrage équivalent légitime) dans Evidence, il NE FAUT PAS entrer dans l'étape 4 pour creuser les conclusions, et NE PAS prétendre que le survey est terminé. Si la table d'importation est vide ou si la requête échoue, il FAUT quand même enregistrer l'échec. Si la réparation de l'IAT après unpacking échoue, il FAUT enregistrer E-iat-repair-fail et passer au débogage dynamique pour capturer les API, en évitant de s'obstiner en statique. Si l'utilisateur demande de refaire la vérification de la table d'importation/IAT, il FAUT refaire l'étape désignée (avec un verrou de faisabilité en cas de blocage : explication + confirmation ; en cas de force, marquer quality=unreadable), et ne pas changer pour une étape non pertinente.

Étape 4 : Approfondir les fonctions clés

idapro_analyze_function(addr="nom_fonction_clé")

Ou :

idapro_decompile(addr="nom_fonction")
idapro_disasm(addr="nom_fonction", max_instructions=50)

Étape 5 : Flux de données et références croisées

idapro_xrefs_to(addrs="adresse/chaîne_clé")
idapro_callgraph(roots=["fonction_clé"], max_depth=3)
idapro_trace_data_flow(addr="adresse_clé", direction="backward", max_depth=5)

Étape 6 : Enregistrement et optimisation

idapro_set_comments(items=[{"addr": "0x140001000", "comment": "votre compréhension"}])
idapro_rename(batch={"func": [{"addr": "adresse_fonction", "name": "nom_significatif"}]})

Étape 7 : Générer le rapport

Une fois l'analyse terminée, générer report.md pour documenter les découvertes et les étapes.

Règles d'ingénierie des prompts

  1. Ne pas calculer les bases manuellement — pour toute conversion de nombre, utiliser idapro_int_convert
  2. D'abord survey, ensuite approfondir — voir l'aperçu avant l'analyse ciblée
  3. Ajouter des commentaires et renommer en continu — mettre à jour régulièrement les noms de fonctions et de variables pendant l'analyse pour améliorer la précision des analyses ultérieures
  4. Suivre les références croisées — si une donnée/chaîne intéressante est trouvée, utiliser xrefs_to pour voir qui la référence
  5. Face à du code obfusqué — effectuer d'abord un déchiffrement de chaînes, un dé-hachage des imports, un déroulement de l'obfuscation de flux de contrôle, etc.
  6. Code C++ STL — identifier les fonctions de bibliothèque avec FLIRT/Lumina avant d'analyser la logique métier
  7. Ne pas faire de force brute — l'analyse doit déduire la solution du désassemblage, utiliser du Python simple pour les calculs auxiliaires
  8. Si "No database bound" apparaît — aucun fichier binaire n'a encore été ouvert, exécuter d'abord open.ps1
  9. Si "Failed to open database" apparaît — l'ancienne base de données est probablement verrouillée ; open.ps1 rétrogradera automatiquement vers une copie Temp (sortie avec la mention (temp copy))
  10. Ouverture avec analyse automatique d'échantillons GUI/complexes — ajouter par défaut -TimeoutSeconds 600, ne pas interpréter une longue série de INFO:opening:... comme un blocage de script

Contexte de routage

Entrée amont : skills/SKILL.md (contrôle central), routing.md Alternative amont : radare2/ (si l'ouverture d'IDA n'est pas souhaitée, faire d'abord un repérage rapide avec r2) Sortie aval :

  • Si une validation dynamique avec Frida est nécessaire → reverse-engineering/tools-dynamic.md
  • Si une exécution symbolique/angr est nécessaire → reverse-engineering/tools-dynamic.md
  • Si une méthodologie générale de rétro-ingénierie est nécessaire → reverse-engineering/SKILL.md

Module connexe de même niveau : radare2/ (solution alternative si IDA n'est pas disponible)


Auto-amorçage à la demande (On-Demand Bootstrap)

Les scripts d'entrée de cette compétence sont intégrés au système d'auto-amorçage unifié.

Périmètre des capacités d'automatisation

OutilInstallation automatiqueMéthode d'installationDescription
idalib-mcp✓pip install (depuis GitHub)S'installe automatiquement si start.ps1 est manquant
IDA Pro✗Logiciel commercial, installation manuelleDéfinir la variable d'environnement IDADIR pointant vers le répertoire d'installation

Étapes d'installation (validées)

# 1. Définir le chemin d'IDA (remplacer par votre répertoire d'installation réel)
setx IDADIR "<votre_répertoire_d_installation_IDA>"

# 2. Installer ida-pro-mcp depuis GitHub (ida-mcp sur PyPI est un autre projet, ne pas se tromper !)
pip install git+https://github.com/mrexodia/ida-pro-mcp.git

# 3. Installer le plugin IDA (choisir Streamable HTTP + Global + cocher tous les clients)
ida-pro-mcp --install

# 4. Redémarrer IDA Pro, ouvrir le fichier cible
# Le plugin écoute automatiquement sur 127.0.0.1:13337

# 5. Vérifier
ida-pro-mcp --config

⚠️ Attention : Le paquet ida-mcp sur PyPI (auteur jtsylve) est un autre projet, pas celui dont nous avons besoin. Installer impérativement mrexodia/ida-pro-mcp depuis GitHub.

Points de déclenchement de l'auto-amorçage

  • scripts/start.ps1 : Si idalib-mcp manque, appelle automatiquement bootstrap-reverse.ps1
  • Enregistrement MCP : Le bootstrap écrit automatiquement idapro dans la configuration MCP de Claude

Prérequis

  • IDA Pro installé et la variable d'environnement IDADIR définie (ou les chemins par défaut dans le script sont corrects)
  • Il est recommandé d'utiliser ida-pro-mcp avec le Python314 fourni avec IDA (déjà intégré dans la version portable)
  • Configuration locale typique :
    • Variable d'env utilisateur IDADIR → répertoire d'installation d'IDA (contenant ida.exe)
    • Optionnel : un wrapper ~\Tools\bin\idalib-mcp.cmd / ida-pro-mcp.cmd
    • Dans la configuration MCP du client, ne garder que le nom de serveur idapro → http://127.0.0.1:13337/mcp

Auto-vérification de fin de tâche (DOIT être réussie avant de déclarer la tâche terminée)

  • Ai-je exécuté chaque étape du workflow (et pas seulement lu) ?
  • Le survey/imports a-t-il été consigné dans Evidence (E-imports ou équivalent) ? Les DLL/SYS contiennent-ils E-exports ? L'échec IAT a-t-il été enregistré comme E-iat-repair-fail ?
  • Si l'utilisateur a demandé de refaire la table d'importation/IAT, ai-je refait la même étape ?
  • Ai-je utilisé les chemins d'outils réels basés sur tool-index ?
  • Ai-je produit des preuves reproductibles (commandes/scripts/captures d'écran/rapports) ?
  • Ai-je terminé et renseigné les éléments de la Checklist exigés par RULES ?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

Skills associés