Section courante

A propos

Section administrative du site

Qu'est-ce que c'est l'entête MZ?

Il s'agit d'une entête originaire du DOS 2.0 et étant à la base de tous les formats d'exécutable PC grand public (DOS, OS/2, Windows, eComStation). Il s'agit de tous premiers octets d'un fichier de format «.EXE», il n'existe aucun autre format de données avant lui en principe, mais certains programmes tiers DOS, comme les recouvrements (Overlay) de Central-Point semblent les utilisés ailleurs.

Descriptions

Offset (Hex) = L'offset dans le fichier, il s'agit d'un déplacement à effectuer par rapport à son entête. Les valeurs utilisées sont 0 à 9, ensuite de A à F.

Taille = Type de valeurs.
1. Octet = Une valeur situé entre 0 et 255
2. Mot = Une valeur situé entre 0 et 65535 (2 octets = 256 x 256 = 65536)
3. Double Mot = Une valeur situé entre 0 et 4294967295
(4 octets = 256 x 256 x 256 x 256 = 4294967296)

Description = Description de l'offset courant.

Valeur de démarrage (Hex) = Valeur de démarrage recommendé  dans un fichier exécutable vide.

Headersize = Taille de l'entête.

Entête MZ (Mark Zbikowski):

Offset (Hexadécimal) Taille Description
00h à 01h 1 mot (2 octets) Ce champs indique la signature d'un programme EXE (5A4Dh et 'MZ' (Mark Zbikowski))
02h à 03h 1 mot (2 octets) Ce champs indique la longueur du programme de format EXE en modulo 512 (MOD 512)
04h à 05h 1 mot (2 octets) Ce champs indique la longueur du programme EXE en division 512 (DIV 512)
06h à 07h 1 mot (2 octets) Ce champs indique le nombre d'adresses de segment à adapter
08h à 09h 1 mot (2 octets) Ce champs indique la taille de l'entête en paragraphe
0Ah à 0Bh 1 mot (2 octets) Ce champs indique le nombre minimal de paragraphes nécessaire en supplément
0Ch à 0Dh 1 mot (2 octets) Ce champs indique le nombre maximal de paragraphes nécessaire en supplément
0Eh à 0Fh 1 mot (2 octets) Ce champs indique l'offset de chargement du module dans la pile
10h à 11h 1 mot (2 octets) Ce champs indique le contenu du registre SP au lancement du programme
12h à 13h 1 mot (2 octets) Ce champs indique la somme de vérification de l'en-tête du fichier exécutable
14h à 15h 1 mot (2 octets) Ce champs indique le point d'entrée du programme (contenu du registre IP au lancement du programme.
16h à 17h 1 mot (2 octets) Ce champs indique l'offset de chargement de module (Début du segment de code dans le programme EXE).
18h à 19h 1 mot (2 octets) Ce champs indique l'adresse de la table de relogement du programme EXE.
1Ah à 1Bh 1 mot (2 octets) Ce champs indique le numéro de recouvrement (overlay) (0 pour le programme principal).
1Ch à ... Variable Ce champs contient une mémoire-tampon de taille variable.
... Variable Ce champs contient une adresses des adresses de segment à adapter (table de relogement).
... Variable Ce champs contient le code du programme, segments de données et de pile.
Nouveau exécutable
1Ch à 1Fh 2 mots (4 octets) Ce champs est d'une valeur inconnue.
20h à 21h 1 mot (2 octets) Ce champs permet d'indiquer les bits de comportement.
22h à 3Bh 26 octets Ce champs est réservé pour des informations additionnel de comportement.
3Ch à 3Fh 2 mots (4 octets) Ce champs permet d'indiquer l'offset du nouvelle entête d'exécutable (NE, LE,...) à l'intérieur du fichier disque ou 0000h:0000h si plainement exécutable de format MZ.


Dernière mise à jour : Mardi, le 24 juin 2014