41 votes

Qu'y a-t-il dans un fichier .exe?

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"?

49voto

Michael Points 34110

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.

18voto

kctang Points 1752

Je peux vous dire ce que contiennent les deux premiers octets des fichiers .exe - «MZ». je veux dire les caractères «MZ».

Il représente en fait: Mark Zbikowski. Le gars qui a conçu le format de fichier exe.

http://en.wikipedia.org/wiki/Mark_Zbikowski

14voto

Nick Bedford Points 3009

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.

2voto

Davit Siradeghyan Points 1052

http://www.wisegeek.com/what-is-an-exe-file.htm

vous pouvez obtenir de nombreuses réponses ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X