Hier ist es macht seinen bitweise UND-Verknüpfung und diktiert ihr Ergebnis, springen oder nicht springen.
Bedingungen einer verletzlichen Treibers während der Fertigstellung eines IRP die I / O-Manager kopiert die Daten aus dem Systempuffer zurück in den Ausgangspuffer des Benutzers bei Verwendung von Buffered I / O-Methode (METHOD_BUFFERED) und den Status eines Erfolgs oder Warnung. Die Anzahl der Bytes wird Kopie aus dem Irp-> IoStatus.Information Feld genommen.
Folgende Bereichswerte zeigen Fehler- und Warnstatuscodes:
Fenster unterstützt drei I / O-Übertragungsverfahren, das die Treiberentwickler für das Lesen und Schreiben von Daten in den Speicher verwenden können. Ein Verfahren, wobei Buffered I / O in dem die I / O-Manager an die Benutzer eingegeben Puffer einen Systempuffer gleicher Größe zuteilt. Für Schreiboperationen, die I / O-Manager kopiert die Pufferdaten in den Systempuffer des Benutzers. die I / O-Manager kopiert Daten von dem Systempuffer zu dem Ausgangspuffer Benutzer für Leseoperationen, wenn die IRP vervollständigt und dann befreit den Systempuffer. Buffered I / O wird, wie dies in den Fahrer beispielsweise definiert
CTL_CODE (FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS)
Also bei der Verwendung von METHOD_BUFFERED kopiert unsere Systemdaten zurück zu unserer Userbuffer-Adresse, wenn IRP abgeschlossen ist die IoCompleteRequest Funktion.
Beheben eines Vulnerable Treiber Fragen die gleiche Frage an alle Anbieter, wie sie jeweils das Problem behoben war es interessant, verschiedene Ansätze gemacht worden zu finden. Ein Ansatz war
wenn der Ausgabepuffer-Adresse zu überprüfen im Benutzerbereich war
if (Irp-> Userbuffer> MmHighestUserAddress)
gfi Endpoint-Security 2013 keygen Endpoint-Security-10 Produkthandbuch