Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird ein Problem eingeführt, das dazu führt, dass einige Windows 10-Treiber mit der Fehlerüberprüfung 0x7E abstürzen, wenn Device Guard aktiv ist.
Ursprüngliche Produktversion: Windows 10
Ursprüngliche KB-Nummer: 3194715
Zusammenfassung
Gehen Sie davon aus, dass Sie Kernelmodusgerätetreiber entwickeln und versuchen, einen Treiber (außer einem Starttreiber) zu laden, der mit der Option "/IntegrityCheck "-Linker erstellt und mit Seitenhashes signiert wurde. In diesem Fall wird die Fehlerüberprüfung 0x7E möglicherweise in Windows 10 Build 10586 (TH2) zurückgegeben, wenn Device Guard aktiv ist.
Das Problem wird durch einen BS-Mangel verursacht, der verhindert, dass HVCI eine Seite auf EXECUTE-Berechtigungen heraufstreckt, wenn das Bild zuvor von CI überprüft wurde. Dieses Verhalten kann auftreten, wenn das Bild mit /IntegrityCheck verknüpft ist, mit /PH (Seitenhashes) signiert ist und einem Benutzermodusprozess zugeordnet wird, bevor es als Kerneltreiber geladen wird.
Ab RS1 überprüft HVCI diese Bedingung und vermeidet daher die Fehlerüberprüfung. Der Treiber wird jedoch weiterhin blockiert, es sei denn, er ist ein Starttreiber. Dieses Verhalten tritt auf, wenn HVCI/Device Guard auf Geräten aktiv ist, die den sicheren Start unterstützen (z. B. Surface Pro 3 und andere moderne Geräte).
Wenn dieses Problem auftritt, kann die Fehlerprüfung 0x7E mit mindestens einem Ausnahmefehler ausgelöst werden, 0xC0000005 auftreten GsDriverEntry()
.
Weitere Informationen
Zwei Befehle können sich auf dieses Verhalten auswirken:
/IntegrityCheck (Compilerschalter) /INTEGRITYCHECK (Signaturüberprüfung erforderlich)
/PH (Seitenhashes für ausführbare Dateien) SignTool.exe (Sign Tool)
Wenn beide Befehle aktiviert sind, verhält sich Windows 10 je nach Build möglicherweise unerwartet wie folgt:
- Build 10240: Es wurde kein Problem angezeigt.
- Build 10586: Fehlerüberprüfung 0x7E. Dies kann vorkommen, wenn der Fahrer umsiedelt, der zwei Seiten nicht überspannt. In diesem Fall tritt das szenario auf, das im Abschnitt "Zusammenfassung" beschrieben wird.
- Build 14393 (Redstone 1): Ein Eintrag in Systemereignissen, der Treiber wird jedoch beim Laden blockiert (mit Ausnahme der Startzeit, wenn der Treiber ohne Problem geladen wird).
Um dieses Problem in Build 10586 zu beheben, empfiehlt es sich, Seitenhashes mithilfe der Option "/NPH " mit Signtool zu deaktivieren. Da die Seitenhashüberprüfung eine Leistungsoption ist, wirkt sich das Deaktivieren dieser Option am wenigsten auf die Sicherheit aus.
Diese Methode kann auch in Build 14393 und höher verwendet werden, um zuzulassen, dass der Treiber geladen wird, wenn das Problem vorhanden ist, es sei denn, der Treiber verfügt über eine Verlagerung, die zwei Seiten überspannt (in diesem Fall wird er immer noch nicht geladen). Sie können dies ermitteln, indem Sie den Befehl "/MAP " in den Linker einschließen und dann die Ausgabe untersuchen. Weitere Informationen hierzu finden Sie unter /MAP (Zuordnungsdatei generieren).
Um eine Verlagerung zu vermeiden, die zwei Seiten überspannt, verwenden Sie nicht #pragma Pack(1) an einer beliebigen Stelle des Treibers. Die Standardmäßige Seitenausrichtung verursacht kein Problem bei der Seitenstreuung.