Plugin de rétro-ingénierie alimenté par IA pour IDA Pro
Plugin de Rétro-ingénierie Assisté par IA pour IDA Pro
Auteur : Jason Tang
IDAssist est un plugin IDA Pro qui intègre l'analyse basée sur LLM directement dans l'interface d'IDA, offrant une rétro-ingénierie binaire assistée par IA via des fournisseurs LLM configurables, des graphes de connaissances sémantiques, une recherche documentaire RAG, et prend en charge une grande diversité de fournisseurs LLM.
Construit avec Python et PySide6, IDAssist s'exécute comme un panneau dockable dans IDA Pro 9.0+ et communique avec des fournisseurs LLM (OpenAI, Anthropic, Ollama, LiteLLM, et plus) pour analyser des fonctions, suggérer des renommages, répondre à des questions sur le code, et construire un graphe de connaissances interrogeable d'un binaire entier.

Explication de fonction — Génère des explications détaillées en langage naturel des fonctions décompilées avec analyse de sécurité automatique incluant le niveau de risque, le profil d'activité, les indicateurs de sécurité et la détection d'API.
Chat de requête interactif — Posez des questions sur le binaire avec un historique de chat persistant. Utilisez des macros de contexte (#func, #addr, #line, #range) pour injecter du code de fonction, des adresses ou des plages de désassemblage dans les requêtes.
Actions automatisées — Suggestions de renommage assistées par IA pour les fonctions, variables et types. Examinez les modifications proposées dans un tableau avec scores de confiance, puis appliquez les actions sélectionnées à l'IDB.
Graphe de connaissances sémantique — Construisez et explorez un graphe de connaissances des fonctions du binaire, des relations d'appel, des flux de données et des caractéristiques de sécurité. Inclut le rendu visuel du graphe, la recherche sémantique et la détection de communautés.
Recherche documentaire RAG — Téléchargez des documents de référence (.txt, .md, .rst, .pdf) et utilisez-les comme contexte lors des requêtes LLM. Prend en charge la recherche hybride texte+vecteur via l'indexation Whoosh.
Intégration SymGraph — Envoyez et récupérez les noms de fonctions, noms de variables, types et données de graphe vers la plateforme collaborative SymGraph. Inclut un assistant multi-étapes avec résolution de conflits pour les récupérations.
Gestion des paramètres — Configurez plusieurs fournisseurs LLM et MCP, gérez les identifiants API SymGraph, personnalisez le prompt système et définissez les chemins de base de données.
L'onglet Query prend en charge un mode agent ReAct autonome. Lorsqu'il est activé, le LLM planifie une stratégie d'investigation, exécute des outils pour rassembler des informations, réfléchit aux résultats et synthétise une réponse complète — le tout automatiquement en plusieurs cycles de raisonnement.
Configurez les niveaux d'effort de raisonnement pour contrôler à quel point le LLM « réfléchit » avant de répondre :
| Niveau | Budget de réflexion | Idéal pour |
|---|---|---|
| Aucun | Désactivé | Requêtes rapides et simples |
| Faible | ~2K jetons | Analyse simple |
| Moyen | ~10K jetons | Complexité modérée |
| Élevé | ~25K jetons | Analyse approfondie, code complexe |
IDAssist peut se connecter à des serveurs MCP externes pour des interactions LLM augmentées par des outils, où le modèle peut inspecter programmatiquement des fonctions, lire le désassemblage, interroger les références croisées et modifier l'IDB pendant le raisonnement. Les serveurs MCP basés sur URL (SSE ou HTTP streamable) et les serveurs MCP basés sur stdio démarrés à partir d'une commande CLI locale sont pris en charge. IDAssist fournit également des outils internes intégrés pour l'appel de fonction sans nécessiter de serveur MCP externe.
Les fournisseurs LLM avec support d'appel d'outils peuvent invoquer des fonctions d'analyse IDA en cours de conversation, permettant une investigation itérative sans intervention manuelle.
Fournissez un feedback pouce vers le haut/pouce vers le bas sur les explications et les réponses aux requêtes. Les retours sont stockés localement et peuvent être utilisés pour améliorer l'ingénierie des prompts et la sélection des modèles.
IDAssist suit un modèle MVC (Modèle-Vue-Contrôleur) :
src/views/) — Widgets d'onglets PySide6 qui émettent des signaux lors des interactions utilisateursrc/controllers/) — Connectent les signaux des vues aux appels de services, gèrent l'étatsrc/services/) — Logique métier, fournisseurs LLM, accès à la base de données, analyse de graphesrc/services/internal_tools.py) — Définitions d'outils spécifiques à IDA pour l'appel de fonction LLMsrc/services/graphrag/graphrag_tools.py) — Outils de lecture/écriture du graphe sémantique pour l'interaction LLMPrincipes de conception clés :
execute_on_main_thread()Installer le plugin (recommandé — Gestionnaire de plugins IDA) :
hcli plugin install idassist
Ceci installe automatiquement le plugin et ses dépendances Python dans l'environnement IDA.
Ou installer manuellement (à partir de l'archive de version) :
Téléchargez le dernier zip de version depuis les versions GitHub et extrayez-le dans votre répertoire de plugins IDA :
Linux / macOS :
unzip IDAssist-*.zip -d ~/.idapro/plugins/
Windows :
Extrayez le zip dans %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Installez ensuite les dépendances en utilisant le Python fourni avec IDA (pas votre Python système) :
Linux / macOS :
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssist/requirements.txt
Windows :
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssist\requirements.txt"
Remplacez
<IDA_INSTALL_DIR>par le chemin d'installation de votre IDA Pro (par exemple,/opt/idapro-9.0ouC:\Program Files\IDA Pro 9.0).Astuce : Vous pouvez également définir la variable d'environnement
IDAUSRsur un répertoire personnalisé contenant un sous-répertoireplugins/.
Ouvrir IDAssist : Lancez IDA Pro, ouvrez un binaire et appuyez sur Ctrl+Shift+A (ou Édition > Plugins > IDAssist).
Configurer un fournisseur : Allez dans l'onglet Paramètres, cliquez sur Ajouter sous Fournisseurs LLM, et configurez votre fournisseur préféré.
Analyser une fonction : Naviguez vers n'importe quelle fonction, cliquez sur l'onglet Explain et appuyez sur Expliquer la fonction.
Pour des instructions détaillées, voir Démarrage.
IDAssist prend en charge les types de fournisseurs suivants :
| Type | Méthode d'authentification | Notes |
|---|---|---|
anthropic_platform | Clé API | API Anthropic directe |
anthropic_oauth | OAuth (navigateur) | Authentification basée sur navigateur |
anthropic_claude_cli | CLI locale | Utilise le binaire CLI claude |
bedrock | Identifiants AWS | API Converse AWS Bedrock directe |
openai_platform | Clé API | API OpenAI directe |
openai_oauth | OAuth (navigateur) | Authentification basée sur navigateur |
ollama | Aucun (local) | Modèles auto-hébergés |
litellm | URL de proxy | Proxy multi-fournisseur |
| Fournisseur | Modèle | Atouts |
|---|---|---|
| Anthropic | claude-sonnet-4-6 | Analyse de code solide, réflexion étendue |
| OpenAI | gpt-5.3-codex | Rapide, bonne analyse générale |
| Ollama | qwen2.5-coder:32b | Local, aucune clé API requise |
L'onglet Graphe sémantique fournit un graphe de connaissances du binaire :
Explorez le graphe via la Vue liste (appelants, appelés, arêtes, drapeaux), le Graphe visuel (diagramme de nœuds interactif avec expansion N-sauts), ou la Recherche (7 types de requêtes incluant la recherche sémantique, les fonctions similaires et le contexte d'appel).
Cliquez avec le bouton droit dans toute vue de désassemblage ou pseudocode pour accéder à :
| Action | Raccourci | Effet |
|---|---|---|
| Expliquer la fonction | Ctrl+Shift+E | Ouvre l'onglet Explain et génère une explication |
| Demander à propos de la sélection | Ctrl+Shift+Q | Ouvre l'onglet Query avec le contexte #func |
| Suggestions de renommage | — | Ouvre l'onglet Actions et génère des suggestions |
requirements.txtVoir le fichier LICENSE pour plus de détails.