
IDAssist v2.3.0
Plugin de rétro-ingénierie alimenté par IA pour IDA Pro
IDAssist
Plugin de Rétro-ingénierie Assisté par IA pour IDA Pro
Auteur : Jason Tang
Description
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.

Fonctionnalités principales
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.
Capacités avancées
Agent ReAct
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.
Réflexion étendue
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 |
Intégration MCP
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.
Appel de fonction
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.
Feedback RLHF
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.
Architecture
IDAssist suit un modèle MVC (Modèle-Vue-Contrôleur) :
- Vues (
src/views/) — Widgets d'onglets PySide6 qui émettent des signaux lors des interactions utilisateur - Contrôleurs (
src/controllers/) — Connectent les signaux des vues aux appels de services, gèrent l'état - Services (
src/services/) — Logique métier, fournisseurs LLM, accès à la base de données, analyse de graphe - Outils internes (
src/services/internal_tools.py) — Définitions d'outils spécifiques à IDA pour l'appel de fonction LLM - Outils graphiques (
src/services/graphrag/graphrag_tools.py) — Outils de lecture/écriture du graphe sémantique pour l'interaction LLM
Principes de conception clés :
- Tous les appels à l'API IDA s'exécutent sur le thread principal via
execute_on_main_thread() - Les réponses LLM sont diffusées de manière incrémentielle vers l'interface utilisateur
- Bases de données SQLite locales pour la persistance (aucune base de données externe requise)
- Registre de services singleton avec initialisation thread-safe
Démarrage rapide
-
Installer le plugin (recommandé — Gestionnaire de plugins IDA) :
hcli plugin install idassistCeci 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.txtWindows :
"<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.
Configuration des fournisseurs LLM
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 |
Modèles recommandés
| 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 |
Utilisation du graphe sémantique
L'onglet Graphe sémantique fournit un graphe de connaissances du binaire :
- Réindexer le binaire — Extrait la structure des fonctions, le graphe d'appels et les références croisées
- Analyse sémantique — Génère des résumés LLM pour chaque fonction
- Analyse de sécurité — Détecte les motifs de vulnérabilité et les API pertinentes pour la sécurité
- Flux réseau — Suit les opérations réseau à travers le graphe d'appels
- Détection de communautés — Regroupe les fonctions connexes en modules
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).
Actions du menu contextuel
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 |
Prérequis
- IDA Pro 9.0+ avec Python 3 et PySide6
- Décompilateur Hex-Rays (recommandé pour les fonctionnalités de pseudocode)
- Paquets Python listés dans
requirements.txt
Documentation
- Index de la documentation
- Démarrage
- Références des onglets : Explain | Query | Actions | Graphe sémantique | RAG | Paramètres
- Flux de travail : Explain | Query | Graphe sémantique
Page d'accueil
Licence
Voir le fichier LICENSE pour plus de détails.