/GUARD (Aktivieren von Guard-Prüfungen)

Teilt dem Linker mit, ob die Steuerungsflussschutzüberprüfung im ausführbaren Image unterstützt werden soll.

Syntax

/GUARD:CF
/GUARD:NO

Hinweise

Die /GUARD:CF Linkeroption ändert den Header einer DLL- oder EXE-Datei, um die Unterstützung für CFG-Laufzeitprüfungen (Control Flow Guard) anzugeben. Der Linker fügt dem Header auch die erforderlichen Ablaufsteuerungs-Zieladressdaten hinzu. Standardmäßig /GUARD:CF ist diese Option deaktiviert. Sie kann mithilfe von /GUARD:NO. explizit deaktiviert werden. Um effektiv zu sein, /GUARD:CF ist auch die /DYNAMICBASE Linkeroption (Randomisierung des Adressraumlayouts verwenden) erforderlich, die standardmäßig aktiviert ist.

Wenn Quellcode mithilfe der /guard:cf Compileroption kompiliert wird, analysiert der Compiler den Steuerungsfluss, indem alle indirekten Aufrufe auf mögliche Zieladressen untersucht werden. Der Compiler fügt Code ein, um zu überprüfen, ob sich die Zieladresse einer indirekten Aufrufanweisung zur Laufzeit in der Liste der bekannten Zieladressen befindet. Betriebssysteme, die CFG unterstützen, beenden ein Programm, das bei einer CFG-Laufzeitüberprüfung einen Fehler ausgibt. Diese Überprüfung erschwert es einem Angreifer, bösartigen Code auszuführen, indem Datenbeschädigung verwendet wird, um ein Anrufziel zu ändern.

Die /GUARD:CF Option muss sowohl für den Compiler als auch für den Linker angegeben werden, um CFG-fähige ausführbare Images zu erstellen. Der kompilierte, aber nicht verknüpfte /GUARD:CF Code verursacht die Kosten für Laufzeitüberprüfungen, aktiviert jedoch keinen CFG-Schutz. Wenn die /guard:cf Option für den cl Befehl zum Kompilieren und Verknüpfen in einem Schritt angegeben wird, übergibt der Compiler das Flag an den Linker. Wenn die Control Flow Guard-Eigenschaft in Visual Studio festgelegt wird, wird die /GUARD:CF Option sowohl an den Compiler als auch an den Linker übergeben. Wenn Objektdateien oder Bibliotheken separat kompiliert wurden, muss die Option explizit im link Befehl angegeben werden.

So legen Sie diese Linkeroption in Visual Studio fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten für das Projekt. Weitere Informationen finden Sie unter Festlegen von Compiler- und Buildeigenschaften.

  2. Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>Linker>Befehlszeile.

  3. Geben Sie in "Zusätzliche Optionen" die Zeichenfolge /GUARD:CFein. Wählen Sie "OK" aus, oder "Übernehmen", um Ihre Änderungen zu speichern.

So legen Sie diese Linkeroption programmgesteuert fest

Siehe auch

/guard (Steuerungsflussschutz aktivieren)
MSVC-Linkerreferenz
Linkeroptionen