Idacode facilite l'exécution et le débogage des scripts Python dans votre environnement IDA sans quitter le code Visual Studio. L'extension VS Code peut être trouvée sur le marché.
Idacode est encore dans un état très précoce et les bugs sont à prévoir. Veuillez ouvrir un nouveau problème si vous rencontrez des problèmes.
debugpy pour la communication, il synchronise naturellement la fenêtre de sortie avec le panneau de sortie du code vs.Idacode prend en charge Python 2 et Python 3!
Pour configurer les dépendances pour le plugin IDA RUN:
# make sure to use the correct Python version
# IDACode supports the latest debugpy as of version 3.0.0, make sure to upgrade!
python -m pip install --user debugpy tornado Clone ce référentiel ou téléchargez un package de version à partir d'ici. ida.zip reflète le contenu du dossier ida dans ce référentiel. Copiez tous les fichiers dans le répertoire du plugin IDAS.
L'étape suivante consiste à configurer vos paramètres pour correspondre à votre environnement. Modifier idacode_utils/settings.py en conséquence:
HOST : Ceci est l'adresse de l'hôte. C'est toujours 127.0.0.1 à moins que vous souhaitiez qu'il soit accessible à partir d'un emplacement distant. Gardez à l'esprit que ce plugin n'utilise pas d'authentification.PORT : Ceci est le port que vous voulez qu'Ida écoute. Ceci est utilisé pour la communication WebSocket entre IDA et VS Code.DEBUG_PORT : Il s'agit du port que vous souhaitez écouter pour les séances de débogage entrantes.PYTHON : c'est le chemin absolu vers la distribution Python que votre configuration IDA utilise.LOGGING : détermine si le débogueur doit se connecter aux fichiers. Ceci est particulièrement utile lorsque vous rencontrez des problèmes avec Idacode. Veuillez soumettre un nouveau problème si vous trouvez quelque chose. Les fichiers sont toujours situés dans votre répertoire temporaire (par exemple Windows: %TEMP% ). Les fichiers sont appelés debugpy.*.log . Vous pouvez maintenant démarrer le plugin en cliquant sur IDACode dans le menu des plugins.
L'extension VS Code est disponible sur le marché. Pour configurer l'extension, veuillez vous référer à la lecture de l'extension.
Appuyez sur IDACode dans le menu du plugin. Vous devez être accueilli avec le texte suivant:
IDACode listening on 127.0.0.1:7065
En ce qui concerne la version 0.2.0, l'idacode prend en charge "Exécuter sur Save" qui est activé par défaut. VS Code exécutera automatiquement votre script dans IDA dès que vous enregistrez le document actuel (par exemple avec Ctrl + S). Ce comportement peut être désactivé dans les paramètres.
Il y a 4 commandes à votre disposition:

Une fois que vous avez un dossier ouvert dans lequel vous souhaitez mettre vos scripts (vous devez spécifier le dossier lorsque le code vs vous le demande!) Vous êtes prêt à vous connecter à IDA. Vous pouvez le faire en exécutant Connect to IDA ou Connect and attach a debugger to IDA . Veuillez garder à l'esprit qu'une session de débogage est permanente jusqu'à ce que vous redémarrez IDA. Vous ne pouvez pas modifier le dossier de l'espace de travail une fois le débogueur a commencé.
Assurez-vous que le dossier de l'espace de travail est le dossier dans lequel se trouvent vos scripts principaux.
Une fois que vous êtes connecté, vous pouvez sélectionner Execute script in IDA .
Idacode utilise le débogueur distant de VS Code pour se connecter à IDA. Toutes les fonctionnalités de code VS sont prises en charge. Cependant, vous devez spécifier le point d'entrée des scripts en utilisant la fonctionnalité Python intégrée: breakpoint . Cette instruction indique au débogueur de suspendre l'exécution, s'il n'y a pas de débogueur présent, il ignorera simplement la fonction. Idacode importe un package d'assistance appelé dbg qui implémente une surcharge de breakpoint appelé bp . Cette fonction prend en charge la journalisation et les conditions:
name = idc . get_segm_name ( segment )
dbg . bp ( name == ".text" , f"found { name } at { segment } " ) Veuillez également noter qu'un appel breakpoint() ne devrait jamais se produire à la fin d'un fichier, il doit toujours être avant toute autre ligne de code car elle se casse à l'instruction suivante de votre code. Notez également que si vous décidez d'utiliser le package dbg , vous devez soit supprimer toutes les références, soit utiliser la variable __idacode__ comme conditionnel avant de l'exécuter comme un script IDA normal.
Il est également important que la connexion d'un débogueur crée une nouvelle instance de débogueur. Dans la plupart des cas, ce n'est pas ce que vous voulez. Si vous vous déconnectez du débogueur, utilisez le débogueur distant de VS Code pour vous connecter.
