È un plugin IDA per estendere le capacità di reverse engineering UEFI. Basato su ida-efitools con una serie di correzioni e nuove funzionalità.
Funziona sia con Python 2 che con Python 3. Supporta versioni obsolete di IDA Pro 7.x senza garanzie.
Funzionalità
- Definizione dei GUID
- Propagazione delle strutture (registri, xref, variabili di stack)
- Identificazione di protocolli e interfacce
- Inizializzazione di protocolli sconosciuti
Funzionalità estese
- Può essere utilizzato sia come plugin che come script.
- Importa automaticamente dichiarazioni C personalizzate (struct, enum, union, typedef) dalla directory
efitools2/types
- Imposta i permessi del segmento di codice su RWE (per correggere l'errata eliminazione del codice morto nella vista del decompilatore)
Funzionalità solo plugin
- Fornisce la possibilità di sincronizzare i tipi esterni
- Stampa e copia negli appunti il EFI_GUID selezionato dalla vista del disassembler
- Estrae EFI_GUID dalle assegnazioni di variabili locali
Note importanti
- behemoth.til viene rifiutato a favore di uefi.til e uefi64.til di IDA
- Non utilizzare uefi(64).til di IDA 7.3 perché contiene errori
Utilizzo
Come script
Basta eseguire efitools2/efitools.py da IDA.
Come plugin
Tasti rapidi:
- Ctrl-Alt-E - esegue tutta la magia
- Ctrl-Alt-G (sui dati) - stampa e copia EFI_GUID nella posizione corrente del cursore
- Ctrl-Alt-G (sul codice) - estrae e copia EFI_GUID dall'assegnazione di una variabile locale (posiziona il cursore sull'assegnazione di
EFI_GUID.data1)
- F5 (nella finestra Local Types) - sincronizza i tipi locali dalla cartella
types
Regolazione
- I tasti rapidi possono essere configurati nel file
ida-efitool2.py.
- Alcune preferenze si trovano nel file
efitools2/efitools.py.
- I GUID personalizzati devono essere inseriti nel file
efitools2/guids/custom.ini.
- I protocolli personalizzati devono essere inseriti nella cartella
efitools2/types. Consulta gli esempi disponibili.
Come esportare tipi personalizzati
È una funzionalità integrata di IDA. Basta aprire il menu contestuale per il tipo nella finestra Local Types e selezionare l'azione 'Export to header file'.
Prerequisiti
pip install future - Solo per Python 2.
pip install clipboard - Se vuoi copiare automaticamente il contenuto di EFI_GUID negli appunti.
Installazione del plugin
Basta copiare il file ida-efitools2.py e la cartella efitools2 nella directory dei plugin di IDA.
Crediti
@snare per il codice originale di ida-efiutils.
@danse-macabre per ida-efitools riscritto da zero.
@djpohly, @al3xtjames, @vutung2311 per i contributi (fork).
@p-state (io) per aver dato nuova vita a questo progetto.