
Piccolo e carino plugin emulatore per IDA basato su unicorn.
uEmu è un piccolo e carino plugin emulatore per IDA basato sul motore unicorn.
Supporta le seguenti architetture out of the box: x86, x64, ARM, ARM64, MIPS, MIPS64

MSR S3_x, X0 per ARM64)idapyswitchbrew install unicorn per installare i binari di Unicornpip install unicorn per installare i binding Python di UnicornFile / Script file... o ALT+F7 in IDA per caricare uEmu.pyOpzionalmente uEmu può essere caricato automaticamente come plugin IDA. In tal caso, mettilo nella cartella [IDA]/Plugins e imposta USE_AS_SCRIPT a False all'interno di uEmu.py

ALT/OPTION per specificare un numero)Avvia l'emulazione dal cursore. È necessario prima fornire il contesto CPU iniziale (vedi Aggiornare il Contesto CPU) Dopodiché tutti i segmenti del database IDA verranno mappati nell'emulatore (anche i dati inizializzati verranno copiati).
Esegue il codice fino al raggiungimento di un breakpoint di codice o memoria, o fino a un evento che richiede l'azione dell'utente.
Esegue un passo singolo. Tieni premuto ALT/OPTION per specificare il numero di passi da eseguire.

Quando l'emulazione è in corso, questo comando può essere usato per interrompere l'esecuzione.
Resetta l'istanza dell'emulatore e smappa tutte le regioni di memoria.
Puoi usare i breakpoint IDA per indicare i punti in cui l'emulazione deve essere interrotta. Questo include breakpoint di codice e di memoria. Solitamente usati insieme al comando Run.
Quando l'emulatore deve accedere a una memoria non ancora mappata, il plugin mostrerà il seguente dialogo.


Quando l'emulatore incontra un'istruzione sconosciuta, è possibile saltarla e ripristinare manualmente il contesto CPU.

Un semplice pannello per controllare l'esecuzione.

Contesto CPU corrente.

Ogni volta che l'emulazione si ferma, i registri modificati verranno evidenziati. I registri possono essere visualizzati in 1, 2 o 3 colonne tramite il menu a comparsa.
È possibile aggiornare il contesto CPU tramite il menu a comparsa (vedi sotto).
Contesto CPU esteso corrente.

Ogni volta che l'emulazione si ferma, i registri modificati verranno evidenziati. I registri possono essere visualizzati in 1, 2 o 3 colonne tramite il menu a comparsa.
È possibile aggiornare il contesto CPU tramite il menu a comparsa (vedi sotto).
Usa questa vista per osservare le regioni di memoria per un indirizzo e una dimensione specificati. Il commento verrà visualizzato nel titolo per comodità.

Ogni volta che l'emulazione si ferma, i blocchi di memoria modificati verranno evidenziati.

I valori dei registri possono essere modificati singolarmente o tutti insieme con un file JSON tramite il menu a comparsa. Il contesto corrente può anche essere salvato in un file JSON per uso futuro.



Oltre a tutte le funzioni elencate nel menu a comparsa, ci sono un paio di nuovi comandi.

Mostra tutte le regioni mappate. Usa il menu a comparsa per visualizzare la memoria di una regione particolare o esportarla in un file.

Questo comando tenta di sincronizzare i segmenti IDA con la memoria mappata creando nuove mappature o unendo con quelle esistenti se possibile. Questo aiuta ad aggiungere nuovi segmenti IDA all'emulatore in esecuzione senza doverlo riavviare.
Carica lo stato di uEmu da file.
Salva lo stato di uEmu in un file. Nota che vengono salvati solo i registri definiti nel plugin.

È anche possibile aggiungere nuove funzionalità o costruire il tuo progetto su uEmu usando il sistema di estensione. Trova la descrizione con esempio qui