
PatchGuard und Treibersignaturerzwingung beim Booten deaktivieren
EfiGuard ist ein portables x64-UEFI-Bootkit, das den Windows-Boot-Manager, den Boot-Loader und den Kernel zur Bootzeit patcht, um PatchGuard und die Treibersignaturprüfung (DSE) zu deaktivieren.
Wenn Sie EfiGuard nur ausprobieren möchten, springen Sie zu Verwendung.
Unterstützt derzeit alle jemals veröffentlichten EFI-kompatiblen Versionen von Windows x64, von Vista SP1 bis Windows 11.
Einfach zu bedienen: Kann von einem USB-Stick oder der Windows-EFI-Partition über einen Lader gebootet werden, der Windows automatisch findet und startet. Der Treiber kann auch manuell über die UEFI-Shell oder den Lader geladen und konfiguriert werden.
Nutzt umfangreich die Zydis-Disassembler-Bibliothek für schnelle Laufzeit-Dekodierung von Anweisungen, um eine robustere Analyse zu unterstützen, als dies mit Signatur-Matching möglich ist, das oft Änderungen bei neuen OS-Updates erfordert.
Arbeitet passiv: Der Treiber lädt oder startet den Windows-Boot-Manager nicht. Stattdessen reagiert er auf ein Laden von bootmgfw.efi durch den Firmware-Boot-Manager über das Boot-Auswahlmenü oder eine EFI-Anwendung wie den Lader. Wenn ein Nicht-Windows-Betriebssystem gebootet wird, entlädt sich der Treiber automatisch.
Unterstützt vierstufiges Patchen für den Fall, dass bootmgfw.efi bootmgr.efi statt winload.efi startet. Dies ist der Fall, wenn eine WIM-Datei geladen wird, um WinPE, Windows-Setup oder Windows-Wiederherstellungsmodus zu booten.
Sanfte Wiederherstellung: Bei einem Patch-Fehler zeigt der Treiber Fehlerinformationen an und fordert auf, mit ESC den Bootvorgang fortzusetzen oder neu zu starten. Dies gilt sogar bis zur letzten Kernel-Patch-Stufe, da die letzte Patch-Stufe vor dem Aufruf von ExitBootServices stattfindet. Viele UEFI-Windows-Bootkits hooken OslArchTransferToKernel, das zwar leicht durch Pattern-Matching zu finden ist, aber eine Funktion ist, die im geschützten Modus nach ExitBootServices ausgeführt wird. Das bedeutet, dass keine Boot-Dienste verfügbar sind, um dem Benutzer mitzuteilen, dass etwas schiefgelaufen ist.

Simulierter Patch-Fehler mit Fehlerinformationen
Debug-fähig: Kann während der Kernel-Patching-Phase Nachrichten an einen Kernel-Debugger und an den Bildschirm (wenn auch gepuffert) ausgeben und während der Phasen des Boot-Managers und Boot-Loaders an eine serielle Schnittstelle oder ungepuffert an den Bildschirm. Wenn der Treiber mit PDB-Debug-Informationen kompiliert wird, können die Debug-Symbole zu jedem Zeitpunkt nach der HAL-Initialisierung geladen werden, indem die virtuelle DXE-Treiberbasis angegeben und der Treiber wie ein normaler NT-Treiber debuggt wird.
DSE-Bypässe: Verfügbar entweder als einfache UPGDSED-artige DSE-Deaktivierung zur Bootzeit oder als Hook auf den EFI-Laufzeitdienst SetVariable(). Letzteres dient als Hintertür für beliebiges Kernel-Mode-Lesen/Schreiben, die von Windows aus mit NtSetSystemEnvironmentValueEx aufgerufen werden kann und das Setzen von g_CiEnabled/g_CiOptions auf den gewünschten Wert erlaubt. Eine kleine DSEFix-ähnliche Anwendung namens EfiDSEFix.exe wird bereitgestellt, um dies zu tun. Es ist auch möglich, DSE aktiviert zu lassen und nur PatchGuard zu deaktivieren. Der Lader verwendet standardmäßig die SetVariable-Hook-Methode, da einige Anti-Cheat- und Anti-Viren-Programme den Unterschied zwischen Cheats oder Malware und selbstsignierten Treibern im Allgemeinen nicht verstehen und den UPGDSED-Fix ins Visier nehmen.
Unterstützt modifizierte Kernel und Boot-Loader auf der Festplatte, indem ImgpValidateImageHash auf jeder Stufe sowie ImgpFilterValidationFailure gepatcht wird, das möglicherweise stillschweigend bestimmte Verstöße an ein TPM oder die SI-Protokolldatei meldet.
Ermöglicht Secure Boot unter Windows 7 (kein Witz!). Windows 7 selbst ist sich Secure Boot nicht bewusst, da es es nicht unterstützt oder (offiziell) sogar das Booten ohne CSM. Dies ist nützlich für Personen, die Windows 7 auf einem gesperrten Gerät verwenden möchten, das WHQL Secure Boot erfordert. Wiki-Eintrag zur Funktionsweise hier.

WinObjEx64 unter Windows 7 mit aktiviertem Secure Boot
SetVariable-Hook verursacht einen SECURE_KERNEL_ERROR-Bugcheck, wenn er zum Schreiben auf g_CiOptions verwendet wird.Es gibt zwei Möglichkeiten, EfiGuard zu verwenden: Booten der Lader-Anwendung, die den Treiber lädt und Windows für Sie startet, oder Installieren des Treibers als UEFI-Treibereintrag, damit er automatisch von der Firmware geladen wird.
Die Installation des Treibers kann in einigen fortgeschrittenen Konfigurationen wie beim Multi-Boot vorzuziehen sein, aber der Lader ist am einfachsten zu verwenden und sollte in allen Konfigurationen gut funktionieren. Siehe die Tabelle unten für die wichtigsten Unterschiede zwischen den beiden Methoden. Wenn Sie unsicher sind, wählen Sie die Lader-Anwendung.
| Ort | Installation | Überspringbar? | Welches OS wird gebootet? | |
|---|---|---|---|---|
| UEFI-Treibereintrag | Muss auf ESP sein | Über UEFI-Shell | ❌ | Wie zuvor |
| Lader | Überall | Nicht benötigt | ✔️ | Windows |
Vergleich Lader vs. UEFI-Treibereintrag
EFI/Boot/Loader.efi in bootx64.efi um.X:, sollten die Pfade für die beiden Dateien nun X:/EFI/Boot/{bootx64|EfiGuardDxe}.efi sein.SetVariable-Hook (Standard) gebootet haben, führen Sie nach dem Booten EfiDSEFix.exe -d in einer Administratoreingabeaufforderung aus, um DSE zu deaktivieren, oder führen Sie EfiDSEFix.exe aus, um die vollständige Liste der Optionen zu sehen.