2009-06-05 25 views
6

Estoy trabajando en un programa que analizará un objeto PE para varios tipos de información.¿Para qué sirve la firma MZ en un archivo PE?

Sin embargo, al leer las especificaciones, no puedo averiguar por qué los bytes MZ están allí, ya que no puedo encontrar esto en la lista de tipos de máquinas que supuestamente representan estos 2 bytes.

¿Alguien puede aclarar?

Respuesta

12

La firma MZ es una firma utilizada por el formato EXE de 16 bits reubicable de MS-DOS.

La razón por la que un binario PE contiene un encabezado MZ es por compatibilidad con versiones anteriores. Si el ejecutable se ejecuta en un sistema basado en DOS, ejecutará la versión MZ (que casi siempre es solo un código auxiliar que dice que necesita ejecutar el programa en un sistema Win32).

Por supuesto, esto no es tan útil hoy en día como lo era cuando el mundo estaba pasando de DOS a lo que vendría después.

En aquel entonces había algunos programas que realmente unirían una versión de DOS y una versión de Win32 en un único archivo binario.

Y como con casi todo se trata de la historia de Windows, Raymond Chen tiene algunos artículos interesantes sobre este tema:

+4

Para obtener información histórica sobre los orígenes del encabezado MZ (iniciales de Mark Zbikowski, desarrollador de MS-DOS), es posible que desee consultar la wikipedia: http://en.wikipedia.org/wiki/DOS_executable – none

0

Es el "número mágico" del dos ejecutable. Cosas heredadas que puedes ignorar

Dos executable

2

como yo lo veo, mediante la lectura de la wikipedia articleIczelion's PE Tutorial y, es allí sólo para mantener la compatibilidad y permitir que dos o HX DOS Extender para ejecutar cierto código al lado de la cabecera MZ.

De devsource se puede encontrar más información como MZ significa Mark Zbikowski, uno de los desarrolladores de MS-DOS. Y cómo se comporta el sistema operativo y maneja los datos del encabezado MZ.

1

Mark Zbikowski poner sus iniciales en el MS- originales Formato exe de DOS Esta firma fue necesaria para distinguir los archivos .EXE del formato .COM mucho más simple en DOS.

Cada archivo PE también contiene un programa DOS de 16 bits y, por lo tanto, comienza con este encabezado .EXE. Este programa DOS normalmente imprime "Este programa requiere Microsoft Windows" o similar. No sé si los compiladores modernos todavía producen el código auxiliar de DOS, pero el estándar PE aún dice que un PE comienza con un encabezado EXE de 16 bits.

+0

Si no tiene un dos stub, no es un PE/COFF válido ya que hay un campo en el encabezado de DOS que indica dónde se inicia el encabezado PE. –

2

En los primeros días de Microsoft® Windows, el sistema operativo Windows ™ 1.x, 2.x y 3.xx no solo existía en los mismos volúmenes que Microsoft® DOS, sino que también se ejecutaba en un MS-DOS OS. No solo era posible, sino muy probable que un usuario intente ejecutar algunos de los programas de Windows® en DOS. Por lo tanto, los programadores de Microsoft® se aseguraron de que todos los programas de Windows® tuvieran un programa simple de DOS de 16 bits ubicado en la parte frontal de cada ejecutable de Windows que alertaría al usuario si estaban intentando ejecutar un programa de Windows® en DOS.Esto es todo lo que hace el programa "Stub" de DOS. resource: http://thestarman.pcministry.com/asm/debug/DOSstub.htm