Acerca de
Es un plugin de IDA para ampliar las capacidades de ingeniería inversa de UEFI. Basado en ida-efitools con un montón de correcciones y nuevas funciones.
Funciona tanto con Python 2 como con Python 3. Soporta versiones obsoletas de IDA Pro 7.x sin garantías.
Características
- Definición de GUIDs
- Propagación de estructuras (registros, xrefs, variables de pila)
- Identificación de protocolos e interfaces
- Inicialización de protocolos desconocidos
Características ampliadas
- Puede usarse como plugin y como script.
- Importa automáticamente declaraciones C personalizadas (structs, enums, unions, typedefs) desde el directorio
efitools2/types
- Establece los permisos del segmento de código a RWE (para corregir la eliminación incorrecta de código muerto en la vista del descompilador)
Características solo de plugin
- Proporciona la capacidad de sincronizar tipos externos
- Imprime y copia al portapapeles el EFI_GUID seleccionado desde la vista del desensamblador
- Extrae EFI_GUID de asignaciones de variables locales
Notas importantes
- Se rechaza behemoth.til en favor de uefi.til y uefi64.til de IDA
- No use uefi(64).til de IDA 7.3 porque contiene errores
Uso
Como script
Simplemente ejecute efitools2/efitools.py desde IDA.
Como plugin
Atajos de teclado:
- Ctrl-Alt-E - hace toda la magia
- Ctrl-Alt-G (sobre datos) - imprime y copia el EFI_GUID en la ubicación actual del cursor
- Ctrl-Alt-G (sobre código) - extrae y copia el EFI_GUID de la asignación de variable local (coloque el cursor en la asignación de
EFI_GUID.data1)
- F5 (en la ventana de Tipos Locales) - sincroniza los tipos locales desde la carpeta
types
Ajuste
- Los atajos de teclado pueden configurarse en el archivo
ida-efitool2.py.
- Algunas preferencias se encuentran en el archivo
efitools2/efitools.py.
- Los GUIDs personalizados deben colocarse dentro del archivo
efitools2/guids/custom.ini.
- Los protocolos personalizados deben colocarse dentro de la carpeta
efitools2/types. Consulte los ejemplos disponibles.
Cómo exportar tipos personalizados
Es una función integrada de IDA. Simplemente abra el menú contextual del tipo en la ventana de Tipos Locales y seleccione la acción 'Export to header file'.
Requisitos previos
pip install future - Solo para Python 2.
pip install clipboard - Si desea copiar automáticamente el contenido de EFI_GUID al portapapeles.
Instalación del plugin
Simplemente copie el archivo ida-efitools2.py y la carpeta efitools2 al directorio de plugins de IDA.
Créditos
@snare por la base de código original de ida-efiutils.
@danse-macabre por ida-efitools reescrito desde cero.
@djpohly, @al3xtjames, @vutung2311 por sus contribuciones (forks).
@p-state (yo) por darle nueva vida a esto.