IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

News sur le format des exécutables Windows actuels


Sujet :

Windows

  1. #1
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut News sur le format des exécutables Windows actuels
    Bonjour,

    Je connais assez bien le format PE ou Portable Executable de Windows qui n'a pas changé depuis Win98 jusqu'au XP !!
    Mais avec les exécutables compatibles DOTNET, est-ce que ça a changé ou est-ce le même ?
    Qu'en est-il des binaires (EXE, DLL, SYS) de Windows Vista dont je n'utilise pas encore ?
    Existe-t-il des exécutables 64 bits ? surtout depuis que WinXP 64 bits existe
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    Citation Envoyé par randriano Voir le message
    Mais avec les exécutables compatibles DOTNET, est-ce que ça a changé ou est-ce le même ?
    C'est toujours le même format PE pour les exécutables .NET. La seule différence avec les binaires natifs est le champ suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IMAGE_DATA_DIRECTORY[IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR].VirtualAddress
    qui pointe maintenant vers une structure de type IMAGE_COR20_HEADER. Cette structure pointe ensuite vers différentes parties du PE contenant des données propre au .NET (metadata stream, fixups, etc.)

    Pour plus d'infos sur les structures en elles-même, voir WinNt.h.

    Pour comprendre l'agencement du fichier PE .NET voir la partition II du standard ECMA 335 :

    http://www.ecma-international.org/pu...s/Ecma-335.htm

    Qu'en est-il des binaires (EXE, DLL, SYS) de Windows Vista dont je n'utilise pas encore ?
    Toujours les mêmes que sous XP et tous ses prédécesseurs 32 bits. Il n'y a pas de différences structurelle entre un exécutable de Windows 95 et un exécutable Vista. Seule quelques différences de contenu sont visibles (Manifest, etc.)

    Existe-t-il des exécutables 64 bits ? surtout depuis que WinXP 64 bits existe
    Oui, des exécutables 64 bits spécifiques existent. Ils sont basés sur le PE 32 bits : a tel point, en fait, que les fichier PE 64 bits s'appellent .... PE32+.

    En fait il contiennent exactement les mêmes particularités que les PE 32 bits sauf que certains champs ont une taille de 64 bits... c'est tout !

  3. #3
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Merci pour ces données, donc pas de grand changement !!!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  4. #4
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Mais je me demande quand même pourquoi avoir choisi la même structure (PE Header). La seule différence que je constate c'est l'import de mscoree.dll, là je sais qu'un .EXE est DOTNET
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    En Dotnet l'exécutable n'est q'un "lanceur". En fait Windows tout seul ne peut pas exécuter l'exécutable .NET car il ne contient pas du code x86 mais contient du code MSIL. Le travail d'exécution est effectué par le CLR (Common Language Runtime) qui est appelé via mscoree.dll.
    En fait Windows lance l'exe, qui exécute le lanceur, qui appelle mscoree.dll qui va alors charger le runtime .net et l'application dotnet à proprement parler avant de la démarrer.
    Pourquoi avoir choisit le même format PE ? La question serait plutôt "pourquoi choisir un format différent ?". En passant par une dll annexe c'est une méthode très élégante de le faire qui n'implique pas d'avoir à redévelopper tout un ensemble de méthodes pour le chargement/l'exécution d'exécutables ou de dll, l'affichage d'icônes pour l'application, des propriétés, l'UAC, les manifest, ... D'ailleurs cela permet même au C++/CLI de générer des exe et dlls avec une architecture mixte où cohabitent à la fois du code natif et managé.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Le problème, si j'ai bien compris, c'est que le format est quand même différent, puisque:
    • La structure IMAGE_COR20_HEADER montrée plus haut
    • Il me semble avoir lu quelque part que l'installation de .Net incluait une modification du loader, nécessaire pour lancer les nouveaux EXE (sans doute pour comprendre le nouveau header), du moins pour les vieux Windows (le framework 1.1 marchait sous Win9x)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [C#] Timer sur les évènements des messages Windows
    Par Nullos Oracle dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/09/2006, 12h33
  2. Question sur le format des frame
    Par argon dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 12/04/2006, 15h02
  3. Information sur les formats des dates
    Par Azharis dans le forum Access
    Réponses: 2
    Dernier message: 13/01/2006, 14h07
  4. format PE des exécutables Windows
    Par GMI3 dans le forum Windows
    Réponses: 3
    Dernier message: 12/12/2003, 03h51
  5. question sur le format des images ..
    Par vbcasimir dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 28/08/2003, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo