Divers modules de Ghidra pour aider avec le micrologiciel PC insensé ingénierie. Cela a été accepté comme un projet Coreboot pour GSOC 2019.
JDK 11 (ou plus récent) et Ghidra 10.1 (ou plus récents) sont nécessaires.
Le système de construction Gradle standard de Ghidra est utilisé. Définissez la variable d'environnement GHIDRA_INSTALL_DIR avant de construire ou définissez-la comme une propriété Gradle (utile pour la construction dans un IDE):
$ export GHIDRA_INSTALL_DIR= " /path/to/ghidra "
$ ./gradlew echo GHIDRA_INSTALL_DIR=/path/to/ghidra > gradle.properties Le zip du module sera sorti sur dist/ . Utilisez le fichier> Installez les extensions et sélectionnez le vert plus pour parcourir l'extension. Redémarrez Ghidra lorsqu'il est invité.
Pour une fonctionnalité appropriée, le plugin doit être construit avec le même JRE utilisé par votre installation Ghidra. Si vous avez installé plusieurs environnements d'exécution Java, sélectionnez le JRE correct en définissant la variable d'environnement JAVA_HOME avant la construction.
Ajoutez une ROM d'option PCI à un projet Ghidra. Les ROM d'héritage x86 Option peuvent être directement chargées pour analyse. Assurez-vous que le format binaire est défini sur la ROM de l'option PCI x86 et importez le binaire.
Les ROM d'option UEFI ou les ROM d'option 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 Système de fichiers . Les images contenues dans l'option ROM seront affichées et peuvent être importées pour analyse. Les images héritées x86 seront gérées le chargeur ROM d'option PCI x86 PCI, et les images UEFI seront gérées par le chargeur PE32 (la compression est prise en charge). Les informations pour chaque image peuvent être affichées en sélectionnant Get INFO dans le menu Cliquez avec le bouton droit.
Ajoutez une image de firmware prise en charge à un projet Ghidra. Le chargeur d'image du micrologiciel prend en charge les images Intel avec un descripteur flash, des images Coreboot avec une disposition FMAP / CBFS et des volumes de firmware UEFI. Le mode d'importation du système de fichiers peut être utilisé pour afficher les fichiers intégrés dans l'image du micrologiciel spécifié.
Notez que certaines images du micrologiciel UEFI peuvent stocker des volumes de firmware imbriqués dans des fichiers FreeForm / RAW (ou sections FRETFORM / RAW FFS). Ces fichiers peuvent être importés sous forme de volumes de firmware en sélectionnant un système de fichiers ouvert dans le menu du clic droit pour le fichier Freeform / RAW spécifié. Si aucun volume de firmware imbriqué n'est trouvé, un message d'erreur ne sera affiché ( No file system provider for... ).
Le script d'assistance est inclus dans le répertoire Ghidra_Scripts du plugin, qui doit être automatiquement ajouté à la liste des répertoires de script dans Ghidra.
Exécutez le script UEFI Helper en sélectionnant uefiHelper.java dans la fenêtre Script Manager (consulté à partir de la fenêtre -> 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 le fichier -> Parse C Source . Créez la bibliothèque de types de données mises à jour en sélectionnant Parse dans le fichier .... Écrasez les bibliothèques de types de données d'origine dans data et reconstruisez le plugin.
Ce sont des projets intéressants liés à l'inversion de l'UEFI:
Apache 2.0, à quelques exceptions:
src/efidecompress/c/efidecompress.c : BSD src/efidecompress/c/efidecompress.c est une version légèrement modifiée de Decompress.c de UEFI-Firmware-Parser (qui est lui-même dérivée de l'original dans Edk2 Basetools).
lib/xz-1.8.jar est tiré du projet XZ pour Java.
Le chargeur IFD FS 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ée sur la définition de l'analyseur UEFI à partir d'une demande de traction Ghidra par WRFFRZ. Ces bibliothèques de types de données utilisent des en-têtes d'Edk2 MDEPKG.
GhidravitalOader par Xerpi a été utilisé comme référence pour certaines parties du script d'assistance UEFI.