Un Exe, comment c'est fait ?
Voilà
la question que je me suis souvent posé avant de me pencher sur le
format de fichier en question. Dans la suite de cet article, je vais
tenter de faire la lumière sur ce sujet par des mots simples et des
schémas, qui je l'espère, seront compréhensible par tous.
A quoi ça sert ?
Bon,
c'est simple pour la plupart des programmeurs mais rappelons ce qu'est
un exe. Un exe avant tout, c'est un fichier, donc une suite de données
ou octets placée sur le disque dur comme n'importe quel fichier text ou
autre. Cela dit, ces données ne sont pas lisibles sous forme de lettre
ou de chiffre par nous autres être humain (bien que certains montrent
des prédispotions ;-P ). Ce type de fichier, comme son nom l'indique,
est executable. Cela signifie que la machine peut non seulement le lire
mais aussi réagir en fonction de ce qu'il y a écrit dedans. C'est une
suite de commande qui indique à la machine de faire telle ou telle
chose, et tant que toutes les commandes n'ont pas été traité (sachant
que les commandes peuvent être executer indéfiniment), il reste en
mémoire et continue d'être executer. On peut voir à partir du
TaskManager de Windows (en tapant Ctrl+Alt+Supp), tous les fichiers exe
en cours d'execution, c'est en quelque sorte tous les fichiers que la
machine est en train de lire. jusque là ... c'est plutôt clair !
Existe-t-il plusieurs types d'exe ?
Oui,
il existe plusieurs types d'executables exe, dll, ocx, sys, vxd, drv,
icl, cpl et bien d'autres encore. Pour faire simple, nous ne parlerons
que des fichiers exe et dans ces fichiers, il y a aussi des sous
catégories. La plus connue est la catégorie de platforme. C'est-à-dire
qu'il existe des exe pour les platformes DOS, Windows 16Bits, Windows
32Bits que l'on appelle respectivement MZ, LE ou NE et PE. Ces lettres
designent la signature du fichier, c'est-à-dire son espèce ou sa forme.
Nous ne traiterons dans cet article que de "l'espèce" PE (ou Portable
Executable) qui correspond aux fichiers exe que l'on trouve le plus
souvent sur les machines qui tournent sur Win9x à WinXP, par exemple
Notepad.exe (le bloc note) est un Exe PE !
De quoi est fait un exe ?
Voici
notre premier schéma d'un exe, c'est un peu comme un cv fait avec un
traitement de texte. Il comporte plusieurs parties représentant le
programme, expliquant ses connaissances, ses dependances ainsi que tout
ce dont il est capable de faire :
Au
tout debut du fichier on trouve l'entête MZ ou entête DOS, il permet la
compatibilité des programmes sous DOS, c'est lui qui affiche le fameux
message "This program can not be run in dos mode".
Vient
apres l'entête PE ou Win32, il explique au système comment executer le
programme et definit plusieurs options. Par exemple, c'est lui qui
indique au système si l'executable est un Exe ou une dll. Il explique
aussi au système quelles dll doivent être chargées au demarrage.
Puis
viennent les sections : ce sont les données qui représentent le code
machine, les tables ou les ressources comme les icones.
|
Comment le système lit mes fichiers exe ?
Voyons
maintenant comment le système utilise les fichiers exe. Lorsque vous
cliquez sur l'icone d'un programme ou lorsque celui-ci démarre, le
système commence par verrouillé le fichier en mémoire dans le but de le
lire. Il peut être executé par la machine et dispose donc de 2Go
d'espace mémoire virtuel qui vont être utilisé pour diverses raisons,
comme le mapping de dll ou pour la gestion des tableaux dynamique etc...
Le
fichier est disponible en mémoire comme on peut le voir sur le schéma,
chaque octet est à la place qu'il occupait sur le disque à part les
sections qui vont être chargées une à une. Une relocation peut être
effectuer sur certaines parties du fichier qui n'ont pas besoin d'être
lu ou qui peuvent être lu plus tard. Ce qui permet d'économiser de la
mémoire en fonction des besoins du programme.
Une fois mappée, la machine commence à lire et à executer les commandes une à une, à partir du point d'entrée du programme. Point d'entrée qui peut se trouver n'importe où dans le fichier. Ce point d'entrée est néanmoins defini dans l'entête PE. |