| FazBrowse Wikipedia Viewer | Main Page | | |
| Viewing: https://fr.wikipedia.org/wiki/Portable_Executable |
Cet article est une ébauche concernant l’informatique et un logiciel.
Cet article ne cite pas suffisamment ses sources (février 2013).
Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».
En pratique : Quelles sources sont attendues ? Comment ajouter mes sources ?| Extension |
.cpl, .exe, .dll, .ocx, .sys, .scr, .drv, .efi |
|---|---|
| Type MIME | |
| Type de format | |
| Basé sur |
modifier - modifier le code - modifier WikidataPortable Executable (en français "exécutable portable") est un format de fichiers dérivé du COFF regroupant les exécutables et les bibliothèques sur les systèmes d'exploitation Windows 32 bits et 64 bits.
Les extensions couvertes par ce format sont : l'extension .exe, l'extension .ocx (OLE et ActiveX), l'extension .dll et l'extension .cpl.
C'est également le format utilisé pour les exécutables de l'UEFI (.efi).
Portable Executable est souvent abrégé par PE.
(en) http://msdn.microsoft.com/en-us/library/windows/desktop/ms680339%28v=vs.85%29.aspx pour plus de détailsLa première chose à savoir est que l'exécutable est chargé en mémoire à l'adresse ImageBase (présent dans OptionalHeader) si cette adresse est disponible. Sinon il est chargé à une autre adresse qui sera la nouvelle valeur ImageBase.
Dans l'en-tête et le corps d'un fichier PE, on trouve trois adressages différents :
Les répertoires sont des parties du fichier utilisées lors de son chargement.
La position et la taille des données de ces répertoires sont indiquées dans le champ DataDirectory de OptionalHeader qui est un tableau de structures IMAGE_DATA_DIRECTORY décrit comme suit :
L'IAT, qui signifie import address table, contenue dans le second répertoire import table (généralement dans la section .idata ou .rdata), indique les adresses des API importées par un logiciel, ainsi que les noms des DLL important ces fonctions. Les API, contenues dans ces DLL, permettent aux logiciels de fonctionner correctement.
Son existence est due au fait que les API sont adressées différemment en fonction des OS.
Il faut savoir en premier lieu qu'une structure nommée IMAGE_IMPORT_DESCRIPTOR est utilisée pour chaque DLL appelée; plus une dernière de 5 DWORD mis à zéro qui définit une terminaison.
Pour chaque DLL importée, une structure nommée IMAGE_THUNK_DATA sera utilisée pour chaque API de cette DLL ; il y aura donc autant de IMAGE_THUNK_DATA que de fonctions exportées par une DLL, plus un dernier DWORD spécifiant la terminaison de cette DLL.
Une troisième structure, IMAGE_IMPORT_BY_NAME, définit le nom des API ainsi que leur numéro ORDINAL (nombre de 16 bits identifiant une fonction au sein d'une DLL). Il en existe autant qu'il y a d'API importées par DLL. Par exemple, sur l'image d'exemple ci-dessus, il y a trois IMAGE_IMPORT_BY_NAME définies pour advapi32.dll, car seulement trois de ses API sont utilisées par le programme.
EAT = Export Address Table
| View original on Wikipedia | Back | FazBrowse Home |