Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ghidra-firmware-utils — Extension Ghidra pour la rétro-ingénierie du firmware PC, fournissant des chargeurs pour les ROM d'option PCI, le Flash Descriptor Intel, le CBFS de coreboot et les volumes de firmware UEFI, ainsi que des scripts d'assistance UEFI pour la récupération de types et l'identification des GUID. | Kitploit
Outils/GitHubGitHub/al3xtjames/ghidra-firmware-utils
Sécurité des Systèmes EmbarquésRétro-ingénierieSécurité MatérielleSécurité Matériel et IoTAnalyse de BinairesAnalyse de Micrologiciel
GitHubal3xtjames/ghidra-firmware-utils

ghidra-firmware-utils

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Extension Ghidra pour la rétro-ingénierie du firmware PC, fournissant des chargeurs pour les ROM d'option PCI, le Flash Descriptor Intel, le CBFS de coreboot et les volumes de firmware UEFI, ainsi que des scripts d'assistance UEFI pour la récupération de types et l'identification des GUID.

Voir le dépôt
493563il y a 5 joursVérifié par Kitploit
Partager

Ghidra Firmware Utilities

Divers modules pour Ghidra afin d'assister la rétro-ingénierie de firmware PC. Ce projet a été accepté comme projet coreboot pour le GSoC 2019.

Fonctionnalités

Chargeur d'option ROM PCI

  • Implémente un chargeur FS pour les options ROM PCI (gère les ROM hybrides avec plusieurs images, par ex. x86 legacy + UEFI)
  • Charge les exécutables UEFI depuis les options ROM PCI (y compris les images compressées)
  • Définit la fonction point d'entrée et divers types de données d'en-tête pour les options ROM x86 legacy

Chargeur d'image firmware

  • Implémente un chargeur FS pour les images Flash Map (FMAP) et les images Intel Flash Descriptor (IFD) (affiche les régions flash)
  • Implémente un chargeur FS pour les images Coreboot Filesystem (CBFS) (affiche les fichiers inclus et gère la compression)
  • Implémente un chargeur FS pour les volumes firmware UEFI et l'analyse des fichiers firmware filesystem (FFS) imbriqués/sections FFS

Chargeur Terse Executable (TE)

  • Implémente un chargeur binaire pour les binaires TE (fréquemment utilisés dans UEFI PI)

Script d'assistance UEFI

  • Inclut des bibliothèques de types de données pour les types UEFI de base (tirés de EDK2 MdePkg)
  • Corrige la signature de la fonction point d'entrée
  • Définit les GUID connus dans les segments .data/.text du binaire
  • Localise et définit les copies globales des pointeurs de table UEFI (gBS/gRT/gST/etc)

Compilation et installation

JDK 21 (ou plus récent) et Ghidra 12.0 (ou plus récent) sont requis.

Le système de compilation standard Gradle de Ghidra est utilisé. Définissez la variable d'environnement GHIDRA_INSTALL_DIR avant la compilation, ou définissez-la comme propriété Gradle (utile pour compiler dans un IDE) :

Variable d'environnement

root@kitploit:~
$ export GHIDRA_INSTALL_DIR="/chemin/vers/ghidra"
$ ./gradlew

Propriété Gradle

root@kitploit:~
echo GHIDRA_INSTALL_DIR=/chemin/vers/ghidra > gradle.properties

[!NOTE] GHIDRA_INSTALL_DIR doit pointer vers le répertoire qui contient support/buildExtension.gradle. Par exemple, les utilisateurs du paquet Flathub doivent utiliser /var/lib/flatpak/app/org.ghidra_sre.Ghidra/current/active/files/lib/ghidra.

Le ZIP du module sera généré dans dist/. Utilisez File > Install Extensions et sélectionnez le plus vert pour parcourir jusqu'à l'extension. Redémarrez Ghidra lorsque vous y êtes invité.

Pour un fonctionnement correct, le plugin doit être compilé avec le même JRE utilisé par votre installation Ghidra. Si vous avez plusieurs environnements d'exécution Java installés, sélectionnez le JRE correct en définissant la variable d'environnement JAVA_HOME avant la compilation.

Utilisation

Chargeur d'option ROM PCI

Ajoutez une option ROM PCI à un projet Ghidra. Les options ROM x86 legacy peuvent être directement chargées pour analyse. Assurez-vous que le format binaire est défini sur x86 PCI Option ROM, puis importez le binaire.

Les options ROM UEFI ou les options ROM contenant plus d'une image doivent être importées à l'aide du chargeur de système de fichiers. Lorsque vous êtes invité à sélectionner un mode d'importation, sélectionnez File system. Les images contenues dans l'option ROM seront affichées et peuvent être importées pour analyse. Les images x86 legacy seront traitées par le chargeur x86 PCI Option ROM, et les images UEFI seront traitées par le chargeur PE32 (la compression est prise en charge). Les informations de chaque image peuvent être affichées en sélectionnant Get Info dans le menu contextuel.

Chargeur d'image firmware

Ajoutez une image firmware prise en charge à un projet Ghidra. Le chargeur d'image firmware prend en charge les images Intel avec un Flash Descriptor, les images coreboot avec une disposition FMAP/CBFS, et les volumes firmware UEFI. Le mode d'importation File system peut être utilisé pour afficher les fichiers intégrés dans l'image firmware spécifiée.

Notez que certaines images firmware UEFI peuvent stocker des volumes firmware imbriqués dans des fichiers freeform/raw (ou des sections FFS freeform/raw). Ces fichiers peuvent être importés comme volumes firmware en sélectionnant Open File System dans le menu contextuel du fichier freeform/raw spécifié. Si aucun volume firmware imbriqué n'est trouvé, un message d'erreur s'affichera (No file system provider for...).

Script d'assistance UEFI

Le script d'assistance est inclus dans le répertoire ghidra_scripts du plugin, qui devrait être automatiquement ajouté à la liste des répertoires de scripts dans Ghidra.

Exécutez le script d'assistance UEFI en sélectionnant UEFIHelper.java dans la fenêtre Script Manager (accessible via Window -> Script Manager).

Pour modifier la bibliothèque de types de données UEFI, modifiez le modèle PRF dans data/gen_prf.sh si nécessaire et générez de nouveaux fichiers PRF. Ouvrez le fichier PRF généré dans File -> Parse C Source. Construisez la bibliothèque de types de données mise à jour en sélectionnant Parse to File.... Écrasez les bibliothèques de types de données d'origine dans data et recompilez le plugin.

Projets connexes

Voici quelques projets intéressants liés à la rétro-ingénierie UEFI :

  • efiXplorer - Plugin IDA pour l'analyse de firmware UEFI et l'automatisation de la rétro-ingénierie
  • Ghidra-EFI-Byte-Code-Processor - Module processeur EFI Byte Code (EBC) pour Ghidra

Licence

Apache 2.0, avec quelques exceptions :

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

Crédits

src/efidecompress/c/efidecompress.c est une version légèrement modifiée de Decompress.c de uefi-firmware-parser (lui-même dérivé de l'original dans EDK2 BaseTools).

Le chargeur FS IFD dans src/main/java/firmware/ifd a utilisé l'analyseur de UEFITool comme référence.

La base de données GUID dans data/guids.csv est tirée de UEFITool.

Les bibliothèques de types de données UEFI dans data/uefi_*.gdt ont été générées avec data/gen_prf.sh, qui est partiellement basé sur la définition de l'analyseur UEFI de une demande d'extraction Ghidra par wrffrz. Ces bibliothèques de types de données utilisent les en-têtes de EDK2 MdePkg.

GhidraVitaLoader par xerpi a été utilisé comme référence pour certaines parties du script d'assistance UEFI.

Télécharger l’outil