El Formato PE, Parte 1

Empecemos...
1. Introducción al Formato PE
El
formato de archivo ejecutable de un sistema operativo es en cierto modo
un reflejo del propio sistema operativo. Aunque el estudio de un
formato de archivo ejecutable no se tiene muy en cuenta entre la mayoria
de programadores, se trata de algo importante para comprender con mas
profundidad como funciona el sistema operativo.

Un aspecto muy útil de los archivos PE es que las estructuras de datos
en disco son las mismas estructuras de datos utilizadas en memoria.
Cargar un ejecutable en memoria (por ejemplo llamando a LoadLibrary) es
principalmente una cuestión de asignación de ciertos rangos de un
archivo PE en el espacio de direcciones en memoria. Por lo tanto una
estructura de datos como IMAGE_NT_HEADERS és identica tanto en disco
como en memoria.
Es importante tener en cuenta que los archivos PE no són unicamente mapeados en memoria en bloque de forma monolitica. En lugar de eso el Loader de Windows busca en el archivo y decide que porciones deben ser mapeadas en memoria. Este modo de mapear los archivos mapea los offsets mas altos del archivo en disco de modo que se correspondan con las direcciones mas altas en memoria. El offset de un elemento de un archivo en disco puede diferir del offsets una vez cargado en memoria. Sin embargo, toda la información está presente para permitir hacer una traducción del offset en disco al offset en memoria.
Es importante tener en cuenta que los archivos PE no són unicamente mapeados en memoria en bloque de forma monolitica. En lugar de eso el Loader de Windows busca en el archivo y decide que porciones deben ser mapeadas en memoria. Este modo de mapear los archivos mapea los offsets mas altos del archivo en disco de modo que se correspondan con las direcciones mas altas en memoria. El offset de un elemento de un archivo en disco puede diferir del offsets una vez cargado en memoria. Sin embargo, toda la información está presente para permitir hacer una traducción del offset en disco al offset en memoria.