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