Настройка предотвращения выполнения данных (DEP)
Предотвращение выполнения данных (Data Execution Prevention, DEP) — это технология защиты оперативной памяти. Компьютер с помощью DEP помечает все ячейки памяти, используемые приложениями, как неисполняемые «только для данных», если ячейка не содержит исполняемого кода в явном виде.
Если приложение пытается выполнить код со страницы памяти, помеченной как неисполняемая, процессор может сгенерировать исключение и предотвратить исполнение кода.
Таким образом, система помешает вредоносной программе (например, вирусу) внедриться в память компьютера. Позволяя только особым областям памяти запускать исполняемый код, DEP защищает компьютер от многих типов самовоспроизводящихся вирусов. Предотвращение выполнения данных может быть аппаратным и программным.
Аппаратное DEP более надежно, так как распространяется на все программы и службы, исполняемые на компьютере. Программное DEP, как правило, служит хорошей защитой только программ и служб Windows.
Компании Advanced Micro Devices (AMD) и Intel поставляют совместимые с Windows процессоры, поддерживающие функцию DEP.
Начиная с пакета обновления 2 (SP2) для Windows XP 32-разрядная версия Windows использует один из следующих методов.
Чтобы использовать указанные функции, необходимо, чтобы процессор работал в режиме расширения физических адресов (Physical Address Extension, PAE). Windows автоматически включает режим PAE для поддержки функции DEP, поэтому пользователям не нужно отдельно включать PAE.
Physical Address Extension (PAE) — режим работы встроенного блока управления памятью x86-совместимых процессоров, в котором используются 64-битные элементы таблиц страниц (из которых для адресации используются только 36 бит), c помощью которых процессор может адресовать 64 ГБ физической памяти (вместо 4 ГБ, адресуемых при использовании 32-разрядных таблиц), хотя каждая задача (программа) всё равно может адресовать максимум до 4 ГБ виртуальной памяти.
64-разрядные версии Windows также поддерживают функцию NX, но режим работы с оперативной памятью РАЕ для них не обязателен. Кроме того, для 64-разрядных компьютеров возможны разные конфигурации памяти.
Чтобы узнать, поддерживают ли аппаратные средства вашего компьютера DEP, выполните следующие действия.
1. Откройте меню Пуск и выберите Панель управления.
Меню Пуск — Панель управления
2. Щелкните на категории Система и безопасность и откройте окно Система.
Категория Система и безопасность
3. Внизу в левой части щелкните на ссылке Счетчики и средства производительности.
Счетчики и средства производительности
4. Щелкните на ссылке Настройка визуальных эффектов. На экране появится диалоговое окно Параметры быстродействия.
Настройка визуальных эффектов
5. Откройте вкладку Предотвращение выполнения данных. Внизу вы найдете информацию о поддержке DEP.
Информацию о поддержке DEP
Во вкладке Предотвращение выполнения данных можно настроить работу DEP с помощью следующих параметров.
Поскольку некоторые приложения могут работать нестабильно или вообще не будут работать при программном DEP, для них придется сделать исключение.
Щелкните на кнопке Добавить… и выберите программы, для которых вы хотите отключить предотвращение выполнения.
Отключение предотвращение выполнения
Программа в исключении
Обратите внимание, в 64-разрядных версиях Windows механизм DEP всегда включен для 64-разрядных приложений. Поэтому если вы пожелаете его включить для 64-разрядных приложений, то появится диалоговое окно «Вы не можете задать атрибуты DEP для 64-разрядных исполняемых файлов».
DEP всегда включен для 64-разрядных приложений
Как убедиться, что аппаратная функция DEP работает в Windows
Чтобы убедиться, что аппаратная функция DEP работает в Windows, воспользуйтесь одним из следующих способов.
Способ 1. Используйте средство командной строки Wmic
С помощью средства командной строки Wmic можно проверить параметры DEP. Чтобы определить, доступна ли аппаратная функция DEP, выполните следующие действия:
1. В меню Пуск меню Пуск введите в поле Поиска команду cmd и нажмите кнопку ВВОД.
Вызов командной строки
2. В командной строке введите следующую команду и нажмите клавишу ВВОД:
wmic OS Get DataExecutionPrevention_Available
Если в результате будет получено значение TRUE, аппаратная функция DEP включена.
Средство командной строки Wmic
Если FALSE, значит аппаратная функция DEP выключена. Включить ее можно в настройках BIOS. Как это сделать — лучше посмотреть документацию к материнской плате вашего компьютера.
Параметр no-execute page-protection (NX) включает аппаратный DEP на платах с чипсетом от AMD, а параметр Execute Disable Bit (XD) — на платах с чипсетами от Intel.
Чтобы определить текущую политику поддержки DEP, выполните следующие действия.
1. В меню Пуск меню Пуск введите в поле Поиска команду cmd и нажмите кнопку ВВОД.
Вызов командной строки
2. В командной строке введите следующую команду и нажмите клавишу ВВОД:
wmic OS Get DataExecutionPrevention_SupportPolicy
В результате выполнения команды будет возвращено значение 0, 1, 2 или 3.
Политика поддержки DEP
Эти значения соответствуют политикам поддержки DEP, описанным ниже.
2 — OptIn (конфигурация по умолчанию) — Функция DEP включена только для системных компонентов и служб Windows
3 – OptOut — Функция DEP включена для всех процессов. Администратор может вручную создать список приложений, для которых функция DEP отключена
1 – AlwaysOn — Функция DEP включена для всех процессов
0 – AlwaysOff — Функция DEP отключена для всех процессов
Преимущества DEP
Основным преимуществом, которое предоставляет функция DEP, является возможность предотвратить запуск кода из областей данных (таких как куча, стек или пул памяти). Как правило, содержимое стека и кучи по умолчанию не является исполняемым кодом.
При аппаратной реализации функция DEP вызывает исключение при запуске кода из указанных местоположений. Если исключение остается необработанным, то процесс останавливается. В режиме ядра исполнение кода, находящегося в защищенной памяти, вызывает появление стоп-ошибки.
Функция DEP позволяет отразить целый класс атак. В частности, DEP позволяет блокировать вредоносные программы, в результате работы которых вирус помещает в процесс дополнительный код, а затем пытается выполнить этот код. В системах, поддерживающих функцию DEP, выполнение такого кода вызывает исключение.
Определение того, что оборудование DEP доступно и настроено на компьютере
В этой статье описывается, как определить, что оборудование DEP доступно и настроено на вашем компьютере.
Применяется к: Windows Server 2012 R2, Windows 10 — все выпуски
Исходный номер КБ: 912923
Введение
Data Execution Prevention (DEP) — это набор аппаратных и программных технологий, которые выполняют дополнительные проверки памяти, чтобы защититься от вредоносных эксплойтов кода.
Принудённый к оборудованию DEP отмечает все расположения памяти в процессе как неисполнимые, если в расположении явно не содержится исполняемый код. Тип вредоносных атак кода пытается вставить и запустить код из неисполнимых мест памяти. DeP помогает предотвратить эти атаки, перехватив их и подняв исключение.
В этой статье описываются требования к использованию deP с аппаратным обеспечением. В этой статье также описывается, как подтвердить, что аппаратный deP работает в Windows.
Дополнительная информация
Требования к использованию deP с аппаратным обеспечением
Чтобы использовать deP с аппаратным обеспечением, необходимо выполнить все следующие условия:
Процессор компьютера должен поддерживать службу deP с аппаратным обеспечением.
Многие недавние процессоры поддерживают службу deP с аппаратным обеспечением. И Advanced Micro Devices (AMD) и корпорация Intel определили и отгрузили Windows совместимые с DEP архитектуры. Эта поддержка процессора может быть известна как технология NX (без выполнения) или XD (выполнение отключения). Чтобы определить, поддерживает ли процессор компьютера аппаратную поддержку deP, обратитесь к производителю компьютера.
В BIOS должны быть включены аппаратные deP.
На некоторых компьютерах можно отключить поддержку процессора для аппаратного обеспечения deP в BIOS. Эта поддержка не может быть отключена. В зависимости от производителя компьютера параметр отключения этой поддержки может быть помечен как «Предотвращение выполнения данных», «XD», «Выполнение отключения» или «NX».
Компьютер должен иметь Windows XP с Пакет обновления 2 или Windows Server 2003 с Пакет обновления 1.
Обе 32-битные версии и 64-битные версии Windows поддерживают поддерживаемый оборудованием DEP. Windows Xp Media Center Edition 2005 и Microsoft Windows XP Tablet PC Edition 2005 включают все функции и компоненты Windows XP SP2.
Для программ на компьютере необходимо включить deP с аппаратным обеспечением.
В 64-битных версиях Windows для 64-битных программ всегда включена программа deP с аппаратным обеспечением. Однако в зависимости от конфигурации 32-битные программы deP с аппаратным обеспечением могут быть отключены.
Сведения о настройке защиты памяти в Windows XP с Пакет обновления 2 можно найти на следующем веб-сайте Microsoft:
https://technet.microsoft.com/library/cc700810.aspx
Как подтвердить, что аппаратное deP работает в Windows
Чтобы подтвердить, что аппаратный deP работает в Windows, используйте один из следующих методов.
Метод 1. Использование Wmic средства командной строки
Вы можете использовать Wmic средство командной строки для изучения параметров DEP. Чтобы определить, доступен ли аппаратный deP, выполните следующие действия:
Нажмите кнопку Начните, нажмите кнопку Выполнить, введите cmd в поле Открыть, а затем нажмите кнопку ОК.
В командной строке введите следующую команду, а затем нажмите клавишу ВВОД:
Если вывод является «TRUE», доступны аппаратные deP.
Чтобы определить текущую политику поддержки deP, выполните следующие действия.
Нажмите кнопку Начните, нажмите кнопку Выполнить, введите cmd в поле Открыть, а затем нажмите кнопку ОК.
В командной строке введите следующую команду, а затем нажмите клавишу ВВОД:
Возвращено значение 0, 1, 2 или 3. Это значение соответствует одной из политик поддержки DEP, описанных в следующей таблице.
| DataExecutionPrevention_SupportPolicy свойства | Уровень политики | Описание |
|---|---|---|
| 2 | OptIn (конфигурация по умолчанию) | Только Windows системные компоненты и службы применяют deP |
| 3 | OptOut | DeP включен для всех процессов. Администраторы могут вручную создать список определенных приложений, которые не имеют применения DEP |
| 1 | AlwaysOn | DeP включен для всех процессов |
| 0 | AlwaysOff | DEP не включен для любых процессов |
Чтобы убедиться, Windows работает с включенной программой deP оборудования, DataExecutionPrevention_Drivers свойства Win32_OperatingSystem класса. В некоторых конфигурациях системы аппаратные deP могут быть отключены с помощью коммутаторов /nopae или /execute в Boot.ini файле. Чтобы изучить это свойство, введите следующую команду в командной подсказке:
wmic OS Get DataExecutionPrevention_Drivers
Метод 2. Использование графического пользовательского интерфейса
Чтобы с помощью графического пользовательского интерфейса определить, доступен ли deP, выполните следующие действия:
Этот элемент начинается с «Win32_OperatingSystem.Name=Microsoft. «.
Чтобы определить режим работы DEP, DataExecutionPrevention_SupportPolicy свойства Win32_OperatingSystem класса. В таблице в конце метода 1 описывается каждое значение политики поддержки.
Чтобы убедиться, что в Windows включена DataExecutionPrevention_Drivers, изучите Win32_OperatingSystem класса. В некоторых конфигурациях системы аппаратные deP могут быть отключены с помощью коммутаторов /nopae или /execute в Boot.ini файле.
В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких явных, подразумеваемых и прочих гарантий относительно производительности или надежности этих продуктов.
Предотвращение выполнения данных
предотвращение выполнения данных (DEP) — это функция защиты памяти на уровне системы, встроенная в операционную систему, начиная с Windows XP и Windows Server 2003. Функция DEP позволяет системе помечать одну или несколько страниц памяти как не являющиеся исполняемыми. Пометка областей памяти как неисполняемых файлов означает, что код не может быть выполнен из этого региона памяти, что усложняет использование переполнения буфера.
DEP предотвращает запуск кода из страниц данных, таких как куча по умолчанию, стеки и пулы памяти. Если приложение пытается выполнить код из защищенной страницы данных, возникает исключение нарушения прав доступа к памяти, а если исключение не обрабатывается, вызывающий процесс завершается.
DEP не предназначен для обеспечения полной защиты от всех эксплойтов; Он предназначен для использования в качестве другого средства, которое можно использовать для защиты приложения.
Как работает предотвращение выполнения данных
Приложения не могут выполнять код из кучи процесса по умолчанию или стека.
Замечания по программированию
Также следует попытаться управлять макетом виртуальной памяти приложения и создавать регионы исполняемых файлов. Эти регионы исполняемых файлов должны находиться в меньшем объеме памяти, чем в неисполняемых регионах. Поиск регионов исполняемых файлов под неисполняемыми областями помогает предотвратить переполнение буфера в исполняемой области памяти.
Совместимость приложений
Некоторые функциональные возможности приложения несовместимы с DEP. Приложения, выполняющие динамическое создание кода (например, JIT-создание кода) и не позволяющие явно отмечать сформированный код с разрешением EXECUTE, могут столкнуться с проблемами совместимости на компьютерах, использующих DEP. Приложения, написанные в библиотеке активных шаблонов (ATL) версии 7,1 и более ранних версий, могут попытаться выполнить код на страницах, помеченных как не являющиеся исполняемыми, что запускает NX-ошибку и завершает работу приложения. Дополнительные сведения см. в разделе сетпроцессдепполици. Большинство приложений, выполняющих действия, несовместимые с DEP, должны быть обновлены для правильной работы.
Небольшое количество исполняемых файлов и библиотек может содержать исполняемый код в разделе данных файла изображения. В некоторых случаях приложения могут размещать небольшие сегменты кода (которые обычно называются преобразователями) в разделах данных. Однако DEP помечает разделы файла изображения, которые загружаются в память как неисполняемые, если в разделе не применен атрибут Executable.
Поэтому исполняемый код в разделах данных должен быть перенесен в раздел кода, или раздел данных, содержащий исполняемый код, должен быть явно помечен как исполняемый. Атрибут Executable, image _ SCN _ mem _, должен быть добавлен в поле характеристики соответствующего заголовка раздела для разделов, содержащих исполняемый код. Дополнительные сведения о добавлении атрибутов в раздел см. в документации, входящей в состав вашего компоновщика.
Функция DEP: за что отвечает, как включить или отключить на Windows 10
Иногда пользователям Windows не удаётся открыть ту или иную утилиту или игру из-за функции DEP, которая блокирует её запуск. Что скрывается под данной аббревиатурой? Можно ли отключить это средство Windows и как? Рассмотрим детально несколько действенных способов.
Что такое DEP и для чего он нужен
Английская аббревиатура DEP расшифровывается как Data Execution Prevention. В переводе на русский — «Предотвращение выполнения данных». Это специальный набор как аппаратных, так и программных средств, цель которых — обеспечить компьютер дополнительной защитой от опасных вредоносных программ.
Как работает функция DEP? Она проверяет оперативную память устройства (ОЗУ) и её содержимое. Когда вирус, созданный для работы в «оперативке», попадет на ПК, он захочет запустить процесс исполнения собственных кодов в системной области ОЗУ. В этом случае DEP тут же обнаруживает, что область памяти, которая предназначена для самой системы Windows и авторизованных утилит, используется неправильно какой-то неизвестной программой (вирусом). В результате опция блокирует (предотвращает) его запуск и уведомляет пользователя об этом в специальном окошке с сообщением.
Таким образом, DEP способна отразить множество вирусных атак. Функцию нельзя рассматривать как полную замену антивирусу. Если последний не справился со своей задачей по тем или иным причинам, в ход идёт технология DEP.
На практике данное понятие означает по умолчанию установленную функцию «Виндовс», что-то вроде антивируса, но по сути им не считается. Она блокирует проги, которые хотят для своей работы применить часть оперативной памяти, отмеченную операционкой как «неиспользуемая».
Как отключить DEP на Windows 10
Выключать описываемую службу стоит только в том случае, если ваш антивирус работает эффективно: не даёт вредоносному ПО попасть в систему. Деактивация поможет запустить те утилиты, которые по каким-то причинам были приняты DEP за вирусы, хотя в действительности ими не являются.
Отключение для всех утилит
Отключить технологию DEP полностью в настройках не получится, так как это важный системный процесс для обеспечения безопасности. Для этого нужно воспользоваться стандартным средством Windows — «Командной строкой».
Видео: полностью выключаем DEP
Деактивация для отдельных приложений
Рекомендуется всё же сделать выбор в пользу выборочного отключения, если DEP мешает запускаться тем или иным утилитам, так как полное отключение подвергнет ваш компьютер риску заражения. Вы должны быть также уверены, что данные программы безопасные. Выключить дополнительную защиту можно в её настройках (в окне «Параметры быстродействия»), а также в «Редакторе реестра».
Настройка исключений для DEP
Добавлять исключения в виде утилит мы будем в системном окне Windows «Параметры быстродействия». Открывается оно через «Панель управления». Подробно опишем процесс:
Отключение с помощью «Редактора реестра»
Данный метод немного сложнее, чем предыдущий, так как подразумевает самостоятельное создание в окне редактора записей, каждая из которых будет соответствовать программе-исключению. Чтобы вы не запутались, рассмотрим все шаги подробно:
Как включить DEP на Windows 10
Выбор способа для обратного включения DEP зависит от того, каким методом вы пользовались, когда отключали опцию. Рассмотрим все варианты.
Через «Командную строку»
Если вы использовали «Командную строку», то есть провели деактивацию сразу для всех утилит, активировать дополнительную защиту DEP через «Панель управления» у вас никак не получится, потому что тот самый раздел «Предотвращение выполнения данных» будет просто отсутствовать в окне. Что в этом случае предпринять?
Через «Панель управления»
Если вы отключали DEP для отдельных приложений в окне «Параметры быстродействия» и теперь хотите, чтобы функция работала для них снова, сделайте следующее:
В «Редакторе реестра»
Если вы создавали параметры для отдельных программ в «Редакторе реестра», процедура активации средства защиты DEP будет выглядеть следующим образом:
Функция DEP представляет собой «предохранитель» системы от запуска вирусов. В некоторых случаях она может по ошибке принимать безопасные программы, которыми пользуется клиент Windows 10, за вредоносное ПО. Если вы доверяете этим утилитам, поставьте их в качестве исключения в окне «Параметры безопасности» или же в «Редакторе реестра» — опция перестанет работать для них. Вы также вправе выключить функцию полностью через «Командную строку», однако в этом случае вы берете на себя ответственность за безопасность вашего компьютера: если вирусный код попадёт на ваше устройство, он запустится при выключенном DEP.
DEP и ASLR: форточки в окнах вашего компьютера
С выхода Windows 2000 прошло больше двадцати лет, и все десять лет, что официально Microsoft поддерживала ее расширенную версию, разработчики только тем и занимались, что выпускали очередные заплатки. Если вы до сих пор где-то ее используете, все обновления можно просмотреть через systeminfo в командной строке. Пройти мимо очередного сервис-пака было опасно – никто знал, во что могут вылиться незакрытые гештальты проблемы с безопасностью.
Чтобы хоть немного подняться в глазах простых сисадминов, Microsoft выводит на рынок новую ОС, которая… оказывается практически полным клоном Win2000 и, конечно, повторяет ее судьбу. И вместо того, чтобы чистосердечно раскаяться, разработчики в очередной раз переводят стрелки на грозных хакеров. Хотя на самом деле хакеры не мешали, а наоборот, помогали создавать что-то более стабильное и безопасное.
Тем временем в Microsoft продолжили искать обходные механизмы. Одним из них должен быть стать DEP (Data Execution Prevention). Он появился в XP, но так и не оправдал надежд. Следующая попытка была сделана уже в Win7, где реализовали функцию ASLR (Address Space Layout Randomization). На нее возлагали много надежд, но скоро стало понятно: ASLR так же уязвима, как и предыдущие решения.
Несмотря на явные огрехи в реализации DEP и ASLR, я предлагаю рассмотреть их поближе, чтобы узнать плюсы с минусами и, конечно, способы программного обхода. Начну с теории – так будет понятно, в чем заключается их основная идея.
Защиту от исполнения данных можно реализовать двумя способами: программным и аппаратным. Первый, он же software-enforced, подходит только для 32-битных версий Windows, у второго (hardware-enforced) область применения чуть шире: все та же 32-битная ось, но уже 64-битные чипы. Подобное разделение легко объяснить: DEP прямо соотносится с 63-м битом в записях виртуальных страниц PTE (Page Table Entry), которого нет в 32-битных ОС. Поэтому для последних доступен только один вариант – с эмуляцией и подключением ядра Ntkrnlpa.exe.
Допустим, основное (Ntoskrnl.exe) и альтернативное ядра находятся в папке \windows\system32. Если в boot.ini установить флаг /РАЕ (Physical Address Extension), то ось будет грузиться с альтернативного ядра, пока основное будет простаивать. РАЕ помогает сделать так, чтобы у обычного процессора на 32 бита было в распоряжении не 4 Гб адресного пространства, а 64 Гб.
На левом скрине у нас PDT (каталог виртуальных страниц), на который указывает регистр управления CR3 текущего процесса. В каталоге находятся ровно 1024 (или 10 бит) записей Entry, каждая – по 32 бита. На каждую запись приходится одна из 1024 таблиц PT, в которой, в свою очередь, тоже 1024 записи PTE. И, наконец, PTE указывают на одну из 1024 страниц виртуальной памяти по 4 Кб. Итого суммарно мы получаем 4 ГБ памяти (результат умножения 1024 на 1024 на 4096).
На правом скрине видно, что в ядре РАЕ с 32 до 52 бит выросла разрядность записей Entry, но их количество сократилось вдвое: было 1024, стало 512, то есть теперь у нас девять бит вместо десяти. Благодаря тому, что в записях теперь есть дополнительные разряды, можно создавать в два раза больше таблиц PT и каталогов PDT. У любой страницы по-прежнему 4 Кб, но количество страниц просто гигантское. Также возможны иные режимы, когда вместо 4-килобайтных страниц мы получаем 2- и даже 4-мегабайтные.
32-битные записи PTE заполнены информацией по максимуму, и свободных битов в них нет. Но если разрядность повысить до 64 бит (а мы помним, что полезных там только 52 бита), появляется 12 свободных бит. Их можно закодировать под что-то полезное.
Что мы здесь видим: в РАЕ-режиме длина записи увеличилась вдвое. Это позволило нам поместить в старший (63-й) бит защиту от исполнения NX. Если записать туда единицу, то мы защитим от исполнения страницу, у которой базовый адрес хранится в записи PTE таблицы РТ (и это та самая запись, значение бита которой мы меняем). Максимум, что будет доступно для этой страницы – запись или перезапись (write/rewrite). В ntoskrnl.exe ядро non-PAE таким битом не располагает, поэтому и DEP для него не доступен, как и для всего 32-битного семейства Windows XP без РАЕ.
На 64-битных осях все иначе. Так как им не нужно ядро РАЕ, то оно не входит в состав операционной системы, а сама она функционирует в режиме AWE (Address Windowing Extensions). На схеме ниже показано, как в этом случае происходит трансляция виртуального адреса.
Механизм трансляции адреса в 64-битном режиме
Ядро выставляет DEP-защиту в момент запуска программы. Сама операционная система конфигурирует DEP (всего доступно четыре варианта), и это напрямую определяет, можно или нет обойти защиту программным способом.
Первая конфигурация: AlwaysOff = 0
Аппаратный DEP деактивирован для всех элементов ОС, а сама она работает на базовом ядре Ntoskrnl.exe без РАЕ.
Вторая конфигурация: AlwaysOn = 1
Аппаратный DEP активирован для всех. Даже если вы хотите, чтобы он не работал для отдельных программ, ничего не получится – отключать его точечно нельзя. Другими словами, абсолютно все процессы запускаются с включенным DEP.
Третья конфигурация: OptInt = 2
DEP на аппаратном уровне распространяется только на компоненты ОС. Эта модель по умолчанию используется на клиентских версиях Windows. Если нужно отключить DEP для отдельных приложений/процессов, это можно сделать программным способом.
Четвертая конфигурация: OptOut = 3
Стандартный режим для серверных версий Windows. DEP активирован для всех процессов, в том числе запущенных пользователем системы, и его можно отключить для избранных программ.
Не рекомендую относиться к DEP как к надежному средству защиты. Судя по конфигурациям, им легко управлять на программном уровне. А если вспомнить про VirtualProtect(Ex), с которой можно «поиграть» атрибутами страниц виртуальной памяти, механизм защиты выглядит еще более хрупким. Единственное, что достойно внимания, – это вторая конфигурация. С ней попытки сломить защиту закончатся фейлом. Минус в том, что работает это только на серверных системах, а на клиентских даже при такой конфигурации DEP может легко отключить вполне безобидное приложение вроде архиватора (легального, между прочим!).
Эти функции собраны в библиотеке kernel32.dll, и их можно использовать с правами администратора.
1. GetSystemDEPPolicy() – вызывает параметры системной политики DEP. У этой функции нет дополнительных аргументов, и все, на что она способна, – это вернуть порядковый номер выбранной DEP конфигурации. Сама конфигурация выбирается на этапе загрузки операционной системы, а для ее изменения придется обратиться к boot.ini. Чтобы активировать DEP на глобальном уровне, нужен бит (11) MSR-регистра 0xC0000080, который называется IA32_EFER.NXE.
2. GetProcessDEPPolicy() – делает запрос параметра DEP для выбранного процесса. Если операция успешная, функция возвращает TRUE, в противном случае – FALSE=0.
3. SetProcessDEPPolicy() – задает параметры DEP для выбранного процесса. Доступен всего один аргумент – флаг предыдущей функции Get(). Результат работы функции зависит от общесистемной политики DEP (два варианта: OptInt или OptOut). Работать с DEP можно только тогда, когда GetProcessDEPPolicy() периодически возвращает FALSE.
Ниже привожу код утилиты, которая будет вызывать перечисленные функции. Для вывода строк рекомендую использовать «таблицы переходов», чтобы избежать ненужных проверок в цикле CASE.

















