
Integrazione della console IPython per IDA Pro
= IPyIDA
IPyIDA è una soluzione basata esclusivamente su Python per aggiungere una console IPython a IDA Pro. Usa <Shift-.> per aprire una finestra con una console Qt incorporata. Potrai quindi usufruire del completamento automatico di IPython, della guida in linea, del campo di input a caratteri monospaziati, dei grafici e così via.
Puoi anche connetterti al kernel dall'esterno di IDA usando ipython console --existing.
image::ipyida-screenshot.png[IPyIDA screenshot,width=100%]
== Installazione
IPyIDA dovrebbe essere compatibile con IDA 6.6 e successive su Windows, OS X e Linux. È stata testata su IDA fino alla 9.2.
=== Installazione rapida e semplice
Viene fornito uno script per installare IPyIDA e le sue dipendenze automaticamente dalla console IDA. Basta copiare la seguente riga nella console IDA.
Su macOS, Python3.framework non fornisce un file CA attendibile. Puoi usare il file di sistema /etc/ssl/cert.pem.
Lo script eseguirà le seguenti operazioni:
pip se non è già installatoipyida da https://pypi.org/project/ipyida/[PyPi]ipyida_plugin_stub.py nella directory plugins dell'utentePuoi ispezionare lo script link:install_from_ida.py[] se desideri vedere esattamente cosa fa.
==== Aggiornamento
Esegui nuovamente lo script di installazione per aggiornare all'ultima versione e riavvia IDA.
=== Installazione con il metodo IDA
Se preferisci gestire tu stesso le dipendenze e gli aggiornamenti, puoi copiare ipyida_plugin_stub.py e la directory ipyida all'interno della directory plugins di IDA.
Questo metodo richiede di gestire le dipendenze per conto proprio. IPyIDA richiede i pacchetti ipykernel e qtconsole e il pacchetto qasync se si usa ipykernel versione 5 o successiva.
== Integrazione con Jupyter Notebook
IPyIDA include un comando magico, %open_notebook, per aprire un browser con un notebook collegato a IPyIDA. Il comando provvede a installare le dipendenze alla prima esecuzione e ad avviare un server Notebook, a meno che non ne sia già in esecuzione uno. Controlla l'aiuto del comando (digitando %open_notebook?) per ulteriori opzioni.
== Personalizzazione della console IPython
Per impostazione predefinita, la console non ha alcuna variabile globale disponibile. Se vuoi che un modulo venga importato prima dell'apertura della console, IPyIDA leggerà il file ipyidarc.py dalla directory utente di IDA (idaapi.get_user_idadir()). Qualsiasi cosa importi in questo file sarà disponibile nella console IPython.
Questo è simile al file idapythonrc.py.
=== Modalità scura
Con un tema scuro in IDA Pro, è più comodo avere un tema scuro anche nella console IPython. Per attivare il tema scuro integrato in qtconsole, aggiungi quanto segue nel tuo ipyidarc.py:
== Integrazione con IDE
Una delle caratteristiche degne di nota di iPyIDA è la possibilità di integrarlo con l'IDE PyCharm. Ciò consente funzionalità come l'esecuzione passo-passo del codice, l'evidenziazione della sintassi, l'integrazione con Github CoPilot, ecc. Per usare questa funzionalità, basta avviare IDA e aprire un database, creare un Jupyter Notebook in PyCharm, aggiungere del codice e fare clic su Esegui. IPyIDA fa tutta la magia in background.
image::pycharm-screenshot.png[IPyIDA screenshot,width=100%]
== Avvertenze
=== La console esterna non risponde se la finestra di IDA rimane in background per troppo tempo
Questo problema è specifico della funzionalità App Nap di OS X in OS X 10.9 e successive. Quando è in esecuzione, disabilitare App Nap per IDA Pro sembra risolvere il problema, ma per ora è un espediente e consumerà più batteria su un laptop; dovremmo trovare una soluzione migliore.
Ecco come disabilitare App Nap per IDA Pro:
== Lavori simili
@james91b ha anche integrato con successo un kernel IPython in IDA. Essendo un utente IDA non Windows, avevo bisogno di qualcosa di multipiattaforma e ho adottato un approccio basato solo su Python per implementarlo. Anche se alcune delle idee di implementazione provengono da quel progetto, IPyIDA è stato scritto da zero. Un ringraziamento a @james91b e a tutti i contributori di IDA_IPython. IDA_IPython è disponibile su Github all'indirizzo https://github.com/james91b/ida_ipython.