
IPython-Konsolenintegration für IDA Pro
= IPyIDA
IPyIDA ist eine reine Python-Lösung, um eine IPython-Konsole zu IDA Pro hinzuzufügen. Verwenden Sie <Shift-.>, um ein Fenster mit einer eingebetteten Qt-Konsole zu öffnen. Sie können dann von IPythons Autovervollständigung, Online-Hilfe, Eingabefeld mit nichtproportionaler Schrift, Grafiken usw. profitieren.
Sie können sich auch außerhalb von IDA mit ipython console --existing mit dem Kernel verbinden.
image::ipyida-screenshot.png[IPyIDA-Screenshot,width=100%]
== Installation
IPyIDA sollte mit IDA 6.6 und neuer unter Windows, OS X und Linux kompatibel sein. Es wurde bis IDA 9.2 getestet.
=== Schnelle und einfache Installation
Ein Skript ist enthalten, um IPyIDA und seine Abhängigkeiten automatisch von der IDA-Konsole aus zu installieren. Kopieren Sie einfach die folgende Zeile in die IDA-Konsole.
Unter macOS stellt Python3.framework keine vertrauenswürdige CA-Datei bereit. Sie können die systemweite Datei /etc/ssl/cert.pem verwenden.
Das Skript führt Folgendes aus:
pip, falls es nicht bereits installiert istipyida von https://pypi.org/project/ipyida/[PyPi]ipyida_plugin_stub.py in das plugins-Verzeichnis des BenutzersSie können das Skript link:install_from_ida.py[] untersuchen, wenn Sie genau sehen möchten, was es tut.
==== Aktualisieren
Führen Sie das Installationsskript erneut aus, um auf die neueste Version zu aktualisieren, und starten Sie IDA neu.
=== Installation auf die IDA-Art
Wenn Sie Abhängigkeiten und Updates lieber selbst verwalten möchten, können Sie ipyida_plugin_stub.py und das Verzeichnis ipyida in IDAs plugins-Verzeichnis kopieren.
Diese Methode erfordert, dass Sie Abhängigkeiten selbst verwalten. IPyIDA benötigt die Pakete ipykernel und qtconsole sowie das Paket qasync, wenn Sie ipykernel Version 5 oder neuer verwenden.
== Jupyter-Notebook-Integration
IPyIDA enthält einen Magie-Befehl, %open_notebook, um einen Browser mit einem an IPyIDA angehängten Notebook zu öffnen. Der Befehl kümmert sich beim ersten Aufruf um das Installieren von Abhängigkeiten und das Starten eines Notebook-Servers, sofern nicht bereits einer läuft. Weitere Optionen finden Sie in der Befehls-Hilfe (durch Eingabe von %open_notebook?).
== Anpassen der IPython-Konsole
Standardmäßig sind in der Konsole keine globalen Variablen verfügbar. Wenn Sie möchten, dass ein Modul importiert wird, bevor die Konsole geöffnet wird, liest IPyIDA die Datei ipyidarc.py aus dem IDA-Benutzerverzeichnis (idaapi.get_user_idadir()). Alles, was Sie in dieser Datei importieren, ist in der IPython-Konsole verfügbar.
Dies ähnelt der Datei idapythonrc.py.
=== Dunkler Modus
Mit einem dunklen Design in IDA Pro ist es praktischer, auch in der IPython-Konsole ein dunkles Design zu haben. Um das in qtconsole integrierte dunkle Design zu aktivieren, fügen Sie Folgendes in Ihre ipyidarc.py ein:
== IDE-Integration
Eine der bemerkenswerten Funktionen von IPyIDA ist die Möglichkeit, es in die PyCharm-IDE zu integrieren. Dies ermöglicht Funktionen wie schrittweises Durchgehen von Code, Syntaxhervorhebung, GitHub-Copilot-Integration usw. Um diese Funktion zu nutzen, starten Sie einfach IDA, öffnen Sie eine Datenbank, erstellen Sie ein Jupyter Notebook in PyCharm, fügen Sie etwas Code hinzu und klicken Sie auf Ausführen. IPyIDA erledigt die gesamte Magie im Hintergrund.
image::pycharm-screenshot.png[IPyIDA-Screenshot,width=100%]
== Einschränkungen
=== Externe Konsole reagiert nicht, wenn das IDA-Fenster zu lange im Hintergrund ist
Dieses Problem ist spezifisch für die App-Nap-Funktion von OS X in OS X 10.9 und höher. Beim Ausführen scheint das Deaktivieren von App Nap für IDA Pro das Problem zu beheben, ist aber im Moment ein Hack und wird auf einem Laptop mehr Akku verbrauchen. Wir sollten eine bessere Lösung finden.
So deaktivieren Sie App Nap für IDA Pro:
== Ähnliche Arbeiten
@james91b hat ebenfalls erfolgreich einen IPython-Kernel in IDA integriert. Da ich ein Nicht-Windows-IDA-Benutzer bin, brauchte ich etwas Plattformunabhängiges und wählte einen reinen Python-Ansatz für die Implementierung. Obwohl einige der Implementierungsideen aus diesem Projekt stammen, wurde IPyIDA von Grund auf neu geschrieben. Hut ab vor @james91b und allen Mitwirkenden von IDA_IPython. IDA_IPython ist auf Github unter https://github.com/james91b/ida_ipython verfügbar.