Программный DEP (Software-enforced DEP) и аппаратный DEP (Hardware-enforced DEP) отличаются по способу реализации. 1
Программный DEP используется на компьютерах, которые не имеют поддержки неисполняемых страниц на аппаратном уровне. 1 Защита встраивается во время компиляции и работает только для системных библиотек и пересобранных с поддержкой DEP сторонних приложений. 1 Программный DEP обладает ограниченной функциональностью и может защитить только ограниченные системные двоичные файлы. 3
Аппаратный DEP используется, когда аппаратное обеспечение поддерживает неисполняемые страницы памяти. 1 Он помечает все ячейки памяти как неисполняемые, если только в этой ячейке явно не содержится исполняемый код. 3 Аппаратная реализация DEP зависит от архитектуры процессора, но все процессоры, поддерживающие «защиту от выполнения», могут применять аппаратную DEP для защиты от вредоносных эксплойтов. 3
Таким образом, аппаратный DEP обеспечивает более широкий уровень защиты, так как он затрудняет использование большинства методов атаки, в то время как программный DEP имеет ограниченные возможности и может защищать только определённые области системы. 13