El formato Windows Portable Executable tiene sus propios pequeños matices, así que aquí hay una guía rápida sobre cómo funcionan.
Un Windows Portable Executable (PE) es el formato de archivo nativo de Windows para ejecutables y otros tipos de archivos binarios. El formato de archivo PE está diseñado para ser independiente de la plataforma, por lo que se puede usar en cualquier máquina con Windows ejecutando la misma versión del sistema operativo y la misma arquitectura de procesador para la que se creó el archivo compilado
Entonces, analicemos el formato de archivo de Windows PE y aprendamos sobre su estructura y componentes constituyentes.
¿Qué es un archivo ejecutable portátil de Windows?
Antes de explorar el formato ejecutable portátil de Windows, es importante aclarar los conceptos básicos. Demos un paso atrás y conozcamos el concepto subyacente de Windows PE: COFF.
Cuando compila el código fuente en un programa, el compilador genera un archivo de objeto (.obj). Este archivo objeto contiene instrucciones para la computadora en formato binario.
COFF o Common Object File Format es un conjunto estandarizado de convenciones para representar instrucciones binarias. COFF ayuda a mantener la compatibilidad entre plataformas, ya que todos los formatos de archivo COFF siguen el mismo conjunto de reglas y convenciones para organizar el código y los datos. Aunque COFF se desarrolló originalmente para su uso en sistemas *NIX, ahora es omnipresente en todas las plataformas.
El formato de archivo Windows Portable Executable (PE) es una modificación de COFF y ha sido desarrollado para ser utilizado exclusivamente en Sistemas Windows de 32 y 64 bits. A diferencia de COFF, que proporciona un formato estandarizado para archivos de objetos, Windows PE proporciona un formato estandarizado para ejecutables y archivos de biblioteca.
Contiene secciones y encabezados que brindan información sobre el ejecutable en cuestión y ayuda al cargador del sistema a administrar los datos relacionados con el ejecutable. Los encabezados de un archivo PE ayudan al cargador del sistema a asignar el archivo a la memoria, resolver dependencias como exportaciones/importaciones de API, administrar recursos y preparar el archivo para su ejecución.
Linux también tiene su propia iteración del COFF; se llama archivo de enlace ejecutable o, en resumen, binario ELF. Puede verificar si un archivo es ELF o no ejecutando el comando de archivo en Linux con el nombre de archivo como primer argumento.
La estructura de un ejecutable portátil de Windows
El formato de archivo Portable Executable consta de varios componentes, cada uno con un propósito específico. Estos componentes incluyen:
- Encabezados de sección, que describen el diseño y las características de cada sección del archivo Las propias secciones, que contienen código ejecutable, datos y recursos.
- El encabezado PE, que proporciona información sobre la estructura general y los requisitos del archivo.
- El encabezado de DOS, que incluye un pequeño programa que se ejecuta cuando el archivo se ejecuta en un sistema DOS.
- Y finalmente, los encabezados de la sección PE, que describen la ubicación y los atributos de cada sección dentro del archivo.
En general, estos componentes funcionan juntos para crear un formato estructurado que permite que el sistema operativo cargue, ejecute y administre correctamente el código ejecutable contenido en el archivo. Aprendamos exactamente lo que hace cada componente.
Encabezado de DOS
La primera parte de un archivo PE se denomina encabezado de DOS. Una pequeña cantidad de código ejecutable se almacena en el encabezado de DOS que también se puede ejecutar en una máquina de DOS.
Este código también se denomina código auxiliar de MS-DOS y se utiliza para generar un mensaje de error en los sistemas que no admiten el archivo PE.
Encabezado PE
El encabezado Portable Executable brinda información sobre el ejecutable, como qué tan grande es el archivo, dónde se encuentran las diferentes partes y qué recursos necesita el ejecutable. El encabezado PE también tiene información sobre el tipo de ejecutable, ya sea un Archivo .DLL de Windows o un .EXE.
Encabezados de sección
Las secciones se implementan para organizar los muchos componentes de un ejecutable, como código, datos y recursos, como cadenas de texto, imágenes, etc. Los encabezados de las secciones incluyen información sobre el tamaño y la ubicación de cada sección, así como las banderas asociadas.
Las banderas asociadas con cada encabezado de sección pueden indicar varios atributos de la sección, como si es ejecutable, escribible o legible. Estos indicadores ayudan al sistema operativo a cargar y administrar correctamente el contenido de cada sección durante la ejecución del programa.
Secciones
Las secciones mismas comprenden el código real, los datos y los recursos del ejecutable. Cada segmento está alineado con un cierto límite de memoria y tiene su propio conjunto de atributos que afectan la forma en que el sistema operativo lo maneja.
Ahora ya sabe todo sobre el formato de archivo ejecutable portátil de Windows
Windows Portable Executable es un formato de archivo robusto y versátil que se utiliza para producir una amplia variedad de aplicaciones y componentes del sistema de Windows. Al comprender la estructura del formato de archivo PE, los desarrolladores pueden crear aplicaciones eficientes que aprovechan las características distintivas de Windows.
Además de obtener una comprensión profunda de la plataforma en la que se ejecutará su aplicación, siguiendo algunos buenos estándares prácticas de codificación, podrá maximizar la calidad de la aplicación independientemente de la plataforma en la que se ejecute en.