Un fichier .exe est donc un fichier qui peut être exécuté par Windows, mais que contient-il exactement? Un langage d'assemblage spécifique au processeur? Ou une sorte de déclaration intermédiaire reconnue par Windows qui la transforme en assemblage pour un processeur spécifique? Que fait exactement Windows avec le fichier lorsqu'il "l'exécute"?
Réponses
Trop de publicités?MSDN a un article "Un Regard en Profondeur Dans le fichier Exécutable Portable Win32 Format de Fichier" qui décrit la structure d'un fichier exécutable.
Fondamentalement, un .exe contient plusieurs gouttes de données et des instructions sur la façon dont ils doivent être chargés en mémoire. Certaines de ces sections contiennent du code machine qui peut être exécuté (autres sections contiennent des données du programme, les ressources, l'information sur le déménagement, de l'importation de l'information, etc.)
Je suggère que vous obtenez une copie de Windows Internals pour une description complète de ce qui se passe lorsque vous exécutez un fichier exe.
Pour un natif de l'exécutable, le code machine de la plate-forme. L' .exe de l'en-tête indique que la plate-forme .exe est pour.
Lors de l'exécution d'un natif .exe les cas suivants (grossièrement simplifié):
- Un processus de création de l'objet.
- Le fichier exe est lu en mémoire de ce processus. Les différentes sections de la .exe (code, données, etc.) sont mappés séparément et compte tenu des différentes autorisations (de code est exécutée, les données sont en lecture/écriture, les constantes sont en lecture seule).
- Les délocalisations se produire dans le .exe (les adresses sont corrigés si l' .exe n'a pas été chargée à son adresse de votre choix.)
- La table d'importation est parcouru et dépendante de DLL sont chargées.
- De DLL sont mappés dans une méthode similaire pour .exe, de délocalisations, de prédiction, et leurs dépendants DLL est en cours de chargement. Fonctions importées de DLL sont résolus.
- Le processus commence l'exécution d'une première stub dans NTDLL.
- La première chargeur de stub exécute les points d'entrée pour chaque DLL, puis saute vers le point d'entrée de l' .exe.
Les fichiers exécutables gérés contenir MSIL (Microsoft Intermediate Language) et peuvent être compilés afin qu'ils puissent cibler n'importe quel CPU que le CLR prend en charge. Je ne suis pas familier avec le fonctionnement interne de la CLR chargeur (ce code natif d'abord s'exécute au démarrage de la sangle de la CLR et de commencer à interpréter le langage MSIL) - peut-être quelqu'un d'autre peut approfondir sur le sujet.
1 et 0!
Ce lien wikipedia vous donnera toutes les informations dont vous avez besoin sur le format Portable Executable utilisé pour les applications Windows.
http://www.wisegeek.com/what-is-an-exe-file.htm
vous pouvez obtenir de nombreuses réponses ici