Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
ida-efiutils — Algunos scripts para IDA Pro que ayudan con la ingeniería inversa de binarios EFI | Kitploit
Herramientas/GitHubGitHub/snare/ida-efiutils
Seguridad de Sistemas EmbebidosIngeniería InversaSeguridad de Hardware e IoTAnálisis de BinariosAnálisis de Firmware
GitHubsnare/ida-efiutils

ida-efiutils

Algunos scripts para IDA Pro que ayudan con la ingeniería inversa de binarios EFI

Ver Repositorio
30966hace 7 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Scripts EFI para IDA Pro

Algunos scripts de IDA para ayudar con la ingeniería inversa de ejecutables EFI.

Este paquete contiene los siguientes archivos:

  1. efiutils.py - Módulo IDAPython con algunas funciones auxiliares

  2. efiguids.py - Una colección de GUID conocidos para protocolos EFI

  3. efiguids_ami.py - Una colección de GUID conocidos para protocolos utilizados en el BIOS AMI

  4. behemoth.h - Un encabezado gigante que contiene una colección de definiciones de tipos y estructuras para EFI

  5. structs.idc - Un script IDC que contiene algunas definiciones de estructuras (reemplazado por behemoth.h)

  6. te_image.bt - Una plantilla del Editor 010 para imágenes binarias TE

  7. te_loader.py - Un script de cargador de IDA Pro para imágenes binarias TE

Este es mi primer intento de scripting con IDA, así que por favor perdóname y avísame si he reinventado la rueda o he hecho algo absurdo.

Funciones

Las principales funciones útiles se describen a continuación. Consulta el código y las cadenas de documentación para obtener más información sobre otras funciones.

rename_tables()

Encuentra el primer punto de entrada del binario, intenta rastrear los parámetros que se pasaron a la función de punto de entrada y renombra las variables globales en las que se almacenan las tablas EFI clave. Se realizan las siguientes operaciones de renombrado:

  1. La variable global donde termina ImageHandle se renombra a gImageHandle.

  2. La variable global donde termina SystemTable se renombra a gSystemTable.

  3. La variable global donde termina SystemTable->BootServices se renombra a gBootServices.

  4. La variable global donde termina SystemTable->RuntimeServices se renombra a gRuntimeServices.

Las instrucciones de llamada solo se seguirán un nivel de profundidad, ya que la mayoría de los ejecutables copian las referencias de las tablas en el punto de entrada o en una función llamada desde el punto de entrada. Cambia MAX_STACK_DEPTH si es necesario.

update_structs()

Encuentra referencias cruzadas a las tablas renombradas anteriormente y actualiza sus nombres para que sean desplazamientos de estructura de las estructuras correspondientes. Si rename_tables() falló, necesitarás renombrar las cosas manualmente como se indicó anteriormente para que esto funcione correctamente.

Por ejemplo:

root@kitploit:~
    mov     rax, cs:qword_whatever
    call    qword ptr [rax+150h]

Se convierte en:

root@kitploit:~
    mov     rax, cs:gBootServices
    call    [rax+EFI_BOOT_SERVICES.UninstallMultipleProtocolInterfaces]

rename_guids()

Encuentra GUID en los segmentos de datos y los renombra. Se extrajeron 470 GUID de protocolos del código fuente de TianoCore, y se agregarán GUID propietarios de Apple (y de otros proveedores) a medida que se encuentren.

go()

Método de conveniencia que realiza todo lo anterior.

Uso

  1. Carga tu binario EFI en IDA Pro

  2. Importa behemoth.h para definir las estructuras de datos necesarias

  3. Agrega las estructuras de los tipos locales a tu IDB

  4. Ejecuta efiutils.py para agregarlo a la ruta de Python (o hazlo por algún otro método)

  5. Echa un vistazo al código/las cadenas de documentación, pero probablemente:

    root@kitploit:~
     import efiutils; efiutils.go()
    

Para usar el cargador de imágenes TE te_loader.py, instálalo como lo harías con cualquier otro cargador. En OS X, esto se hace copiándolo o creando un enlace simbólico dentro de la carpeta de cargadores en idaq.app/Contents/MacOS/loaders/.

Descargar herramienta