Encabezados PE
Información sobre los encabezados que hay en un ejecutable de Windows
Los ejecutables y las aplicaciones son una gran parte del funcionamiento interno de Windows en un nivel superior. PE (Portable Ejecutable) define la información sobre el ejecutable y los datos almacenados. El formato PE también define la estructura de cómo se almacenan componentes de datos.
El formato PE, es una estructura general para archivos ejecutables y objetos. Los archivos PE ( Portable Executable ) y COFF ( CommonObject File Format ) conforman el formato PE .) conforman el formato PE .
Los datos PE se ven más comúnmente en el volcado hexadecimal de un archivo ejecutable, Se procederá con el volcado hexadecimal de
calc.exe
.

La estructura de los datos PE, se dividen en siete componentes:
DOS Header: Define el formato del archivo. Un sistema operativo de computadora que proporciona un sistema de archivos para operaciones como leer, escribir y borrar datos en un disco. Es un sistema operativo informático basado en comandos, orientado a líneas y no gráfico, diseñado para IBM PC. Se desarrollaron varias variaciones de DOS, como MS-DOS (Microsoft) y PC-DOS (IBM).
MZ DOS: Se puede apreciar en el volcado hexadecimal, siempre aparece en un ejecutable al principio.
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 MZ..........ÿÿ..
00000010 B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ¸.......@.......
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000030 00 00 00 00 00 00 00 00 00 00 00 00 E8 00 00 00 ............è...
00000040 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 ..º..´.Í!¸.LÍ!Th
DOS Stub: Es un programa que se ejecuta de forma predeterminada al principio del archivo y que imprime un mensaje de compatibilidad. El código auxiliar que imprime es:
This program cannot be run in DOS mode
.
00000040 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 ..º..´.Í!¸.LÍ!Th
00000050 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F is program canno
00000060 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 t be run in DOS
00000070 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00 mode....$.......
PE File Header: Proporciona información del encabezado PE del binario. Define el formato del archivo, contiene la firma y el encabezado del archivo de imagen, y otros encabezados de información. Es la sección menos legible para humanos, se puede identificar el encabezado PE en el siguiente volcado hexadecimal:
000000E0 00 00 00 00 00 00 00 00 50 45 00 00 64 86 06 00 ........PE..d†..
000000F0 10 C4 40 03 00 00 00 00 00 00 00 00 F0 00 22 00 .Ä@.........ð.".
00000100 0B 02 0E 14 00 0C 00 00 00 62 00 00 00 00 00 00 .........b......
00000110 70 18 00 00 00 10 00 00 00 00 00 40 01 00 00 00 p..........@....
00000120 00 10 00 00 00 02 00 00 0A 00 00 00 0A 00 00 00 ................
00000130 0A 00 00 00 00 00 00 00 00 B0 00 00 00 04 00 00 .........°......
00000140 63 41 01 00 02 00 60 C1 00 00 08 00 00 00 00 00 cA....`Á........
00000150 00 20 00 00 00 00 00 00 00 00 10 00 00 00 00 00 . ..............
00000160 00 10 00 00 00 00 00 00 00 00 00 00 10 00 00 00 ................
00000170 00 00 00 00 00 00 00 00 94 27 00 00 A0 00 00 00 ........”'.. ...
00000180 00 50 00 00 10 47 00 00 00 40 00 00 F0 00 00 00 .P...G...@..ð...
00000190 00 00 00 00 00 00 00 00 00 A0 00 00 2C 00 00 00 ......... ..,...
000001A0 20 23 00 00 54 00 00 00 00 00 00 00 00 00 00 00 #..T...........
000001B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000001C0 10 20 00 00 18 01 00 00 00 00 00 00 00 00 00 00 . ..............
000001D0 28 21 00 00 40 01 00 00 00 00 00 00 00 00 00 00 (!..@...........
000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Image Optional Header: Tiene un nombre engañoso y es una parte importante del PE Header.
Data Dictionaries: Son parte del encabezado opcional de la imagen. Apuntan a la estructura del directorio de datos de la imagen.
Section Table: Definirá la secciones y la información disponible en la imagen. Puede identificar la definición de cada sección de tabla en el volcado hexadecimal.
000001F0 2E 74 65 78 74 00 00 00 D0 0B 00 00 00 10 00 00 .text...Ð.......
00000200 00 0C 00 00 00 04 00 00 00 00 00 00 00 00 00 00 ................
00000210 00 00 00 00 20 00 00 60 2E 72 64 61 74 61 00 00 .... ..`.rdata..
00000220 76 0C 00 00 00 20 00 00 00 0E 00 00 00 10 00 00 v.... ..........
00000230 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 40 ............@..@
00000240 2E 64 61 74 61 00 00 00 B8 06 00 00 00 30 00 00 .data...¸....0..
00000250 00 02 00 00 00 1E 00 00 00 00 00 00 00 00 00 00 ................
00000260 00 00 00 00 40 00 00 C0 2E 70 64 61 74 61 00 00 ....@..À.pdata..
00000270 F0 00 00 00 00 40 00 00 00 02 00 00 00 20 00 00 ð....@....... ..
00000280 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 40 ............@..@
00000290 2E 72 73 72 63 00 00 00 10 47 00 00 00 50 00 00 .rsrc....G...P..
000002A0 00 48 00 00 00 22 00 00 00 00 00 00 00 00 00 00 .H..."..........
000002B0 00 00 00 00 40 00 00 40 2E 72 65 6C 6F 63 00 00 ....@..@.reloc..
000002C0 2C 00 00 00 00 A0 00 00 00 02 00 00 00 6A 00 00 ,.... .......j..
Una pequeña explicación sobre la secciones de las tablas:
Section
Purpose
.text
Contains executable code and entry point
.data
Contains initialized data (strings, variables, etc.)
.rdata or .idata
Contains imports (Windows API) and DLLs.
.reloc
Contains relocation information
.rsrc
Contains application resources (images, etc.)
.debug
Contains debug information
Última actualización