Приветствую, коллеги! На связи "T.E.X.H.O Windows & Linux". Сегодня у нас тема, от которой у одних сводит олдскулы, а у других — системы уходят в BSOD. Мы разбираем DEP (Data Execution Prevention) в контексте актуальной на ноябрь 2025 года версии Windows 11 25H2.
Давайте сразу проясним контекст. Windows 11 25H2 (сборка на базе платформы 24H2 с пакетом активации) принесла нам не только «AI-assisted secure coding» и косметику в Проводнике, но и закрутила гайки в подсистеме безопасности. Если в Windows 7 отключение DEP было делом двух кликов, то в современной экосистеме с VBS (Virtualization-based Security), HVCI (Memory Integrity) и Secure Boot, простого тумблера "ВЫКЛ" недостаточно. Система будет сопротивляться, защищая вас от самих себя (и от переполнения буфера, конечно).
В этой статье мы не просто дернем рубильник. Мы разберем физику процесса: как NX-бит работает на уровне кремния, почему bcdedit выдает ошибку про Secure Boot и как грамотно настроить исключения, чтобы ваш легаси-софт 2010 года заработал, не превращая рабочую станцию в проходной двор для эксплойтов.
⚠️ Важно: Материал предназначен для системных администраторов, разработчиков и инженеров. Отключение DEP снижает уровень защищенности ОС. Применяйте инструкции только в изолированных средах или для отладки специфического ПО.
Механика: Что такое DEP под капотом?
Чтобы понять, как ломать, нужно понять, как работает. DEP — это не просто галочка в меню. Это аппаратно-программный комплекс.
1. Аппаратный уровень (Hardware DEP)
В основе лежит бит NX (No-Execute) на процессорах AMD или XD (Execute Disable) на Intel. Представьте оперативную память как здание. Некоторые комнаты (адреса) отведены под "жильцов" (данные), а другие — под "инструкции персонала" (исполняемый код).
В норме процессор никогда не должен выполнять инструкции из комнат с данными. Но при ошибках кода (или атаках типа buffer overflow) программа может попытаться запустить вредоносный код, спрятанный в куче (heap) или стеке (stack).
DEP помечает страницы памяти атрибутом "только данные". Если процессор видит попытку исполнения кода с такой страницы, он генерирует исключение STATUS_ACCESS_VIOLATION (0xC0000005), и приложение крашится. Лучше упасть, чем быть взломанным.
2. Программный уровень (Software DEP)
Если процессор древний (что в 2025 году редкость) и не поддерживает NX-бит, Windows использует программную эмуляцию, защищая механизм обработки исключений (SafeSEH). Но в Windows 11 25H2 мы говорим почти исключительно об аппаратном DEP.
3. Режимы работы
Windows поддерживает четыре режима, которые мы будем менять:
- OptIn (По умолчанию для клиентских ОС): DEP включен только для системных процессов и драйверов. Пользовательский софт (если он 32-битный) не защищен, если сам того не попросит.
- OptOut (По умолчанию для Server): DEP включен для всех, кроме тех, кто явно внесен в список исключений.
- AlwaysOn: Жесткое включение. Исключения игнорируются.
- AlwaysOff: Полное отключение. Именно это нам и нужно для тестов.
🔖Дорогие гости и подписчики канала. Если наши материалы приносят вам пользу, вы всегда можете поддержать команду символическим переводом. Любая помощь мотивирует писать для Вас больше полезного и качественного контента безо всяких подписок.🙏🤝🙏🤝🙏
💰ПОДДЕРЖАТЬ КАНАЛ МОЖНО ТУТ ( ОТ 50 РУБЛЕЙ )💰
Или сделать любой перевод по QR-коду через СБП. Быстро, безопасно и без комиссии.(Александр Г.)
С уважением, Команда "Т.Е.Х.Н.О Windows & Linux".
Подготовка: Почему старые методы не работают?
Прежде чем лезть в консоль, нужно устранить "блокаторы". В Windows 11 25H2 их два:
Блокатор №1: Secure Boot
Если вы попробуете ввести команду отключения DEP в современной системе, вы получите ошибку:
"The value is protected by Secure Boot policy and cannot be modified or deleted".
Windows защищает загрузчик (BCD) от изменений, если активна безопасная загрузка. Логика Microsoft проста: если зловред отключит DEP на этапе загрузки, ядро будет скомпрометировано до старта антивируса.
Блокатор №2: Core Isolation (Memory Integrity)
Функция Целостность памяти (HVCI) использует виртуализацию для изоляции критических процессов. Она жестко требует включенного DEP в режиме ядра. Попытка отключить DEP при включенном HVCI либо не сработает, либо приведет к бутлупу (циклической перезагрузке).
Пошаговая инструкция: Как отключить DEP
Мы пойдем от "скальпеля" (точечное отключение) к "кувалде" (полное отключение).
Метод 1: "Скальпель" — Настройка исключений (Рекомендуемый)
Если у вас падает конкретная игра или старая бухгалтерская программа, не отключайте DEP глобально.
- Нажмите Win + S, введите Exploit Protection (Защита от эксплойтов).
- Перейдите на вкладку Program settings (Программные настройки).
- Нажмите + Add program to customize (Добавить программу).
- Choose exact file path: Выберите .exe файл вашего приложения.
- В открывшемся окне найдите пункт Data Execution Prevention (DEP).
- Поставьте галочку Override system settings (Переопределить системные настройки).
- Переключите ползунок в положение Off (Откл).
- Нажмите Apply. Перезагрузка не требуется, просто перезапустите приложение.
Важное замечание: Для 64-битных приложений этот метод может не сработать, так как для x64 процессов атрибут NX_COMPAT часто вшит при компиляции, и Windows 11 25H2 игнорирует попытки отключения через GUI для таких бинарников.
Метод 2: "Кувалда" — Глобальное отключение через BCDEDIT
Это тот самый метод для разработчиков драйверов и отладки ядра.
Шаг 1: Отключение Core Isolation
- Откройте Windows Security -> Device Security -> Core isolation details.
- Выключите Memory Integrity (Целостность памяти).
- Перезагрузите ПК. Это обязательно.
Шаг 2: Отключение Secure Boot (Через BIOS/UEFI)
- Перезагрузитесь в UEFI (через Shift + Перезагрузка -> Troubleshoot -> UEFI Firmware Settings).
- Найдите раздел Boot или Security.
- Переключите Secure Boot в Disabled или OS Type в Other OS.
- Сохранитесь (F10) и загрузитесь в Windows.
- Примечание: После этого в правом нижнем углу может появиться водяной знак "Secure Boot isn't configured", это нормально.
Шаг 3: Магия командной строки
- Запустите CMD или PowerShell от имени Администратора.
- Введите команду для проверки текущего статуса:
- bcdedit /enum
- Ищите строку nx. Скорее всего, там OptIn.
- Вводим команду отключения:
- bcdedit /set {current} nx AlwaysOff
- Если вы не отключили Secure Boot, именно здесь вы получите ошибку "protected by Secure Boot policy".
- Если команда прошла успешно ("The operation completed successfully"), перезагрузите компьютер.
Как включить обратно?
Для возврата защиты введите:
bcdedit /set {current} nx OptIn
Затем включите Secure Boot и Memory Integrity.
Канал «Каморка Программиста» — это простые разборы программирования, языков, фреймворков и веб-дизайна. Всё для новичков и практиков.
Присоединяйся прямо сейчас.
Практические советы и диагностика
Как убедиться, что DEP действительно выключен?
Не верьте GUI, он может врать. Используем "железные" методы проверки.
Способ А: WMI (PowerShell)
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -ExpandProperty DataExecutionPrevention_SupportPolicy
Коды возврата:
- 0 = AlwaysOff (То, что нам нужно)
- 1 = AlwaysOn
- 2 = OptIn
- 3 = OptOut
Способ Б: Python скрипт
Если вы пишете на Python, вот сниппет для проверки флагов процесса (использует легальный ctypes):
import ctypes
# Константы WinAPI
PROCESS_DEP_ENABLE = 1
def check_dep():
# Получаем текущий процесс
h_process = ctypes.windll.kernel32.GetCurrentProcess()
flags = ctypes.c_ulong()
permanent = ctypes.c_int()
try:
# GetProcessDEPPolicy доступна начиная с Vista SP1
success = ctypes.windll.kernel32.GetProcessDEPPolicy(
h_process, ctypes.byref(flags), ctypes.byref(permanent)
)
if success:
is_enabled = flags.value & PROCESS_DEP_ENABLE
print(f"DEP Статус для процесса: {'ВКЛЮЧЕН' if is_enabled else 'ВЫКЛЮЧЕН'}")
print(f"Перманентный флаг: {permanent.value}")
else:
print("Не удалось получить политику DEP")
except Exception as e:
print(f"Ошибка: {e}")
if __name__ == "__main__":
check_dep()
Типичные ошибки
- Ошибка: Приложение все равно падает с кодом 0xC0000005.
- Диагноз: Это не всегда DEP. Это может быть реальное нарушение доступа к памяти (Access Violation), не связанное с исполнением кода. Например, чтение по NULL указателю. Отключение DEP тут не поможет.
- Ошибка: Windows перестала загружаться (BSOD при старте).
- Диагноз: Конфликт с драйвером, требующим NX.
- Решение: Загрузитесь в Safe Mode. В безопасном режиме можно выполнить bcdedit /set {current} nx OptIn.
Чек-лист перед внедрением 📋
Перед тем как вводить AlwaysOff, проверьте себя по пунктам:
- Бэкап: Есть точка восстановления системы?
- Цель: Вы точно пробовали добавить исключение для конкретного .exe файла (Метод 1)?
- Secure Boot: Вы готовы временно отключить безопасную загрузку (что может сломать BitLocker, если не приостановить защиту)?
- Лайфхак: Если используете BitLocker, обязательно нажмите "Suspend Protection" в панели управления BitLocker перед ковырянием BIOS, иначе придется искать ключ восстановления.
- Core Isolation: Целостность памяти отключена?
- Среда: Это не продуктивный сервер, торчащий в интернет RDP-портом?
Вывод
В Windows 11 25H2 Microsoft продолжает курс на "Security by Default". Отключение DEP стало сложнее из-за тесной интеграции с Secure Boot и виртуализацией. Глобальное отключение через AlwaysOff — это крайняя мера, допустимая только для отладки драйверов или запуска совсем уж древнего промышленного софта.
В 99% случаев вам хватит добавления исключения через Exploit Protection. Если же вы идете путем самурая через bcdedit, не забудьте про Secure Boot и BitLocker.
Берегите свои буферы от переполнения! 🚀
Подписывайтесь на канал, чтобы не пропустить гайды по настройке Linux-ядра и разбор полетов новых апдейтов.
#Windows11 #25H2 #DEP #SystemAdmin #DevOps #InformationSecurity #WindowsTricks #Bcdedit #SecureBoot #CoreIsolation #TechGuide #SysAdminLife #LegacySoftware #Troubleshooting #WindowsSecurity #ExploitProtection #NXbit #PowerShell #Cmd #Debugging #BufferOverflow #CyberSec #Microsoft #ITCommunity #TechTips #WindowsOptimization #AdminTools #SoftwareCompatibility #SystemTweaks #RussianIT