
Désactiver PatchGuard et Driver Signature Enforcement au démarrage
EfiGuard est un bootkit UEFI x64 portable qui patche le gestionnaire de démarrage Windows, le chargeur de démarrage et le noyau au moment du démarrage afin de désactiver PatchGuard et Driver Signature Enforcement (DSE).
Si vous cherchez simplement à essayer EfiGuard, passez à Usage.
Prend actuellement en charge toutes les versions compatibles EFI de Windows x64 jamais publiées, de Vista SP1 à Windows 11.
Facile à utiliser : peut être démarré depuis une clé USB ou la partition EFI Windows via un chargeur qui trouve et démarre automatiquement Windows. Le pilote peut également être chargé et configuré manuellement à l'aide du shell UEFI ou du chargeur.
Utilise largement la bibliothèque de désassembleur Zydis pour un décodage rapide des instructions à l'exécution, afin de prendre en charge une analyse plus robuste que ce qui est possible avec la correspondance de signatures, qui nécessite souvent des modifications avec les nouvelles mises à jour du système d'exploitation.
Fonctionne passivement : le pilote ne charge ni ne démarre le gestionnaire de démarrage Windows. Il agit plutôt sur un chargement de bootmgfw.efi par le gestionnaire de démarrage du firmware via le menu de sélection de démarrage ou une application EFI telle que le chargeur. Si un système d'exploitation non Windows est démarré, le pilote se déchargera automatiquement.
Prend en charge le patching en quatre étapes lorsque bootmgfw.efi démarre bootmgr.efi plutôt que winload.efi. C'est le cas lorsqu'un fichier WIM est chargé pour démarrer WinPE, le programme d'installation de Windows ou le mode de récupération de Windows.
Récupération élégante : en cas d'échec du patch, le pilote affichera des informations d'erreur et demandera de continuer le démarrage ou de redémarrer en appuyant sur ESC. Cela est vrai même jusqu'à la dernière étape de patching du noyau, car la dernière étape de patching a lieu avant l'appel de ExitBootServices. De nombreux bootkits UEFI Windows hookent OslArchTransferToKernel qui, bien que facile à trouver par correspondance de motifs, est une fonction qui s'exécute en mode protégé après ExitBootServices. Cela signifie qu'aucun service de démarrage n'est disponible pour informer l'utilisateur que quelque chose s'est mal passé.

Échec de patch simulé avec informations d'erreur
Débogable : peut afficher des messages vers un débogueur de noyau et vers l'écran (bien que mis en mémoire tampon) pendant l'étape de patching du noyau, et vers un port série ou sans mémoire tampon vers l'écran pendant les étapes de patching du gestionnaire de démarrage et du chargeur de démarrage. Si le pilote est compilé avec des informations de débogage PDB, il est possible de charger les symboles de débogage à tout moment après l'initialisation de HAL en spécifiant la base virtuelle du pilote DXE et en le débogant comme vous le feriez avec un pilote NT classique.
Contournements de DSE : disponibles soit sous la forme d'une désactivation DSE simple de style UPGDSED au moment du démarrage, soit sous la forme d'un hook sur le service d'exécution EFI SetVariable(). Ce dernier sert de backdoor arbitraire de lecture/écriture en mode noyau qui peut être appelé depuis Windows à l'aide de NtSetSystemEnvironmentValueEx et permet de définir g_CiEnabled/g_CiOptions à la valeur souhaitée. Une petite application de style DSEFix nommée EfiDSEFix.exe est fournie pour le faire. Il est également possible de laisser DSE activé et de désactiver uniquement PatchGuard. Le chargeur utilisera la méthode de hook SetVariable par défaut, car certains programmes anti-triche et antivirus ne comprennent pas la différence entre les triches ou les logiciels malveillants et les pilotes auto-signés en général et ciblent le correctif UPGDSED.
Prend en charge les noyaux et chargeurs de démarrage modifiés sur disque en patchant ImgpValidateImageHash à chaque étape ainsi que ImgpFilterValidationFailure, ce qui peut silencieusement signaler certaines classes de violations à un TPM ou au fichier journal SI.
Permet à Secure Boot de fonctionner avec Windows 7 (ce n'est pas une blague !). Windows 7 lui-même ignore Secure Boot car il ne le prend pas en charge, ni (officiellement) même le démarrage sans CSM. Ceci est utile pour les personnes qui souhaitent utiliser Windows 7 sur un appareil verrouillé qui nécessite WHQL Secure Boot. Entrée du wiki sur la façon de faire fonctionner cela ici.

WinObjEx64 sur Windows 7 avec Secure Boot activé
SetVariable provoquera un bugcheck SECURE_KERNEL_ERROR s'il est utilisé pour écrire dans g_CiOptions.Il existe deux façons d'utiliser EfiGuard : démarrer l'application de chargeur, qui chargera le pilote et démarrera Windows pour vous, ou installer le pilote comme entrée de pilote UEFI afin qu'il soit chargé automatiquement par le firmware.
L'installation du pilote peut être préférable dans certaines configurations avancées, comme le multi-démarrage, mais le chargeur est le plus facile à utiliser et devrait bien fonctionner dans toutes les configurations. Voir le tableau ci-dessous pour les différences les plus importantes entre les deux méthodes. En cas de doute, choisissez l'application de chargeur.
| Emplacement | Installation | Ignorable ? | Quel système d'exploitation est démarré ? | |
|---|---|---|---|---|
| Entrée de pilote UEFI | Doit être sur ESP | Via le shell UEFI | ❌ | Comme avant |
| Chargeur | N'importe où | Non nécessaire | ✔️ | Windows |
Comparaison entre le chargeur et l'entrée de pilote UEFI