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
ida-efiutils — Quelques scripts pour IDA Pro afin d’aider à la rétro-ingénierie des binaires EFI | Kitploit
Outils/GitHubGitHub/snare/ida-efiutils
Sécurité des Systèmes EmbarquésRétro-ingénierieSécurité Matériel et IoTAnalyse de BinairesAnalyse de Micrologiciel
GitHubsnare/ida-efiutils

ida-efiutils

Quelques scripts pour IDA Pro afin d’aider à la rétro-ingénierie des binaires EFI

Voir le dépôt
30966il y a 7 ansVérifié par Kitploit

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 →
Partager

Scripts EFI pour IDA Pro

Quelques scripts IDA pour aider à la rétro-ingénierie d'exécutables EFI.

Ce paquet contient les fichiers suivants :

  1. efiutils.py - Module IDAPython avec quelques fonctions utilitaires

  2. efiguids.py - Une collection de GUID connus pour les protocoles EFI

  3. efiguids_ami.py - Une collection de GUID connus pour les protocoles utilisés dans le BIOS AMI

  4. behemoth.h - Un énorme en-tête contenant une collection de définitions de types et de structures pour EFI

  5. structs.idc - Un script IDC contenant quelques définitions de structures (remplacé par behemoth.h)

  6. te_image.bt - Un modèle de l'éditeur 010 pour les images binaires TE

  7. te_loader.py - Un script de chargement IDA Pro pour les images binaires TE

C'est ma première tentative de script IDA, alors veuillez m'excuser et me faire savoir si j'ai réinventé la roue ou fait quelque chose de stupide.

Fonctions

Les principales fonctions utiles sont décrites ci-dessous. Consultez le code et les docstrings pour plus d'informations sur les autres fonctions.

rename_tables()

Trouve le premier point d'entrée du binaire, essaie de suivre les paramètres passés à la fonction du point d'entrée et renomme les variables globales dans lesquelles les tables EFI clés sont stockées. Les opérations de renommage suivantes sont effectuées :

  1. La variable globale où ImageHandle aboutit est renommée en gImageHandle.

  2. La variable globale où SystemTable aboutit est renommée en gSystemTable.

  3. La variable globale où SystemTable->BootServices aboutit est renommée en gBootServices.

  4. La variable globale où SystemTable->RuntimeServices aboutit est renommée en gRuntimeServices.

Les instructions d'appel ne seront suivies que sur un niveau de profondeur, car la plupart des exécutables copient les références de table dans le point d'entrée ou dans une fonction appelée depuis le point d'entrée. Modifiez MAX_STACK_DEPTH si nécessaire.

update_structs()

Trouve les références croisées vers les tables renommées ci-dessus et met à jour leurs noms pour qu'ils soient des décalages de structure à partir des structures appropriées. Si rename_tables() a échoué, vous devrez renommer les choses manuellement comme ci-dessus pour que cela fonctionne correctement.

Par exemple :

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

Devient :

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

rename_guids()

Trouve les GUID dans les segments de données et les renomme. 470 GUID de protocoles ont été extraits du code source TianoCore, et les GUID propriétaires d'Apple (et d'autres fournisseurs) seront ajoutés au fur et à mesure qu'ils seront rencontrés.

go()

Méthode pratique qui fait tout ce qui précède.

Utilisation

  1. Chargez votre binaire EFI dans IDA Pro

  2. Importez behemoth.h pour définir les structures de données nécessaires

  3. Ajoutez les structures des types locaux à votre IDB

  4. Exécutez efiutils.py pour l'ajouter au chemin de python (ou faites-le par une autre méthode)

  5. Jetez un œil au code/docstrings, mais probablement :

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

Pour utiliser le chargeur d'images TE te_loader.py, installez-le comme n'importe quel autre chargeur. Sur OS X, cela se fait en le copiant ou en créant un lien symbolique dans le dossier des chargeurs à idaq.app/Contents/MacOS/loaders/.

Télécharger l’outil