26/05/2016
Es una situación frustrante y bastante común: estás trabajando o jugando, y de repente, una aplicación se cierra sin previo aviso. No hay mensajes de error, ni ventanas emergentes, simplemente desaparece. Una de las causas menos conocidas pero frecuentes de este comportamiento es una característica de seguridad integrada en Windows llamada Prevención de Ejecución de Datos, o DEP (por sus siglas en inglés, Data Execution Prevention). Aunque su nombre suene muy técnico, su función es vital para la seguridad de tu sistema. En este artículo, desglosaremos en profundidad qué es DEP, cómo funciona para protegerte de software malicioso y, lo más importante, cómo puedes gestionarlo y desactivarlo para un programa específico que esté causando conflictos.

¿Qué es Exactamente la Prevención de Ejecución de Datos (DEP)?
La Prevención de Ejecución de Datos es una característica de seguridad a nivel de sistema que Microsoft introdujo a partir de Windows XP Service Pack 2 y Windows Server 2003. Su objetivo principal es proteger tu ordenador contra daños causados por virus y otras amenazas de seguridad. ¿Cómo lo logra? Mediante un mecanismo inteligente de protección de la memoria.
En términos sencillos, DEP vigila la memoria RAM de tu sistema y la divide en dos categorías: áreas donde el código de los programas puede ejecutarse y áreas donde solo se deben almacenar datos. La función de DEP es asegurarse de que no se ejecute código desde las áreas de memoria designadas exclusivamente para datos. Esto es crucial porque una de las técnicas más antiguas y efectivas utilizadas por los hackers es el ataque de "desbordamiento de búfer" (buffer overrun). En este tipo de ataque, un programa malicioso introduce un exceso de datos en un área de memoria, haciendo que esos datos se "derramen" y escriban código malicioso en una ubicación de memoria que no debería contenerlo, para luego intentar ejecutarlo. DEP detiene este proceso en seco, marcando esas áreas de memoria como no ejecutables.
El Mecanismo Interno: ¿Cómo Funciona DEP?
Para entender cómo opera DEP, imaginemos que la memoria de tu PC es un gran edificio de oficinas. Hay pisos designados para trabajar (ejecutar código) y otros pisos designados como almacenes (guardar datos). DEP actúa como el guardia de seguridad del edificio. Si detecta que alguien intenta montar una oficina y empezar a trabajar en un piso de almacén, inmediatamente detiene la actividad.
Técnicamente, DEP marca una o más páginas de memoria como "no ejecutables". Las áreas de memoria como el montón (heap) predeterminado, las pilas (stacks) y los grupos de memoria, que son utilizados por las aplicaciones para almacenar datos temporales, son protegidas por defecto. Si una aplicación, ya sea por un error de programación o por la acción de un malware, intenta ejecutar instrucciones desde una de estas páginas de memoria protegidas, el procesador genera una excepción de violación de acceso a la memoria (con el código de estado STATUS_ACCESS_VIOLATION). Si esta excepción no es gestionada correctamente por la aplicación (y en la mayoría de los casos no lo es), el sistema operativo interviene y finaliza el proceso de forma inmediata. Este es el motivo por el cual un programa puede cerrarse súbitamente sin un mensaje de error visible para el usuario.
Es importante destacar que DEP no es una defensa infalible contra todos los tipos de exploits, pero es una capa de protección increíblemente eficaz que dificulta enormemente la explotación de vulnerabilidades comunes.
Tipos de DEP: Hardware vs. Software
Existen dos implementaciones principales de DEP, y la que utiliza tu sistema depende del hardware de tu procesador.
| Tipo de DEP | Descripción | Efectividad |
|---|---|---|
| DEP por Hardware | Utiliza una característica del procesador (conocida como bit NX - No eXecute en AMD, o bit XD - eXecute Disable en Intel) para marcar páginas de memoria como no ejecutables. Prácticamente todos los procesadores modernos la soportan. | Muy alta. La protección se aplica a nivel de hardware, siendo más rápida y robusta. |
| DEP por Software | Es una protección más limitada que se implementa a través del sistema operativo en CPUs que no soportan DEP por hardware. Es mucho menos común hoy en día. | Moderada. Ofrece una capa de protección, pero es menos completa que la versión por hardware. |
Guía Paso a Paso: Cómo Desactivar DEP para un Programa Específico
Si tienes la certeza de que un programa legítimo (especialmente software antiguo o herramientas de desarrollo específicas) está siendo cerrado por DEP, puedes añadirlo a una lista de excepciones. ¡Atención! Solo debes hacer esto con programas en los que confíes plenamente, ya que estarás eliminando una capa de protección para esa aplicación en concreto. Nunca desactives DEP para todo el sistema.

- Abrir las Propiedades del Sistema: La forma más rápida de llegar es presionar la tecla de
Windows + Rpara abrir el cuadro de diálogo "Ejecutar". Escribesysdm.cply presiona Enter. - Acceder a la Configuración de Rendimiento: En la ventana de "Propiedades del sistema", ve a la pestaña "Opciones avanzadas". En la sección "Rendimiento", haz clic en el botón "Configuración...".
- Ir a la Pestaña de DEP: Se abrirá la ventana de "Opciones de rendimiento". Busca y haz clic en la pestaña llamada "Prevención de ejecución de datos".
- Seleccionar la Política de DEP: Aquí verás dos opciones. La opción predeterminada suele ser "Activar DEP solo para los programas y servicios esenciales de Windows". Para crear una excepción, debes seleccionar la segunda opción: "Activar DEP para todos los programas y servicios excepto los que yo seleccione".
- Añadir el Programa a la Lista de Excepciones: Una vez seleccionada la segunda opción, el botón "Agregar..." se habilitará. Haz clic en él.
- Buscar el Archivo Ejecutable: Se abrirá un explorador de archivos. Navega hasta la carpeta donde está instalado el programa que te da problemas y selecciona su archivo ejecutable (el archivo
.exe). Por ejemplo, si fuera un juego, podrías buscarlo enC:\Archivos de programa\NombreDelJuego\juego.exe. - Aplicar los Cambios: Una vez añadido el programa a la lista, haz clic en "Aplicar" y luego en "Aceptar". Es muy probable que el sistema te pida reiniciar el ordenador para que los cambios surtan efecto.
Después de reiniciar, DEP seguirá activo para todo tu sistema, pero ignorará la aplicación que has añadido a la lista, permitiéndole funcionar sin interrupciones.
Compatibilidad y Consideraciones para Desarrolladores
¿Por qué algunas aplicaciones son incompatibles con DEP? Generalmente, se debe a prácticas de programación antiguas o especializadas. Las aplicaciones que realizan generación dinámica de código (como los compiladores Just-In-Time o JIT) y no marcan explícitamente el código generado con permiso de ejecución pueden tener problemas. Del mismo modo, aplicaciones escritas con versiones antiguas de ciertas librerías (como Active Template Library - ATL 7.1 o anterior) pueden intentar ejecutar código en páginas marcadas como no ejecutables, lo que provoca que DEP las cierre.
Para los desarrolladores, la solución no es pedir a los usuarios que desactiven DEP, sino adaptar el código. Esto implica:
- Utilizar funciones como
VirtualAllocpara asignar memoria con los atributos de protección adecuados (por ejemplo,PAGE_EXECUTE_READWRITE). - Una vez que el código ha sido escrito en esa memoria, usar
VirtualProtectpara cambiar los permisos y eliminar el acceso de escritura, aumentando la seguridad. - Migrar cualquier código ejecutable que resida en secciones de datos a una sección de código propiamente dicha.
Preguntas Frecuentes (FAQ) sobre DEP
¿Es seguro desactivar completamente la Prevención de Ejecución de Datos?
No, no es recomendable. Desactivar DEP para todo el sistema operativo te deja vulnerable a una amplia gama de ataques de malware. La práctica correcta es mantenerlo activado y solo añadir excepciones para programas específicos y de confianza que lo requieran para funcionar.
¿Desactivar DEP mejorará el rendimiento de mi PC?
No. El impacto de DEP en el rendimiento del sistema es prácticamente nulo, especialmente con el DEP por hardware que utilizan los procesadores modernos. Su función es exclusivamente de seguridad.
¿Cómo puedo saber si un programa se cerró realmente por culpa de DEP?
La mejor herramienta para investigarlo es el "Visor de Eventos" de Windows. Búscalo en el menú Inicio, y una vez abierto, navega a "Registros de Windows" -> "Aplicación". Busca errores críticos (marcados con un icono rojo) que coincidan con la hora en que se cerró el programa. A menudo, los detalles del error mencionarán un código de excepción 0xc0000005, que indica una violación de acceso, una señal clara de la intervención de DEP.
¿Mi ordenador es compatible con DEP por hardware?
Si tu ordenador fue fabricado en la última década, la respuesta es casi con toda seguridad sí. Prácticamente todos los procesadores de Intel (con su tecnología XD bit) y AMD (con su tecnología NX bit) desde mediados de la década de 2000 soportan DEP por hardware.
Si quieres conocer otros artículos parecidos a Prevención de Ejecución de Datos (DEP): Guía Completa puedes visitar la categoría Juegos.
