структура PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY (winnt.h)
Содержит параметры политики устранения рисков процесса для аппаратной защиты стека (HSP) в пользовательском режиме. Функции GetProcessMitigationPolicy и SetProcessMitigationPolicy используют эту структуру.
Синтаксис
typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY {
union {
DWORD Flags;
struct {
DWORD EnableUserShadowStack : 1;
DWORD AuditUserShadowStack : 1;
DWORD SetContextIpValidation : 1;
DWORD AuditSetContextIpValidation : 1;
DWORD EnableUserShadowStackStrictMode : 1;
DWORD BlockNonCetBinaries : 1;
DWORD BlockNonCetBinariesNonEhcont : 1;
DWORD AuditBlockNonCetBinaries : 1;
DWORD CetDynamicApisOutOfProcOnly : 1;
DWORD SetContextIpValidationRelaxedMode : 1;
DWORD ReservedFlags : 22;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
} PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY, *PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY;
Члены
DUMMYUNIONNAME
DUMMYUNIONNAME.Flags
Этот элемент зарезервирован для использования системой.
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStack
Если задано значение TRUE, для процесса в режиме совместимости включена защита стека с применением аппаратного режима. Это означает, что ЦП проверяет адреса возвращаемых функций во время выполнения, используя механизм теневого стека, если он поддерживается оборудованием. В режиме совместимости только нарушения теневого стека, возникающие в модулях, которые считаются совместимыми с теневыми стеками (CETCOMPAT), являются неустранимыми. Чтобы модуль считался CETCOMPAT, его необходимо скомпилировать с помощью CETCOMPAT для двоичных файлов или пометить с помощью SetProcessDynamicEnforcedCetCompatibleRanges для динамического кода. Это поле нельзя изменить с помощью SetProcessMitigationPolicy.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditUserShadowStack
Если значение РАВНО TRUE, нарушения стека тени, которые были бы неустранимы, вместо этого обрабатываются как неустранимые, а диагностические события регистрируются в журнале событий. Если это поле имеет значение TRUE, enableUserShadowStack должно иметь значение TRUE, а EnableUserShadowStackStrictMode может иметь значение TRUE в зависимости от того, выполняется ли аудит режима совместимости или строгий режим. Это поле нельзя изменить с помощью SetProcessMitigationPolicy.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidation
Если задано значение TRUE, то при вызове API, которые изменяют контекст выполнения потока , например SetThreadContext и RtlRestoreContext, проверка выполняется для указателя инструкции, указанного в новом контексте выполнения. Это поле нельзя изменить с помощью SetProcessMitigationPolicy.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditSetContextIpValidation
Если значение РАВНО TRUE, указатели инструкций, которые привели бы к сбою проверки, вместо этого разрешены, а события диагностики регистрируются в журнале событий. Если это поле имеет значение TRUE, setContextIpValidation должно иметь значение TRUE, а SetContextIpValidationRelaxedMode может иметь значение TRUE в зависимости от того, в каком режиме в данный момент работает проверка указателя инструкций. Это поле нельзя изменить с помощью SetProcessMitigationPolicy.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.EnableUserShadowStackStrictMode
Если задано значение TRUE, защита стека с применением аппаратного режима в пользовательском режиме включена для процесса в строгом режиме. Все нарушения стека тени являются неустранимыми. Если это поле имеет значение TRUE, параметр EnableUserShadowStack должен иметь значение TRUE. Если HSP включен в режиме совместимости, его можно обновить до строгого режима во время выполнения, задав для этого поля значение TRUE и вызвав SetProcessMitigationPolicy. HSP нельзя понизить или отключить с помощью SetProcessMitigationPolicy. Если HSP отключен, его нельзя включить с помощью SetProcessMitigationPolicy.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinaries
Если значение РАВНО TRUE, двоичные файлы, не скомпилированные с помощью CETCOMPAT, не загружаются в процесс. Эту политику можно включить после запуска процесса, вызвав SetProcessMitigationPolicy. Его нельзя отключить после включения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.BlockNonCetBinariesNonEhcont
Если значение РАВНО TRUE, двоичные файлы, которые не компилируются с помощью CETCOMPAT или не содержат метаданные продолжения обработки исключений (/guard:ehcont), блокируются от загрузки в процесс. Если это поле имеет значение TRUE, значение BlockNonCetBinaries должно иметь значение TRUE. Эту политику можно включить после запуска процесса, вызвав SetProcessMitigationPolicy. Его нельзя отключить или понизить после включения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.AuditBlockNonCetBinaries
Если значение РАВНО TRUE, двоичные загрузки, которые были бы заблокированы, разрешаются, а диагностические события регистрируются в журнале событий. Если это поле имеет значение TRUE, значение BlockNonCetBinaries должно иметь значение TRUE, а BlockNonCetBinariesNonEhcont может иметь значение TRUE в зависимости от того, какие типы двоичных файлов в данный момент заблокированы для загрузки в процесс. Это поле нельзя изменить с помощью SetProcessMitigationPolicy.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.CetDynamicApisOutOfProcOnly
Если задано значение TRUE, некоторые API HSP, используемые для указания свойств безопасности динамического кода, можно вызывать только извне процесса в целях безопасности. К этим API относятся SetProcessDynamicEHContinuationTargets и SetProcessDynamicEnforcedCetCompatibleRanges. Эту политику можно включить после запуска процесса, вызвав SetProcessMitigationPolicy. Его нельзя отключить после включения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.SetContextIpValidationRelaxedMode
Если значение РАВНО TRUE, проверка указателя инструкций процесса понижается до неактивного режима, что позволяет использовать все указатели инструкций, которые находятся в динамическом коде или в двоичных файлах, не содержащих метаданные продолжения обработки исключений. Если это поле имеет значение TRUE, параметр SetContextIpValidation должен иметь значение TRUE. Процесс можно обновить из нестрого режима в обычный режим во время выполнения, задав для этого поля значение FALSE и вызвав SetProcessMitigationPolicy.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.ReservedFlags
Этот элемент зарезервирован для использования системой.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10, версия 2004 (10.0; Сборка 19041) |
Минимальная версия сервера | Windows Server версии 2004 (10.0; Сборка 19041) |
Верхняя часть | winnt.h |