
Intégration de la console IPython pour IDA Pro
= IPyIDA
IPyIDA est une solution 100 % Python permettant d'ajouter une console IPython
à IDA Pro. Utilisez <Shift-.> pour ouvrir une fenêtre avec une console Qt
intégrée. Vous pouvez alors bénéficier de l'autocomplétion d'IPython, de
l'aide en ligne, du champ de saisie en police monospace, des graphiques, etc.
Vous pouvez également vous connecter au noyau depuis l'extérieur d'IDA à
l'aide de ipython console --existing.
image::ipyida-screenshot.png[IPyIDA screenshot,width=100%]
== Installation
IPyIDA devrait être compatible avec IDA 6.6 et versions ultérieures sous Windows, OS X et Linux. Il a été testé avec IDA jusqu'à la version 9.2.
=== Installation rapide et simple
Un script est fourni pour installer IPyIDA et ses dépendances automatiquement depuis la console IDA. Copiez simplement la ligne suivante dans la console IDA.
Sous macOS, Python3.framework ne fournit pas de fichier CA de confiance.
Vous pouvez utiliser le fichier système /etc/ssl/cert.pem.
Le script effectuera les opérations suivantes :
pip s'il n'est pas déjà installéipyida depuis https://pypi.org/project/ipyida/[PyPi]ipyida_plugin_stub.py dans le répertoire plugins de l'utilisateurVous pouvez inspecter le script link:install_from_ida.py[] si vous souhaitez voir exactement ce qu'il fait.
==== Mise à jour
Relancez le script d'installation pour passer à la dernière version et redémarrez IDA.
=== Installation à la manière d'IDA
Si vous préférez gérer vous-même les dépendances et les mises à jour, vous
pouvez copier ipyida_plugin_stub.py et le répertoire ipyida dans le
répertoire plugins d'IDA.
Cette méthode nécessite de gérer les dépendances par vos propres moyens. IPyIDA
requiert les paquets ipykernel et qtconsole, ainsi que le paquet qasync
si vous utilisez ipykernel version 5 ou ultérieure.
== Intégration avec Jupyter Notebook
IPyIDA inclut une commande magique, %open_notebook, pour ouvrir un navigateur
avec un notebook attaché à IPyIDA. La commande se charge d'installer les
dépendances lors de sa première exécution et de démarrer un serveur Notebook
s'il n'en existe pas déjà un. Consultez l'aide de la commande (en tapant
%open_notebook?) pour plus d'options.
== Personnalisation de la console IPython
Par défaut, la console ne dispose d'aucune variable globale. Si vous souhaitez
qu'un module soit importé avant l'ouverture de la console, IPyIDA lira le
fichier ipyidarc.py depuis le répertoire utilisateur d'IDA
(idaapi.get_user_idadir()). Tout ce que vous importez dans ce fichier sera
disponible dans la console IPython.
Ceci est similaire au fichier idapythonrc.py.
=== Mode sombre
Avec un thème sombre dans IDA Pro, il est plus pratique d'avoir également un
thème sombre dans la console IPython. Pour activer le thème sombre intégré à
qtconsole, ajoutez ce qui suit dans votre ipyidarc.py :
== Intégration IDE
L'une des caractéristiques notables d'iPyIDA est la possibilité de l'intégrer à l'IDE PyCharm. Cela permet des fonctionnalités telles que le pas à pas dans le code, la coloration syntaxique, l'intégration de Github CoPilot, etc. Pour utiliser cette fonctionnalité, lancez simplement IDA et ouvrez une base de données, créez un Jupyter Notebook dans PyCharm, ajoutez du code, puis cliquez sur Exécuter. IPyIDA fait toute la magie en arrière-plan.
image::pycharm-screenshot.png[IPyIDA screenshot,width=100%]
== Mises en garde
=== Console externe qui ne répond plus si la fenêtre d'IDA reste en arrière-plan trop longtemps
Ce problème est spécifique à la fonction App Nap d'OS X à partir d'OS X 10.9. Lors de l'exécution la désactivation d'App Nap pour IDA Pro semble résoudre le problème, mais ce n'est qu'un bricolage pour l'instant et utilisera plus de batterie sur un ordinateur portable ; nous devrions trouver une meilleure solution.
Voici comment désactiver App Nap pour IDA Pro :
== Travaux similaires
@james91b a également intégré avec succès un noyau IPython dans IDA. Étant un utilisateur d'IDA sous un environnement non-Windows, j'avais besoin de quelque chose de multiplateforme et j'ai opté pour une approche 100 % Python pour l'implémenter. Bien qu'une partie des idées d'implémentation provienne de ce projet, IPyIDA a été écrit de zéro. Chapeau à @james91b et à tous les contributeurs d'IDA_IPython. IDA_IPython est disponible sur Github à l'adresse https://github.com/james91b/ida_ipython.