ESET Research annuncia IPyIDA 2.0, un plug-in Python che integra IPython e Jupyter Notebook in IDA
IDA Pro di Hex-Rays è probabilmente lo strumento più popolare oggi per il software di reverse engineering. Per i ricercatori ESET, questo strumento è un disassemblatore preferito e ha ispirato lo sviluppo del IPyIDA plugin che incorpora un file Kernel IPython in IDAPro. In continuo sviluppo dal 2014, siamo lieti di annunciare il rilascio della versione 2.0. IPyIDA ha uno scopo simile a quello di un altro plugin chiamato IDAIPython, ma con una svolta: mentre IDA IPython supporta solo Windows, IPyIDA supporta macOS, Linux e Windows.
Se hai già familiarità con IDA Pro e IPython, passa a ultima sezione di questo articolo su IPyIDA. Se non hai familiarità con IPython, passa a sezione centrale. Infine, se desideri una breve introduzione a IDA Pro, continua a leggere.
Cos'è IDA Pro?
IDA Pro è un disassemblatore che traduce il codice macchina in codice assembly. Dopo aver caricato un file, IDA Pro lo disassembla e memorizza l'analisi nei file del database. IDA Pro fornisce varie finestre nel database, ognuna delle quali aiuta in modo univoco il ricercatore a trovare e comprendere meglio il codice di interesse.
Diamo un'occhiata ad alcune di queste finestre caricando il file MathLibrary.dll, che può essere compilato con Microsoft tutorial sulla creazione di un file DLL.
Finestra di uscita
La finestra Output visualizza i messaggi sullo stato dell'analisi di un file, i messaggi di errore per le operazioni richieste dall'utente e l'output di alcuni plug-in. La Figura 1 mostra la finestra Output dopo il primo caricamento MathLibrary.dll.
Nella parte inferiore di questa finestra è presente un campo di input che accetta i comandi. La Figura 2 mostra i due fornitori di linguaggi di comando predefiniti forniti con IDA a partire dalla versione 7.3: IDC per i comandi scritti in un linguaggio simile al C nativo di IDA e il Plug-in IDAPython per i comandi scritti in Python.
Finestra di visualizzazione IDA
La finestra IDA View, nota anche come finestra di disassemblaggio, ha due formati di visualizzazione: vista grafico e vista testo. La vista grafico visualizza il flusso del programma suddividendo le funzioni in blocchi con un unico punto di ingresso e un unico punto di uscita. La Figura 3 mostra la visualizzazione del grafico.
La visualizzazione testo fornisce una visualizzazione lineare del disassemblaggio che mostra indirizzi virtuali, codice assembly e commenti. La Figura 4 mostra la visualizzazione del testo.
Oltre a queste e alle molte altre finestre fornite da IDA, IDA consente di scrivere plug-in personalizzati che ne estendono le funzionalità e risolvono problemi pratici di reverse engineering. Passiamo a IPython e ad alcune caratteristiche interessanti che offre ai reverse engineer che utilizzano gli script Python in IDA.
Uno sguardo a IPython
Mentre IDAPython soddisfa le esigenze di base per l'esecuzione di script e comandi Python in IDA, gli appassionati di Python sono stati catturati da IPython febbre. IPython è un toolkit che offre un'esperienza più interattiva con Python. IPython utilizza un modello a due processi costituito da un kernel e un client. Il kernel è un processo che riceve comandi dal client, li esegue e restituisce i risultati. Il client può essere qualsiasi console interattiva come Console di Giove, Console Qt di Jupyter, o Notebook Jupyter.
La natura interattiva di questi client deriva dalla serie di funzionalità che aggiungono alla classica shell Python. La figura 5 mostra l'utilizzo di un blocco di codice multilinea per definire una funzione in IPython.
Si noti l'evidenziazione della sintassi di numeri interi, parole chiave, funzioni incorporate e stringhe.
Premendo il pulsante Linguetta key, IPython fornisce un elenco di attributi, oggetti o funzioni rilevanti che possono completare il codice. La Figura 6 mostra le funzioni dell'elenco di completamento tramite tabulazione relative a un oggetto stringa.
Il completamento della scheda è più ricco se Jedi è installato.
IPython fornisce anche funzioni magiche, che sono funzioni che vengono tipicamente chiamate con a % or %% prefix e accetta argomenti con una sintassi in stile riga di comando. La figura 7 mostra il %tempo funzione magica, che cronometra l'esecuzione di un'espressione Python.
Usando il ! carattere all'inizio di una riga di comando, la console IPython passa il comando alla shell di sistema sottostante da eseguire. Ad esempio, un comando popolare è seme, che installa e gestisce i pacchetti da Indice dei pacchetti Python (PiPi). La figura 8 mostra il !pippo comando eseguito da IPython.
IPython offre molte altre funzionalità interattive che possono essere esplorate in documentazione ufficiale.
IPyIDA: portare IPython in IDA
Con il rilascio di IPyIDA 2.0, la scrittura di script Python in IDA è più semplice grazie ai seguenti vantaggi:
- Supporto per IDA su Windows, Linux e macOS
- Uno script di installazione per una facile configurazione, anche in a ambiente virtuale
- Una console Jupyter Qt in esecuzione in una finestra IDA
- Un kernel IPython che può connettersi a front-end, come Jupyter Console, dall'esterno di IDA.
- Un proxy del kernel Jupyter per supportare l'apertura di un notebook Jupyter che si riconnette al kernel IPython con l'estensione %open_notebook funzione magica
La Figura 9 mostra il processo di apertura di un Jupyter Notebook da IPyIDA.
La Figura 10 mostra una console Jupyter in esecuzione in una sessione terminale all'esterno di IDA che si connette al kernel IPython in IDA.
La scelta della console Jupyter Qt per IPyIDA offre funzionalità interattive aggiuntive alla tradizionale console IPython, come la grafica in linea, il salvataggio e la stampa della sessione corrente e l'evidenziazione completa della sintassi. Questi sono illustrati nel documentazione ufficiale per la console Jupyter Qt.
IPyIDA fornisce anche le proprie funzionalità interattive ispirate a IDA. La Figura 11 mostra che facendo clic tenendo premuto Ctrl (facendo clic su Cmd su macOS) sugli indirizzi o sui nomi delle variabili nella console IPython, la visualizzazione passa all'indirizzo virtuale nella finestra di disassemblaggio.
La Figura 12 mostra un dump esadecimale per un array di byte con contenuto non ASCII.
Se sei nuovo in IDA Pro, IPyIDA è di grande aiuto per familiarizzare con il API dell'IDA. Se sei un veterano, IPyIDA rende lo scripting Python molto più semplice, e quindi il tempo dedicato al reverse engineering si spera più mirato e fruttuoso.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Fonte: https://www.welivesecurity.com/2023/01/12/introducing-ipyida-python-plugin-reverse-engineering-toolkit/
- 1
- 10
- 11
- 2014
- 7
- 9
- a
- WRI
- accetta
- aggiunta
- aggiuntivo
- indirizzo
- indirizzi
- vantaggi
- Dopo shavasana, sedersi in silenzio; saluti;
- aiuto
- consente
- già
- .
- ed
- Annunciare
- annuncia
- Un altro
- apprezzare
- argomenti
- Italia
- articolo
- montaggio
- attraente
- gli attributi
- precedente
- basic
- perché
- diventando
- Inizio
- essendo
- Meglio
- Bloccare
- Blocchi
- Parte inferiore
- Portare
- Porta
- costruito
- incassato
- detto
- carattere
- scegliere
- classico
- cliente
- clienti
- codice
- Commenti
- completamento di una
- completamento
- Connettiti
- Collegamento
- collega
- Consistente
- consolle
- contenuto
- continuo
- Creazione
- Corrente
- costume
- Banca Dati
- Predefinito
- Mercato
- Dsiplay
- display
- documentazione
- cumulo di rifiuti
- ogni
- più facile
- finisce
- Ingegneria
- Ingegneri
- gli appassionati
- iscrizione
- errore
- Anche
- esempio
- esegue
- esecuzione
- uscita
- esperienza
- Esplorazione
- estendere
- familiare
- preferito
- Caratteristiche
- pochi
- campo
- figura
- Compila il
- File
- Infine
- Trovate
- Nome
- flusso
- concentrato
- i seguenti
- amichevole
- da
- anteriore
- pieno
- function
- funzioni
- gif
- dà
- Sguardo
- grafico
- grafiche
- aiutare
- HEX
- mettendo in evidenza
- Fiduciosamente
- host
- HTML
- HTTPS
- Enorme
- IDC
- in
- ingresso
- fonte di ispirazione
- Integrazione
- interattivo
- interesse
- l'introduzione di
- Introduzione
- IT
- salti
- Le
- conosciuto
- Lingua
- linea
- linux
- Lista
- annuncio
- Caricamento in corso
- Guarda
- macchina
- macos
- magia
- FA
- gestisce
- molti
- max-width
- messaggi
- Microsoft
- modello
- Scopri di più
- maggior parte
- Più popolare
- nomi
- nativo
- Natura
- esigenze
- New
- taccuino
- oggetto
- oggetti
- Offerte
- apertura
- Operazioni
- Altro
- al di fuori
- proprio
- pacchetto
- Packages
- Passi
- Platone
- Platone Data Intelligence
- PlatoneDati
- contento
- plug-in
- i plugin
- punto
- Popolare
- Pratico
- Pro
- probabilmente
- problemi
- processi
- Programma
- fornitori
- fornisce
- delega
- scopo
- Python
- QT
- Leggi
- riceve
- rilasciare
- pertinente
- riparazioni
- ricercatore
- ricercatori
- Risultati
- problemi
- invertire
- Correre
- running
- risparmio
- script
- serve
- Sessione
- flessibile.
- Conchiglia
- spediti
- Spettacoli
- simile
- da
- singolo
- Software
- RISOLVERE
- alcuni
- esaurito
- Stato dei servizi
- negozi
- tale
- supporto
- supporti
- sintassi
- sistema
- Fai
- terminal
- Il
- tempo
- volte
- a
- oggi
- toolkit
- tradizionale
- TURNO
- twist
- tipicamente
- per
- sottostante
- capire
- sconosciuto
- uso
- vario
- versione
- veterano
- Visualizza
- virtuale
- quale
- OMS
- largo
- finestre
- sarebbe
- scrivere
- scrittura
- scritto
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro