/GUARD (habilitar comprobaciones de restricción)
Especifica la compatibilidad con las comprobaciones de Protección de flujo de control en la imagen ejecutable.
Sintaxis
/GUARD:{CF|NO}
Comentarios
Cuando se especifica /GUARD:CF, el vinculador modifica el encabezado de un archivo .dll o .exe para indicar la compatibilidad con las comprobaciones en tiempo de ejecución de Protección de flujo de Control (CFG). El vinculador también agrega los datos requeridos de dirección de destino del flujo de control al encabezado. De forma predeterminada, /GUARD:CF está deshabilitada. Se puede deshabilitar explícitamente mediante el uso de /GUARD:NO. Para ser efectivo, /GUARD:CF también requiere la opción del vinculador /DYNAMICBASE (Usar selección aleatoria del diseño del espacio de direcciones), que está activa de forma predeterminada.
Cuando el código fuente se compila mediante la opción /guard:cf, el compilador analiza el flujo de control examinando todas las llamadas indirectas para posibles direcciones de destino. El compilador inserta código para comprobar que la dirección de destino de una instrucción de llamada indirecta está en la lista de direcciones de destino conocidas en tiempo de ejecución. Si un programa no supera una comprobación de CFG en tiempo de ejecución, los sistemas operativos compatibles con CFG lo detienen. Esto hace más difícil que un atacante pueda ejecutar código malintencionado mediante el uso de datos dañados para cambiar un destino de llamada.
La opción /GUARD:CF debe especificarse tanto en el compilador como en el vinculador para crear imágenes ejecutables con protección de flujo de control (CFG). El código compilado pero no vinculado mediante /GUARD:CF aumenta el costo de comprobaciones en tiempo de ejecución, pero no habilita la protección CFG. Cuando se especifica la opción /GUARD:CF al comando para compilar y vincular en un paso, el compilador pasa la marca cl al vinculador. Cuando la propiedad Control Flow Guard se establece en Visual Studio, la opción /GUARD:CF se pasa al compilador y al vinculador. Cuando los archivos o bibliotecas de objetos se han compilado por separado, la opción debe especificarse explícitamente en el link comando .
Para establecer esta opción del vinculador en Visual Studio
Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.
Seleccione la página de propiedades Líneade comandos del vinculadorde propiedades de configuración.
En Opciones adicionales,escriba .
Vea también
/guard (habilitar Protección de flujo de control)
Referencia del enlazador MSVC
Opciones del enlazador MSVC