Функция MmSecureVirtualMemoryEx (ntddk.h)
Эта подпрограмма проверяет запрошенный диапазон адресов и защищает указанный диапазон адресов от более строгой защиты и удаления.
Синтаксис
HANDLE MmSecureVirtualMemoryEx(
PVOID Address,
SIZE_T Size,
ULONG ProbeMode,
ULONG Flags
);
Параметры
Address
Указатель на базовый адрес для проверки и защиты.
Size
Указывает размер диапазона для защиты (в байтах).
ProbeMode
Указывает наиболее ограниченную защиту страницы, которая разрешена. Используйте PAGE_READWRITE, чтобы указать, что диапазон адресов должен оставаться доступным для чтения и записи, или используйте PAGE_READONLY, чтобы указать, что диапазон адресов должен оставаться только читаемым.
ProbeMode | Значение |
---|---|
PAGE_READWRITE | Защиту нельзя изменить на PAGE_NOACCESS или PAGE_READONLY. Все остальные изменения защиты разрешены. |
PAGE_READONLY | Защиту нельзя изменить на PAGE_NOACCESS. Все остальные изменения защиты разрешены. |
Flags
Задает один или несколько следующих флагов:
Flag | Описание |
---|---|
MM_SECURE_EXCLUSIVE | Защита выполняется успешно только в том случае, если нет других защищенных элементов безопасности, уже закрепленных в любом месте на рассматриваемом VAD. |
MM_SECURE_NO_CHANGE | После применения изменения защиты для указанного региона виртуального адреса не допускаются. Регион по-прежнему можно удалить, если процесс завершается. |
MM_SECURE_USER_MODE_ONLY | Защита, указанная этой защитой, будет применяться только к последующим вызовам из пользовательского режима, которые пытаются изменить защиту (вызывающие объекты режима ядра будут обходить эту защиту). |
MM_SECURE_NO_INHERIT | Если процесс клонирован, то, в отличие от родительского процесса, VAD дочернего процесса не будет защищен. |
Возвращаемое значение
Возвращает значение, напоминающее дескриптор, используемый только для отмены безопасности диапазона.
Если диапазон не может быть заблокирован из-за проблем с защитой, незафиксированного объема памяти или недопустимых параметров, эта подпрограмма возвращает значение NULL.
Комментарии
Используйте MmSecureVirtualMemoryEx вместо MmSecureVirtualMemory, если необходимо указать MM_SECURE_NO_CHANGE , чтобы в предоставленном представлении не было разрешено изменение защиты.
Возвращаемое значение этой функции можно использовать только с MmUnsecureVirtualMemory. Драйвер вызывает подпрограмму, чтобы вернуть диапазон в нормальное состояние.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10, версия 1809 |
Верхняя часть | ntddk.h |
IRQL | APC_LEVEL |