El hardware DEP aprovecha el NX ("No Ejecutar protección de página",
Especificación de AMD) o bit XD ("Desactivación de ejecución", especificación de Intel)
en las CPU compatibles con DEP, y marcará ciertas partes de la memoria
(que solo debe contener datos, como el montón predeterminado, la pila,
agrupaciones de memoria) como no ejecutables.
Cuando se intenta ejecutar un código a partir de datos protegidos por DEP
página, una infracción de acceso (STATUS_ACCESS_VIOLATION (0xc0000005)) será
ocurrir. En la mayoría de los casos, esto resultará en la terminación del proceso
(Excepción no controlada). Como resultado de esto, cuando un desarrollador decidió
quiere permitir que el código se ejecute desde una página de memoria determinada, tendrá
para asignar la memoria y marcarla como ejecutable.
enlace
Cuando intenta redirigir el flujo de código a través de un exploit de desbordamiento de búfer, etc. desea redirigir el flujo a un shellcode / payload personalizado que le dará acceso remoto, etc. a la computadora víctima.
Lo hacemos reescribiendo registros como EIP (Extended Instruction Pointer), ESP (Extended Stack Pointer), etc. Con esta tecnología intentamos evitar el redireccionamiento del flujo de código a ubicaciones de memoria no autorizadas. Por lo tanto, para invocar el shell, deberíamos superar la violación de acceso en teoría.
Esencialmente, los programadores tienen que especificar ubicaciones de memoria que pueden tener código ejecutable, las otras ubicaciones tienen datos no ejecutables al invocar, lo que provoca una excepción de infracción de acceso.
Lea más sobre sus aspectos técnicos aquí: enlace