¿Qué es el formato de archivo EXE?
Un archivo con la extensión .exe contiene un programa compilado y sus recursos para Microsoft Windows, DOS o (históricamente) OS/2. Los archivos .exe pueden almacenar aplicaciones, juegos, instaladores o malware. Pueden iniciarse desde la línea de comandos o mediante la interfaz gráfica de usuario (GUI) haciendo doble clic. Los archivos .exe dependen del sistema: almacenan datos en formato binario y su firma interna determina el subtipo de ejecutable.
Cada .exe comienza con la firma mágica de dos bytes MZ (hex 4D 5A) en el desplazamiento 0, llamada así por su codiseñador Mark Zbikowski. Los ejecutables modernos de Windows llevan además una firma PE\0\0 en el desplazamiento almacenado en la posición 0x3C, lo que confirma que el archivo es un Portable Executable. Existen cinco subformatos históricos principales de .exe:
MZ- Formato de 16 bits nativo de DOS.NE- Formato «New Executable» de 16 bits utilizado por Windows de 16 bits (1.x-3.x) y OS/2 1.x; no puede ejecutarse en DOS puro, pero es compatible con las capas de compatibilidad de Windows de 32 bits y OS/2.LX- Formato de 32 bits para OS/2 2.0 y versiones posteriores.LE- Formato de 16/32 bits utilizado principalmente para controladores VxD en sistemas Windows antiguos (lanzados antes del año 2000).PE- «Portable Executable», que abarca las versiones de 32 bits (PE32) y 64 bits (PE32+); introducido con Windows NT y es el formato dominante en la actualidad. Las variantes ARM y ARM64 extienden PE para dispositivos Windows en ARM.
Los archivos .exe pueden almacenar recursos como iconos, cuadros de diálogo, información de versión, audio y manifiestos de aplicación. Es importante recordar que no todos los tipos de archivos .exe pueden ejecutarse en un sistema determinado, ya que dichos archivos dependen de la plataforma. Para ejecutar un .exe en un sistema operativo diferente, se requiere una herramienta de emulación adecuada como Wine o CrossOver. Los archivos autoextraíbles también utilizan la extensión .exe, comenzando con un código inicial (stub) MZ/PE y transportando internamente una carga útil de archivo ZIP, 7z o CAB.
Los archivos .exe modernos de Windows suelen llevar una firma de código Authenticode para verificar la identidad del editor, y el sistema operativo aplica funciones de seguridad que incluyen ASLR, DEP/NX y Control Flow Guard. Las importaciones de archivos .dll se resuelven en el momento de la carga mediante el cargador PE de Windows. Los archivos .exe de fuentes desconocidas o no confiables deben manejarse con cuidado, ya que conllevan un riesgo de infección por malware si se ejecutan.
Seguridad y protección
RIESGO: HIGHEl EXE es el vector de malware número 1 en Windows: puede ejecutar cualquier código con sus privilegios, por lo que los virus, troyanos, ransomware y «cracks/keygens» suelen ser archivos EXE. Lista de verificación de seguridad: solo ejecute archivos EXE del proveedor oficial o de una tienda de confianza; antes de ejecutarlos, verifique la firma digital (clic derecho → Propiedades → Firmas digitales) - el software legítimo está firmado digitalmente y el nombre del editor coincide; sospeche mucho de los archivos EXE que lleguen por correo electrónico, chat o incluidos en descargas «gratuitas». Las advertencias de Windows SmartScreen y del antivirus sobre un EXE no reconocido deben tomarse en serio. Para inspeccionar una descarga sin ejecutarla, ábrala como un archivo comprimido en 7-Zip o analícela en VirusTotal. Tenga cuidado con las extensiones dobles como «factura.pdf.exe» y los archivos EXE disfrazados con iconos de documentos.
Detalles del formato
en pocas palabrasProgramas que abren archivos EXE
Detalles técnicos
especificación profunda| Bytes mágicos | MZ (4D 5A) en el desplazamiento 0; la firma PE PE\0\0 (50 45 00 00) aparece en el desplazamiento almacenado en el código inicial MZ en 0x3C |
| Tipo MIME | application/vnd.microsoft.portable-executable |
| Soporte de arquitectura | x86 (32 bits), x86-64/AMD64 (64 bits), ARM, ARM64; la máquina de destino está codificada en el campo Machine del encabezado de archivo COFF |
| Variantes de subformato | MZ (MS-DOS 16 bits), NE (Windows de 16 bits/OS/2 1.x), LX (OS/2 2.x 32 bits), LE (controladores VxD), PE32 (Windows de 32 bits), PE32+ (Windows de 64 bits) |
| Diseño de sección PE | Las secciones incluyen .text (código ejecutable), .data (datos inicializados), .rdata (datos de solo lectura), .rsrc (recursos) y .reloc (reubicaciones base) |
| Punto de entrada | Dirección virtual relativa (RVA) de la primera instrucción, almacenada en AddressOfEntryPoint en el encabezado opcional PE |
| Tabla de importación | Enumera las DLL y las exportaciones de funciones con nombre u ordinales que requiere el binario; resuelta por el cargador de Windows al inicio |
| Tabla de exportación | Expone opcionalmente funciones o símbolos de datos para su uso por otros ejecutables o DLL; presente principalmente en DLL pero ocasionalmente en EXE |
| Sección de recursos (.rsrc) | Incrusta iconos, mapas de bits, cuadros de diálogo, tablas de cadenas, información de versión y manifiestos de aplicación en un árbol tipado, con nombre y etiqueta de idioma |
| Firma de código | Firma digital Authenticode (PKCS#7/CMS) almacenada en el Directorio de Seguridad; validada por Windows SmartScreen, UAC y el kernel en el momento de la carga del controlador |
| Mitigaciones de seguridad | Los indicadores DllCharacteristics en el encabezado opcional habilitan ASLR, DEP/NX, Control Flow Guard (CFG), SafeSEH y High-Entropy VA para binarios de 64 bits |
| Suma de comprobación PE | Campo CheckSum de cuatro bytes en el encabezado opcional; aplicado por el cargador de Windows para controladores en modo kernel y archivos del sistema |
| Tipos de subsistema | GUI de Windows, consola de Windows (CUI), nativo (modo kernel), aplicación EFI, controlador de servicio de arranque EFI, controlador de tiempo de ejecución EFI |
| Uso de archivo autoextraíble | Los paquetes SFX incrustan una carga útil ZIP, 7z o CAB después del código inicial PE; el archivo se ejecuta como un ejecutable normal y se despaqueta automáticamente |
| Lanzado | 1985 (MS-DOS MZ); PE format since Windows NT 3.1, 1993 |
| Especificación | learn.microsoft.com |