Introduction
L'extension de fichiers «.EXE» et un format de fichier exécutable ayant fait sous apparition à partir du PC DOS 2.0/MS DOS 2.0.
Spécification
Spécification | Description |
---|---|
Type | Exécutable |
Auteur | Mark Zbikowski |
Format du fichiers
Qu'est-ce que c'est l'entête MZ?
Il s'agit d'une entête originaire du système d'exploitation PC DOS 2.0/MS-DOS 2.0 et étant à la base de tous les formats d'exécutable PC grand public (DOS, OS/2, Windows, eComStation, ReactOS). 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.
Structure d'entête
Voici la significations des différentes informations contenu dans le tableau :
- Déplacement (Hex) : Le déplacement 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. Les anglais appel le déplacement Offset.
- Taille : Indique la taille du champ dans l'entête de l'exécutable.
- Description : Description du déplacement courant.
- Valeur de démarrage (Hex) : Valeur de démarrage recommendé dans un fichier exécutable vide.
- Headersize : Taille de l'entête.
Taille | Type de valeurs |
---|---|
Octet | Une valeur situé entre 0 et 255 |
Mot | Une valeur situé entre 0 et 65535 (2 octets = 256 x 256 = 65536) |
Double mot | Une valeur situé entre 0 et 4294967295 |
4 octets | 256 x 256 x 256 x 256 = 4294967296 |
Entête MZ (Mark Zbikowski):
Déplacement (Hexadécimal) | Taille | Description |
---|---|---|
00h à 01h | 1 mot (2 octets) | Ce champ indique la signature d'un programme EXE (5A4Dh et 'MZ' (Mark Zbikowski)) |
02h à 03h | 1 mot (2 octets) | Ce champ indique la longueur du programme de format EXE en modulo 512 (MOD 512) |
04h à 05h | 1 mot (2 octets) | Ce champ indique la longueur du programme EXE en division 512 (DIV 512) |
06h à 07h | 1 mot (2 octets) | Ce champ indique le nombre d'adresses de segment à adapter |
08h à 09h | 1 mot (2 octets) | Ce champ indique la taille de l'entête en paragraphe |
0Ah à 0Bh | 1 mot (2 octets) | Ce champ indique le nombre minimal de paragraphes nécessaire en supplément |
0Ch à 0Dh | 1 mot (2 octets) | Ce champ indique le nombre maximal de paragraphes nécessaire en supplément |
0Eh à 0Fh | 1 mot (2 octets) | Ce champ indique le déplacement de chargement du module dans la pile |
10h à 11h | 1 mot (2 octets) | Ce champ indique le contenu du registre SP au lancement du programme |
12h à 13h | 1 mot (2 octets) | Ce champ indique la somme de vérification de l'en-tête du fichier exécutable |
14h à 15h | 1 mot (2 octets) | Ce champ indique le point d'entrée du programme (contenu du registre IP au lancement du programme. |
16h à 17h | 1 mot (2 octets) | Ce champ indique le déplacement de chargement de module (Début du segment de code dans le programme EXE). |
18h à 19h | 1 mot (2 octets) | Ce champ indique l'adresse de la table de relogement du programme EXE. |
1Ah à 1Bh | 1 mot (2 octets) | Ce champ indique le numéro de recouvrement (overlay) (0 pour le programme principal). |
1Ch à ... | Variable | Ce champ contient une mémoire-tampon de taille variable. |
... | Variable | Ce champ contient une adresses des adresses de segment à adapter (table de relogement). |
... | Variable | Ce champ contient le code du programme, segments de données et de pile. |
Nouveau exécutable | ||
1Ch à 1Fh | 2 mots (4 octets) | Ce champ est d'une valeur inconnue. |
20h à 21h | 1 mot (2 octets) | Ce champ permet d'indiquer les bits de comportement. |
22h à 3Bh | 26 octets | Ce champ est réservé pour des informations additionnel de comportement. |
3Ch à 3Fh | 2 mots (4 octets) | Ce champ permet d'indiquer le déplacement du nouvelle entête d'exécutable (NE, LE,...) à l'intérieur du fichier disque ou 0000h:0000h si pleinement exécutable de format MZ. |
Code source
Voici des exemples de code source d'utilitaires pour manipuler les .EXE :
Lien | Langage de programmation | Description | Projet | Syntaxe |
---|---|---|---|---|
COM2EXE.PAS | Free Pascal, Turbo Pascal | Cette commande permet de convertir un fichier «.COM» en fichier «.EXE» | DEV-COOLS | COM2EXE |
EXE2BIN.PAS | Free Pascal, Turbo Pascal | Cette commande permet de convertir un fichier EXE en binaire (COM). | Corail | EXE2BIN |
EXEHEAD.PAS | Free Pascal, Turbo Pascal | Cette commande permet d'afficher le contenu de l'entête d'un exécutable. | Corail | EXEHEAD |
EXEPACK.PAS | Free Pascal, Turbo Pascal | Ce programme permet de réduire la taille de l'entête EXE d'un programme 16 bits. | Corail | EXEPACK |
FROMEXE.PAS | Free Pascal, Turbo Pascal | Cette commande permet d'analyser un EXE. | Corail | FROMEXE |
Voir également
Index des extensions de fichier - Fichier EXE - Format NE