Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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
ghidra-firmware-utils — Extensión de Ghidra para ingeniería inversa de firmware de PC, que proporciona cargadores para ROMs de opción PCI, Intel Flash Descriptor, coreboot CBFS y volúmenes de firmware UEFI, además de scripts auxiliares UEFI para recuperación de tipos e identificación de GUID. | Kitploit
Herramientas/GitHubGitHub/al3xtjames/ghidra-firmware-utils
Seguridad de Sistemas EmbebidosIngeniería InversaSeguridad de HardwareSeguridad de Hardware e IoTAnálisis de BinariosAnálisis de Firmware
GitHubal3xtjames/ghidra-firmware-utils

ghidra-firmware-utils

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

Extensión de Ghidra para ingeniería inversa de firmware de PC, que proporciona cargadores para ROMs de opción PCI, Intel Flash Descriptor, coreboot CBFS y volúmenes de firmware UEFI, además de scripts auxiliares UEFI para recuperación de tipos e identificación de GUID.

Ver Repositorio
5035699hace 26 díasRevisado por Kitploit

Ghidra Firmware Utilities

Varios módulos para Ghidra que ayudan en la ingeniería inversa de firmware de PC. Esto fue aceptado como un proyecto de coreboot para GSoC 2019.

Características

Cargador de ROM de opción PCI

  • Implementa un cargador de FS para ROM de opción PCI (maneja ROM híbridas con múltiples imágenes, p. ej. x86 heredado + UEFI)
  • Carga ejecutables UEFI desde ROM de opción PCI (incluidas imágenes comprimidas)
  • Define la función de punto de entrada y varios tipos de datos de cabecera para ROM de opción x86 heredadas

Cargador de imágenes de firmware

  • Implementa un cargador de FS para imágenes Flash Map (FMAP) e Intel Flash Descriptor (IFD) (muestra las regiones de flash)
  • Implementa un cargador de FS para imágenes Coreboot Filesystem (CBFS) (muestra los archivos incluidos y maneja la compresión)
  • Implementa un cargador de FS para volúmenes de firmware UEFI y análisis de archivos/sistemas de archivos de firmware (FFS) anidados

Cargador Terse Executable (TE)

  • Implementa un cargador binario para binarios TE (usados frecuentemente en UEFI PI)

Script auxiliar UEFI

  • Incluye bibliotecas de tipos de datos para tipos UEFI base (tomados de EDK2 MdePkg)
  • Corrige la firma de la función de punto de entrada
  • Define GUID conocidos en los segmentos .data/.text del binario
  • Localiza y define copias globales de punteros de tablas UEFI (gBS/gRT/gST/etc)

Compilación e instalación

Se requieren JDK 21 (o más reciente) y Ghidra 12.0 (o más reciente).

Se utiliza el sistema de compilación estándar de Ghidra con Gradle. Establezca la variable de entorno GHIDRA_INSTALL_DIR antes de compilar, o configúrela como una propiedad de Gradle (útil para compilar en un IDE):

Variable de entorno

root@kitploit:~
$ export GHIDRA_INSTALL_DIR="/ruta/a/ghidra"
$ ./gradlew

Propiedad de Gradle

root@kitploit:~
echo GHIDRA_INSTALL_DIR=/ruta/a/ghidra > gradle.properties

[!NOTE] GHIDRA_INSTALL_DIR debe apuntar al directorio que contiene support/buildExtension.gradle. Por ejemplo, los usuarios del paquete Flathub deben usar /var/lib/flatpak/app/org.ghidra_sre.Ghidra/current/active/files/lib/ghidra.

El ZIP del módulo se generará en dist/. Use File > Install Extensions y seleccione el signo más verde para buscar la extensión. Reinicie Ghidra cuando se le solicite.

Para un funcionamiento correcto, el plugin debe compilarse con el mismo JRE utilizado por su instalación de Ghidra. Si tiene varios entornos de ejecución de Java instalados, seleccione el JRE correcto estableciendo la variable de entorno JAVA_HOME antes de compilar.

Uso

Cargador de ROM de opción PCI

Agregue una ROM de opción PCI a un proyecto de Ghidra. Las ROM de opción x86 heredadas se pueden cargar directamente para su análisis. Asegúrese de que el formato binario esté configurado como x86 PCI Option ROM e importe el binario.

Las ROM de opción UEFI o las ROM de opción que contengan más de una imagen deben importarse usando el cargador de sistemas de archivos. Cuando se le solicite seleccionar un modo de importación, seleccione File system. Las imágenes contenidas dentro de la ROM de opción se mostrarán y se pueden importar para su análisis. Las imágenes x86 heredadas serán manejadas por el cargador de ROM de opción x86 PCI, y las imágenes UEFI serán manejadas por el cargador PE32 (se admite compresión). La información de cada imagen se puede mostrar seleccionando Get Info en el menú contextual.

Cargador de imágenes de firmware

Agregue una imagen de firmware compatible a un proyecto de Ghidra. El cargador de imágenes de firmware admite imágenes Intel con un Flash Descriptor, imágenes coreboot con un diseño FMAP/CBFS y volúmenes de firmware UEFI. El modo de importación File system se puede usar para ver los archivos incrustados dentro de la imagen de firmware especificada.

Tenga en cuenta que algunas imágenes de firmware UEFI pueden almacenar volúmenes de firmware anidados dentro de archivos freeform/raw (o secciones FFS freeform/raw). Dichos archivos se pueden importar como volúmenes de firmware seleccionando Open File System en el menú contextual del archivo freeform/raw especificado. Si no se encuentra ningún volumen de firmware anidado, se mostrará un mensaje de error (No file system provider for...).

Script auxiliar UEFI

El script auxiliar está incluido en el directorio ghidra_scripts del plugin, que debería agregarse automáticamente a la lista de directorios de scripts en Ghidra.

Ejecute el script auxiliar UEFI seleccionando UEFIHelper.java en la ventana Script Manager (acceda desde Window -> Script Manager).

Para modificar la biblioteca de tipos de datos UEFI, modifique la plantilla PRF en data/gen_prf.sh según sea necesario y genere nuevos archivos PRF. Abra el archivo PRF generado en File -> Parse C Source. Compile la biblioteca de tipos de datos actualizada seleccionando Parse to File.... Sobrescriba las bibliotecas de tipos de datos originales en data y recompile el plugin.

Proyectos relacionados

Estos son algunos proyectos interesantes relacionados con la ingeniería inversa de UEFI:

  • efiXplorer - Plugin de IDA para análisis de firmware UEFI y automatización de ingeniería inversa
  • Ghidra-EFI-Byte-Code-Processor - Módulo de procesador EFI Byte Code (EBC) para Ghidra

Licencia

Apache 2.0, con algunas excepciones:

  • src/efidecompress/c/efidecompress.c: BSD

Créditos

src/efidecompress/c/efidecompress.c es una versión ligeramente modificada de Decompress.c de uefi-firmware-parser (que a su vez deriva de el original en EDK2 BaseTools).

El cargador FS IFD en src/main/java/firmware/ifd usó el analizador de UEFITool como referencia.

La base de datos de GUID en data/guids.csv está tomada de UEFITool.

Las bibliotecas de tipos de datos UEFI en data/uefi_*.gdt se generaron con data/gen_prf.sh, que se basa parcialmente en la definición del analizador UEFI de una solicitud de extracción de Ghidra de wrffrz. Estas bibliotecas de tipos de datos usan encabezados de EDK2 MdePkg.

GhidraVitaLoader de xerpi se usó como referencia para algunas partes del script auxiliar UEFI.

Descargar herramienta