* PE (ejecutable portátil) Encabezado: Esta es la parte más crucial. Proporciona metadatos sobre el archivo, como:
* Firma de archivo: Lo identifica como un archivo PE.
* Arquitectura: Especifica el procesador (por ejemplo, x86, x64, brazo).
* Punto de entrada: La dirección donde comienza la ejecución del programa.
* Tabla de sección: Una tabla que describe las diferentes secciones dentro del archivo.
* Tabla de importación: Enumera bibliotecas externas o DLL de las que depende el programa.
* Tabla de exportación: (Si corresponde) Listas de listas que el programa pone a disposición de otros programas.
* Secciones: Estos son bloques de código y datos. Las secciones comunes incluyen:
* .Text: Contiene las instrucciones del código de máquina del programa.
* .data: Contiene variables globales y estáticas inicializadas.
* .rdata: Contiene datos de solo lectura, como constantes de cadena.
* .bss: Contiene variables globales y estáticas no inicializadas (típicamente asignadas en tiempo de ejecución).
* .reloc: Contiene información de reubicación, utilizada para ajustar las direcciones cuando el programa se carga en la memoria.
* Recursos: Estos son datos no ejecutables como imágenes, iconos, sonidos y otros activos utilizados por el programa.
En esencia, el archivo EXE es un paquete que contiene todo lo que el sistema operativo necesita cargar y ejecutar el programa en la memoria. El cargador del sistema operativo utiliza la información en el encabezado PE para cargar correctamente las diversas secciones en la memoria, resolver dependencias e iniciar la ejecución en el punto de entrada designado. El código dentro de la sección `.Text` es ejecutado por el procesador.