Предотвращение выполнения данных dep как включить?

Отключение/включение функции DEP в Windows 7-10

В операционных системах Microsoft Windows, начиная с версии XP, имеется одна интересная возможность — предотвращение выполнения данных, в оригинале называется Data Execution Prevention (DEP). Иногда она мешает нормальной работе и её требуется отключать. В принципе ничего в этом сложного нет, а если никакого эффекта не последует, то можно всё включить обратно.

Как полностью отключить DEP

Вы можете посмотреть видео или читать статью:

Итак, сразу к делу. Нажимаем кнопку «Пуск» и в строке поиска пишем «cmd». В результатах поиска в самом верху находим cmd — это нужно для запуска командной строки. Чтобы запустить её с правами Администратора кликаем по команде правой кнопкой и выбираем из контекстного меню «Запуск от имени администратора».

Соответственно, если на данный момент вы залогинены в Windows как обычный пользователь, то система попросит ввести пароль администратора. Теперь, в появившееся чёрное окошко вставляем команду и жмём «Enter»:

bcdedit.exe /set nx AlwaysOff

Результатом должно быть сообщение: «Операция успешно завершена»

Далее нужно перезагрузиться чтобы изменения вступили в силу. Таким образом мы отключили DEP для ВСЕХ служб и программ, в независимости от того, поддерживается ли предотвращение выполнения данных вашим процессором на аппаратном уровне или нет.

Как выключить функцию DEP для отдельной программы

Для этого идём в «Панель управления -> Система» или же нажимаем правой кнопкой по значку «Мой компьютер» на рабочем столе и выбираем «Свойства». Слева в окне кликаем на «Дополнительные параметры системы»

В разделе «Быстродействие» жмём на кнопку «Параметры»

Нам нужна вкладка «Предотвращение выполнения данных». Здесь в принципе всё и так понятно:

По умолчанию DEP работает только для основных программ и служб. Переставляя переключатель в положение «Включить DEP для всех программ и служб, кроме выбранных ниже» мы можем сами определить для каких программ нужно отключать функцию DEP. Для этого просто выберите программу из списка или нажмите «Добавить» и вручную выберите запускаемый (.exe) файл.

Вот ещё, перед тем как отменять DEP из командной строки, сначала проверьте, может она у вас работала для всех программ. Тогда переключите сначала на только основные службы и программы и перезагрузитесь. Возможно, та проблема, из-за которой вы попали на эту статью, будет решена.

Как обратно включить DEP

Чтобы вернуть DEP назад запустите ещё раз командную строку «cmd» от имени администратора, только на этот раз вставьте такую команду:

bcdedit.exe /set nx OptIn

Что вообще такое DEP

Теперь небольшое отступление что же это за функция такая и с чем её едят. Data Execution Prevention призвано защитить систему от некоторых вирусов и угроз безопасности системы. Но, ни в коем случае не стоит путать это с антивирусом или брандмауэром! Это абсолютно разные вещи.

DEP помечает некоторые служебные области в оперативной памяти компьютера как «неисполняемые», и если программа попытается исполнить свой код в этой области, то функция сработает, программа будет принудительно закрыта и будет выдано соответствующее сообщение. Дело в том, что так могут работать некоторые вирусы, а потому такой метод блокировки помогает предотвратить выполнение определённого вредоносного кода.

Бывает как аппаратная реализация DEP (с помощью команд процессора), так и программная (с помощью специального программного кода Windows). Аппаратная реализация надёжнее и все современные процессоры её поддерживают. Так что, если никаких проблем нет, то лучше ничего в настройках не менять. Но, к сожалению, функция DEP может мешать работе и нормальных программ, поэтому иногда её отключают. Как это сделать — статья вам в помощь!

Как отключить DEP в Windows

В этой инструкции поговорим о том, как отключить DEP (Data Execution Prevention, предотвращение выполнения данных) в Windows 7, 8 и 8.1. То же самое должно работать и в Windows 10. Отключение DEP возможно как для системы в целом, так и для отдельных программ, при запуске которых появляются ошибки Data Execution Prevention.

Смысл технологии DEP заключается в том, что Windows, опираясь на аппаратную поддержку NX (No Execute, для процессоров AMD) или XD (Execute Disabled, для процессоров Intel) предотвращает выполнение исполняемого кода из тех областей памяти, которые помечены как неисполняемые. Если проще: блокирует один из векторов атаки вредоносного ПО.

Однако, для некоторого ПО включенная функция предотвращения выполнения данных может послужить причиной появления ошибок при запуске — встречается это и для прикладных программ, и для игр. Ошибки вида «Инструкция по адресу обратилась к памяти по адресу. Память не может быть read или written» тоже могут иметь своей причиной DEP.

Отключение DEP для Windows 7 и Windows 8.1 (для всей системы)

Первый способ позволяет отключить DEP для всех программ и служб Windows. Для этого откройте командную строку от имени Администратора — в Windows 8 и 8.1 это можно сделать с помощью меню, которое открывается правым кликом мыши по кнопке «Пуск», в Windows 7 вы можете найти командную строку в стандартных программах, кликнуть по ней правой кнопкой мыши и выбрать «Запуск от имени Администратора».

В командной строке введите bcdedit.exe /set nx AlwaysOff и нажмите Enter. После этого перезагрузите ваш компьютер: при следующем входе в данную систему DEP будет отключен.

Кстати, при желании, с помощью bcdedit вы можете создать в меню загрузки и выбора системы отдельную запись с отключенным DEP и использовать ее тогда, когда это требуется.

Примечание: для того, чтобы включить DEP в дальнейшем используйте ту же команду с атрибутом AlwaysOn вместо AlwaysOff.

Два способа отключить DEP для отдельных программ

Более разумным может быть отключение предотвращения выполнения данных для отдельных программ, вызывающих ошибки DEP. Сделать это можно двумя способами — через изменение дополнительных параметров системы в панели управления или с помощью редактора реестра.

В первом случае, зайдите в Панель управления — Система (можно также кликнуть по значку «Мой компьютер» правой кнопкой и выбрать «Свойства»). Выберите в списке справа пункт «Дополнительные параметры системы», затем на вкладке «Дополнительно» нажмите кнопку «Параметры» в разделе «Быстродействие».

Откройте вкладку «Предотвращение выполнения данных», отметьте пункт «Включить DEP для всех программ и служб, кроме выбранных ниже» и с помощью кнопки «Добавить» укажите пути к исполняемым файлам программ, для которых нужно отключить DEP. После этого желательно так же перезагрузить компьютер.

Отключение DEP для программ в редакторе реестра

По сути то же самое, что только что описывалось с применением элементов панели управления, можно сделать и посредство редактора реестра. Для его запуска нажмите клавиши Windows + R на клавиатуре и введите regedit после чего нажмите Enter или Ok.

В редакторе реестра перейдите к разделу (папки слева, если раздела Layers нет, создайте его) HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows NT CurrentVersion AppCompatFlags Layers

И для каждой программы, для которой требуется отключение DEP, создайте строковый параметр, имя которого соответствует пути к исполняемому файлу этой программы, а значение — DisableNXShowUI (см. пример на скриншоте).

Ну и наконец, отключать или не отключать DEP и насколько это опасно? В большинстве случаев, если программа, ради которой вы это проделываете загружена из надежного официального источника, это вполне безопасно. В остальных ситуациях — вы делаете это на свой страх и риск, хотя он и не слишком значителен.

Настройка предотвращения выполнения данных (DEP)

Предотвращение выполнения данных (Data Execution Prevention, DEP) — это технология защиты оперативной памяти. Компьютер с помощью DEP помечает все ячейки памяти, используемые приложениями, как неисполняемые «только для данных», если ячейка не содержит исполняемого кода в явном виде.

Если приложение пытается выполнить код со страницы памяти, помеченной как неисполняемая, процессор может сгенерировать исключение и предотвратить исполнение кода.

Таким образом, система помешает вредоносной программе (например, вирусу) внедриться в память компьютера. Позволяя только особым областям памяти запускать исполняемый код, DEP защищает компьютер от многих типов самовоспроизводящихся вирусов. Предотвращение выполнения данных может быть аппаратным и программным.

Аппаратное DEP более надежно, так как распространяется на все программы и службы, исполняемые на компьютере. Программное DEP, как правило, служит хорошей защитой только программ и служб Windows.

Компании Advanced Micro Devices (AMD) и Intel поставляют совместимые с Windows процессоры, поддерживающие функцию DEP.

Начиная с пакета обновления 2 (SP2) для Windows XP 32-разрядная версия Windows использует один из следующих методов.

  • Функцию no-execute page-protection (NX), разработанную компанией AMD.
  • Функцию Execute Disable Bit (XD), разработанную компанией Intel.

Чтобы использовать указанные функции, необходимо, чтобы процессор работал в режиме расширения физических адресов (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 только для основных программ и служб Windows. 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 включена для всех процессов

– AlwaysOff — Функция DEP отключена для всех процессов

Преимущества DEP

Основным преимуществом, которое предоставляет функция DEP, является возможность предотвратить запуск кода из областей данных (таких как куча, стек или пул памяти). Как правило, содержимое стека и кучи по умолчанию не является исполняемым кодом.

При аппаратной реализации функция DEP вызывает исключение при запуске кода из указанных местоположений. Если исключение остается необработанным, то процесс останавливается. В режиме ядра исполнение кода, находящегося в защищенной памяти, вызывает появление стоп-ошибки.

Функция DEP позволяет отразить целый класс атак. В частности, DEP позволяет блокировать вредоносные программы, в результате работы которых вирус помещает в процесс дополнительный код, а затем пытается выполнить этот код. В системах, поддерживающих функцию DEP, выполнение такого кода вызывает исключение.

Включение и отключение DEP в Windows

Как известно, вопрос компьютерной безопасности стоит остро уже довольно давно. Разработчики ежегодно создают всё более новые средства обеспечения безопасности, которые, к сожалению, довольно плохо соотносятся с работой рядового юзера за ноутбуком. Речь идёт о постоянных ошибках и системных конфликтах, возникающих в тех или иных утилитах как раз из-за некоторых средств защиты системы. Одним из таких является DEP. В этой статье подробно разберём, как включить или выключить DEP в Виндовс. Давайте приступим. Поехали!

При необходимости можно отключить Data Execution Prevention (DEP).

Название DEP означает Data Execution Prevention, переводя дословно получается — предотвращение выполнения данных. Суть этой функции заключается в препятствовании выполнения кода, который исполняется в неисполняемых областях памяти. Таким образом, DEP предотвращает атаку вирусного ПО по одному из направлений. Но нередко эта полезная функция только мешает юзерам, провоцируя различные ошибки во время работы определённых программ или игр.

Есть несколько способов выключения DEP. Первый (подойдёт для Windows 7 и 8.1) — выключает эту функцию для всех служб и утилит Виндовс. Сперва зайдите в режим командной строки с правами администратора, а затем пропишите следующую команду и нажмите клавишу Enter, чтобы начать выполнение:

Теперь перезагрузите ноутбук, чтобы новые настройки начали действовать. Если вам вдруг понадобится включить функцию предотвращения выполнения данных, то выполните ту же команду, только замените «Off» на «On».

Если же вы не хотите выключить DEP полностью, ставя систему под угрозу (что разумно), деактивируйте эту функцию для конкретной утилиты либо нескольких утилит, с которыми возникают проблемы. Есть два подхода к решению этой проблемы. Первый — путём изменения дополнительных параметров системы, второй — через реестр Виндовс.

Если вам больше нравится первый вариант, откройте Панель управления компьютера и выберите из меню раздел «Система» либо просто кликните правой кнопкой мыши по ярлыку «Мой компьютер» и щёлкните по пункту «Свойства».

Кликните по пункту «Дополнительные параметры системы», после чего перейдите к вкладке «Дополнительно».

Далее воспользуйтесь кнопкой «Параметры» из раздела «Быстродействие». Теперь перейдите к вкладке «Предотвращение выполнения данных» и отметьте нужный пункт в зависимости от того хотите вы активировать либо деактивировать DEP. После того как внесли изменения в настройки ОС, перезагрузите ноутбук.

Ровно то же самое можно сделать путём редактирования реестра Виндовс (для опытных пользователей). Сперва воспользуйтесь горячими клавишами Win+R, чтобы перейти к окну «Выполнить» и пропишите (без кавычек) «regedit». Попав в реестр Виндовс, откройте раздел «HKEY_LOCAL_MACHINE», а затем «SOFTWARE». Далее перейдите к папке «Windows NT». Там находится раздел «CurrentVersion», а уже в нём — «AppCompatFlags». Вы почти у цели. Находясь в «AppCompatFlags», поищите папку «Layers», если таковая отсутствует — создайте её. Теперь нужно создать так называемые строковые параметры для тех утилит, которым вы хотите выключить DEP. Названием каждого строкового параметра должен быть полный путь к exe-файлу конкретной утилиты или игры. Установите значение «DisableNXShowUI».

Готово. После внесения изменений в работу системы следует перезагрузить компьютер.

Несмотря на то что, как правило, деактивация DEP не приводит ни к каким серьёзным последствиям, следует помнить, что это важный компонент системы безопасности компьютера, который был придуман не просто так, поэтому имейте в виду, что отказ от применения этой функции остаётся на ваше усмотрение и отвечать за возможные последствия также будете только вы.

Теперь вы знаете, как происходит включение или отключение функции DEP в Windows. Как вы сами можете убедиться, здесь нет ничего трудного. Подобная проблема решается буквально за 5–10 минут. Пишите в комментариях помогла ли вам эта статья, делитесь с другими пользователями своим мнением и опытом, а также задавайте вопросы по теме, если вас что-то интересует.

Что такое предотвращение выполнения данных в Windows 10

Предотвращение выполнения данных (DEP) – это функция безопасности системного уровня, включенная в машины Windows. Основная цель DEP – контролировать процессы и услуги для защита от эксплойтов вредоносного кода путем закрытия любой программы, которая не работает должным образом в памяти.

Эта функция, также известная как защита исполняемого пространства, включает набор аппаратных и программных технологий, которые выполняют дополнительные функции. проверка системной памяти чтобы остановить запуск вредоносного кода.

Когда вредоносная программа пытается выполнить код в определенных областях системной памяти, зарезервированных для авторизованных программ и Windows, DEP отмечает их как неисполняемые и выдает ошибку.

Все это происходит так, чтобы предотвратить повреждение вашего компьютера вирусами и другими угрозами безопасности. Однако DEP может иногда конфликтовать с законными программами, такими как ваш антивирус, и в этом случае вам, возможно, придется отключить эту функцию для определенных приложений.

Как работает предотвращение выполнения данных в Windows 10

DEP не является комплексной защитой от всех эксплойтов вредоносного кода; это просто еще один инструмент, который вы можете использовать вместе со своим программным обеспечением для обеспечения безопасности своих приложений.

Во многих операционных системах есть зарезервированные области памяти, в которых выполняются важные программы и функции. Это пространство памяти ограничено, поэтому, если что-то написано неправильно или попадет вредоносный код, он может занять слишком много места, в результате чего возникнет ситуация переполнения буфера.

Когда это произойдет, он может предоставить доступ к потенциально важным данным пользователям или программам, которые не должны иметь к ним доступ.

DEP вмешивается, чтобы противодействовать такому доступу или выполнению любых исполняемых программ, которым не разрешено загружаться в области системной памяти. Эта функция немедленно вызывает исключение, когда обнаруживает загрузку подозрительного кода и предотвращает его запуск.

Обратной стороной DEP является то, что он может помечать старые программы сторонних разработчиков, которые полагаются на службы Windows. Однако вы можете отключить DEP или создать исключение в настройках вашей системы, чтобы запускать такие программы.

Примечание. Некоторые ошибки DEP вызваны устаревшими драйверами устройств в системе.

Типы предотвращения выполнения данных в Windows 10

Есть два разных метода создания DEP:

  • Аппаратный DEP
  • Программный DEP

Аппаратный DEP обнаруживает подозрительный код, который запускается из областей памяти как неисполняемый, перехватывает и создает исключение для предотвращения любых атак на систему. Единственное исключение – регион, в котором конкретно содержится исполняемый код.

Аппаратный DEP полагается на аппаратное обеспечение процессора, чтобы пометить память соответствующим набором атрибутов, указывающих, что код не должен выполняться из этой памяти.

Для использования аппаратного DEP должны быть соблюдены следующие условия:

  • Процессор вашего компьютера должен поддерживать аппаратную поддержку DEP. Фактическая аппаратная реализация DEP зависит от архитектуры процессора, например AMD и Intel, чьи Windows-совместимые архитектуры также DEP-совместимы.
  • Включите аппаратное DEP в BIOS.
  • На вашем компьютере должна быть установлена ​​Windows Server 2003 с пакетом обновления 1 или Windows XP с пакетом обновления 2.
  • Включите аппаратное DEP для программ на вашем компьютере. В 32-битных программах аппаратное DEP может быть отключено в зависимости от вашей конфигурации, но в 64-битных версиях Windows этот параметр всегда включен для 64-битных встроенных программ.

Не уверены, какая версия Windows установлена ​​на вашем компьютере? Вот 4 способа узнать, используете ли вы 32-разрядную или 64-разрядную версию Windows.

Программный DEP – это дополнительный набор проверок безопасности DEP, который помогает предотвратить использование вредоносным кодом механизмов обработки исключений в Windows.

Этот тип DEP работает на любом процессоре, поддерживающем Windows XP Service Pack 2, и защищает только ограниченную системные двоичные файлынезависимо от аппаратных возможностей DEP вашего процессора.

Как узнать, активен ли DEP на вашем ПК с Windows 10

Вы можете проверить статус DEP на вашем ПК, выполнив следующие действия:

  1. Откройте Панель управления и выберите Система и безопасность.

  1. Затем выберите Система.

  1. Введите Просмотр дополнительных настроек системы в поле поиска.

  1. Во всплывающем окне «Системные настройки» выберите «Настройки» в разделе «Производительность».

  1. Выберите вкладку Data Execution Prevention, чтобы открыть настройки DEP.

  1. Вы увидите свой текущий статус DEP в вашей системе, а также то, поддерживает ли процессор вашего компьютера аппаратное DEP.

  1. Вы также можете добавить исключения в DEP, если это необходимо, но делайте это, только если нет других альтернатив. Чтобы добавить исключения, выберите «Включить DEP для всех программ и служб, кроме выбранных мной», а затем нажмите «Добавить». Выберите исполняемый файл, который вы хотите исключить, а затем перезагрузите компьютер, чтобы изменения вступили в силу.

Примечание. Большинство конфликтов вызвано 32-битными программами, и вы не можете исключить 64-битные программы из DEP.

Как включить или отключить DEP в Windows 10

Вы можете отключить DEP в Windows 10, чтобы сделать определенные исключения или изменения для некоторых приложения для использования в Windows 10. Это не рекомендуется, но при необходимости единственный способ сделать это в настоящее время – использовать командную строку.

  1. Для начала выберите Пуск и введите CMD, чтобы открыть меню командной строки. Выберите Запуск от имени администратора, чтобы открыть командную строку с повышенными привилегиями.

  1. В окне командной строки введите эту команду: BCDEDIT / SET NX ALWAYSOFF и нажмите Enter. Изменение вступит в силу после перезагрузки компьютера. В некоторых случаях вам может потребоваться изменить настройки BIOS, чтобы отключить DEP с помощью этой команды.

Примечание. Если вы хотите отключить DEP для программы, которой доверяете, сначала проверьте, доступна ли у издателя DEP-совместимая версия или доступны обновления. Если доступна DEP-совместимая версия или обновление, установите их и оставьте DEP активным, чтобы вы могли пользоваться защитой, которую он может дать. В противном случае отключение DEP может сделать вашу систему уязвимой для атаки, которая может распространиться на другие файлы и программы.

  1. Чтобы снова включить DEP, откройте командную строку с повышенными привилегиями и введите эту команду: BCDEDIT / SET NX ALWAYSON. Перезагрузите компьютер, чтобы изменения вступили в силу.

Наслаждайтесь защитой DEP

Хотя предотвращение выполнения данных является важной функцией, не все программное и аппаратное обеспечение полностью поддерживает ее. По этой причине на вашем компьютере могут возникать определенные проблемы и сообщения об ошибках из-за конфликтов, с которыми сталкиваются некоторые процессы Windows при работе с DEP.

Однако DEP является одним из самых простых средств защиты системы на базе Windows. Если нет веской причины для его отключения, DEP всегда должен оставаться активным по умолчанию, и к нему следует относиться с осторожностью.

Предотвращение выполнения данных

Предотвращение выполнения данных (DEP) — это функция защиты памяти на уровне системы, встроенная в операционную систему, начиная с Windows XP и Windows Server 2003. Функция DEP позволяет системе помечать одну или несколько страниц памяти как не являющиеся исполняемыми. Пометка областей памяти как неисполняемых файлов означает, что код не может быть выполнен из этого региона памяти, что усложняет использование переполнения буфера.

DEP предотвращает запуск кода из страниц данных, таких как куча по умолчанию, стеки и пулы памяти. Если приложение пытается выполнить код из защищенной страницы данных, возникает исключение нарушения прав доступа к памяти, а если исключение не обрабатывается, вызывающий процесс завершается.

DEP не предназначен для обеспечения полной защиты от всех эксплойтов; Он предназначен для использования в качестве другого средства, которое можно использовать для защиты приложения.

Как работает предотвращение выполнения данных

Если приложение пытается выполнить код на защищенной странице, приложение получает исключение с _ _ нарушением прав доступа для кода состояния. Если приложение должно запускать код со страницы памяти, он должен выделить и установить соответствующие атрибуты защиты виртуальной памяти . Выделенная память должна быть помечена как _ выполнение страницы, _ _ чтение при выполнении страницы, выполнение страницы в _ _ ReadWrite или Страница _ Execute _ вритекопи при выделении памяти. Выделение кучи, выполняемое вызовом функций malloc и хеапаллок , не является исполняемым.

Приложения не могут выполнять код из кучи процесса по умолчанию или стека.

DEP настраивается при загрузке системы в соответствии с параметром политики «без выполнения» в данных конфигурации загрузки. Приложение может получить текущий параметр политики, вызвав функцию жетсистемдепполици . В зависимости от параметра политики приложение может изменить параметр DEP для текущего процесса, вызвав функцию сетпроцессдепполици .

Замечания по программированию

Приложение может использовать функцию VirtualAlloc для выделения исполняемой памяти с соответствующими параметрами защиты памяти. Рекомендуется, чтобы приложение было задано как минимум с параметром » _ выполнить защиту памяти» на странице. После создания исполняемого кода рекомендуется настроить для приложения защиту памяти, чтобы запретить доступ на запись к выделенной памяти. Приложения могут запретить доступ на запись к выделенной памяти с помощью функции VirtualProtect . Запрет доступа на запись обеспечивает максимальную защиту для исполняемых регионов адресного пространства процесса. Следует попытаться создать приложения, использующие наименьшее возможное адресное пространство исполняемого файла, что снизит объем памяти, предоставляемой для использования памяти.

Также следует попытаться управлять макетом виртуальной памяти приложения и создавать регионы исполняемых файлов. Эти регионы исполняемых файлов должны находиться в меньшем объеме памяти, чем в неисполняемых регионах. Поиск регионов исполняемых файлов под неисполняемыми областями помогает предотвратить переполнение буфера в исполняемой области памяти.

Совместимость приложений

Некоторые функциональные возможности приложения несовместимы с DEP. Приложения, выполняющие динамическое создание кода (например, JIT-создание кода) и не позволяющие явно отмечать сформированный код с разрешением EXECUTE, могут столкнуться с проблемами совместимости на компьютерах, использующих DEP. Приложения, написанные в библиотеке активных шаблонов (ATL) версии 7,1 и более ранних версий, могут попытаться выполнить код на страницах, помеченных как не являющиеся исполняемыми, что запускает NX-ошибку и завершает работу приложения. Дополнительные сведения см. в разделе сетпроцессдепполици. Большинство приложений, выполняющих действия, несовместимые с DEP, должны быть обновлены для правильной работы.

Небольшое количество исполняемых файлов и библиотек может содержать исполняемый код в разделе данных файла изображения. В некоторых случаях приложения могут размещать небольшие сегменты кода (которые обычно называются преобразователями) в разделах данных. Однако DEP помечает разделы файла изображения, которые загружаются в память как неисполняемые, если в разделе не применен атрибут Executable.

Поэтому исполняемый код в разделах данных должен быть перенесен в раздел кода, или раздел данных, содержащий исполняемый код, должен быть явно помечен как исполняемый. Атрибут Executable, image _ SCN _ mem _, должен быть добавлен в поле характеристики соответствующего заголовка раздела для разделов, содержащих исполняемый код. Дополнительные сведения о добавлении атрибутов в раздел см. в документации, входящей в состав вашего компоновщика.