Share via


/GUARD (Habilitar comprobaciones de protección)

Indica al enlazador si se admiten comprobaciones de Control Flow Guard en la imagen ejecutable.

Sintaxis

/GUARD:CF
/GUARD:NO

Comentarios

La /GUARD:CF opción del enlazador modifica el encabezado de un archivo DLL o EXE para indicar la compatibilidad con las comprobaciones en tiempo de ejecución de Control Flow Guard (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á deshabilitado. Se puede deshabilitar explícitamente mediante /GUARD:NO. Para que sea eficaz, /GUARD:CF también requiere la /DYNAMICBASE opción del enlazador (Usar selección aleatoria del diseño del espacio de direcciones), que está activada de forma predeterminada.

Cuando el código fuente se compila mediante la /guard:cf opción del compilador, el compilador analiza el flujo de control mediante el examen de todas las llamadas indirectas para las 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. Esta comprobación hace que sea más difícil que un atacante ejecute código malintencionado mediante el uso de daños en los datos para cambiar un destino de llamada.

La /GUARD:CF opción debe especificarse tanto en el compilador como en el enlazador para crear imágenes ejecutables habilitadas para CFG. El código compilado pero no vinculado mediante /GUARD:CF incurre en el costo de las comprobaciones en tiempo de ejecución, pero no habilita la protección de CFG. Cuando se especifica la /guard:cf opción para el cl comando para compilar y vincular en un paso, el compilador pasa la marca al enlazador. Cuando la propiedad Control Flow Guard se establece en Visual Studio, la /GUARD:CF opción se pasa al compilador y al enlazador. Si se han compilado por separado las bibliotecas o los archivos de objetos, la opción debe especificarse explícitamente en el comando link.

Para establecer esta opción del vinculador en Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento de las propiedades del compilador y la compilación.

  2. Seleccione la página de propiedades Propiedades de configuración>Enlazador>Línea de comandos.

  3. En Opciones adicionales, escriba /GUARD:CF. Haga clic en Aceptar o en Aplicar para guardar los cambios.

Para establecer esta opción del vinculador mediante programación

Consulte también

/guard (Habilitar restricción de flujo de control)
Referencia del enlazador MSVC
Opciones del enlazador MSVC