Freigeben über


Überprüfung der Codeintegrität

Arbeitsspeicherintegrität ist ein virtualisierungsbasiertes Sicherheitsfeature (VBS), das in Windows 10, Windows 11 und Windows Server 2016 und höher verfügbar ist. Speicherintegrität und VBS verbessern das Bedrohungsmodell von Windows und bieten einen besseren Schutz vor Schadsoftware, die versucht, den Windows-Kernel auszunutzen. VBS verwendet den Windows-Hypervisor, um eine isolierte virtuelle Umgebung zu erstellen, die zum Vertrauensstamm des Betriebssystems wird, das davon ausgeht, dass der Kernel kompromittiert werden kann. Die Speicherintegrität ist eine wichtige Komponente, die Windows schützt und härtet, indem die Codeintegrität im Kernelmodus in der isolierten virtuellen Umgebung von VBS ausgeführt wird. Die Speicherintegrität schränkt auch Kernelspeicherbelegungen ein, die verwendet werden könnten, um das System zu kompromittieren. So wird sichergestellt, dass Kernelspeicherseiten erst nach dem Bestehen von Codeintegritätsprüfungen innerhalb der sicheren Laufzeitumgebung ausführbare Dateien werden und ausführbare Seiten selbst nie beschreibbar sind.

Hinweis

Die Speicherintegrität wird manchmal als hypervisorgeschützte Codeintegrität (Hypervisor-Protected Code Integrity, HVCI) oder durch Hypervisor erzwungene Codeintegrität bezeichnet und wurde ursprünglich als Teil von Device Guard veröffentlicht. Device Guard wird nicht mehr verwendet, außer um die Speicherintegrität und VBS-Einstellungen in Gruppenrichtlinie oder der Windows-Registrierung zu ermitteln.

Die Codeintegritätsüberprüfungen stellen die Kompatibilität mit den Anforderungen an die Kernelspeicherauslastung der Speicherintegrität sicher und erkennen die folgenden Verstöße:

Fehlercode Problem mit der Codeintegrität
0x2000:
  • 2: Die Adresse im Treibercode, an der der Fehler erkannt wurde.
  • 3 : Pooltyp.
  • 4 : Pooltag (sofern angegeben).

Der Aufrufer hat einen ausführbaren Pooltyp angegeben. (Erwartet: NonPagedPoolNx)
0x2001:
  • 2: Die Adresse im Treibercode, an der der Fehler erkannt wurde.
  • 3 – Seitenschutz (WIN32_PROTECTION_MASK).
Der Aufrufer hat einen ausführbaren Seitenschutz angegeben. (Erwartet: gelöschte PAGE_EXECUTE*-Bits)
0x2002:
  • 2: Die Adresse im Treibercode, an der der Fehler erkannt wurde.
  • 3 – Seitenpriorität (MM_PAGE_PRIORITY logisch OR'd mit MdlMapping*).
Der Aufrufer hat eine ausführbare MDL-Zuordnung angegeben. (Erwartet: MdlMappingNoExecute).
0x2003:
  • 2 : Der Name der Imagedatei (Unicode-Zeichenfolge).
  • 3 : Die Adresse des Abschnittsheaders.
  • 4 – Der Abschnittsname (UTF-8-codierte Zeichenfolge).
Das Image enthält einen ausführbaren und einen beschreibbaren Abschnitt.
0x2004:
  • 2 : Der Name der Imagedatei (Unicode-Zeichenfolge).
  • 3 : Die Adresse des Abschnittsheaders.
  • 4 – Der Abschnittsname (UTF-8-codierte Zeichenfolge).
Das Bild enthält einen Abschnitt, der nicht seitenausgerichtet ist.
0x2005:
  • 2 : Der Name der Imagedatei (Unicode-Zeichenfolge).
  • 3 – IAT-Verzeichnis.
  • 4 – Der Abschnittsname (UTF-8-codierte Zeichenfolge).
Das Image enthält eine IAT in einem ausführbaren Abschnitt.

Aktivieren Sie diese Option:

Sie können die Codeintegritätsprüfung für einen oder mehrere Treiber aktivieren, indem Sie den Treiberüberprüfungs-Manager oder die Verifier.exe Befehlszeile verwenden. Weitere Informationen finden Sie unter Auswählen von Treiberüberprüfungsoptionen. Sie müssen den Computer neu starten, um die Option zur Überprüfung der Codeintegrität zu aktivieren oder zu deaktivieren.

  • Über die Befehlszeile

    In der Befehlszeile wird die Codeintegritätsprüfung durch 0x02000000 (Bit 25) dargestellt. Beispiel:

    verifier /flags 0x02000000 /driver MyDriver.sys

    Das Feature ist nach dem nächsten Start aktiv.

  • Verwenden des Treiberüberprüfungs-Managers

  1. Starten Sie den Treiberüberprüfungs-Manager. Geben Sie Verifier in ein Eingabeaufforderungsfenster ein.
  2. Wählen Sie Benutzerdefinierte Einstellungen erstellen (für Codeentwickler) aus, und klicken Sie dann auf Weiter.
  3. Codeintegritätsüberprüfung auswählen(überprüfen).
  4. Starten Sie den Computer neu.

Implementieren von speicherintegritätskompatiblem Code