Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Mappage de fichier PE [ Archives / Aide a la programmation Windows ] (morganitos)

mardi 3 janvier 2006 à 19:15:21 | Mappage de fichier PE

morganitos

Bonjour, j'aimerai simplment savoir ce qui est mappé d'un fichier PE par un loader dans la mémoire. Pas très clair... bref quand le loader mappe un .exe ou un .dll en mémoire, est-ce-que les headers sont mappés ??? Ou est-ce-que ttes les sections sont mappés ??? Bref, le fichier est-il mappé en entier ou juste une partie ??? J'ai répété 3 fois la même chose, j'espère avoir correctement exposé mon problème... ;-) Merci de votre réponse.

mercredi 4 janvier 2006 à 09:20:04 | Re : Mappage de fichier PE

Nasman

Bonjour Morganitos,

Pour répondre à ta question (si j'ai bien compris), je m'étais interessé à ce qui étais chargé dans la mémoire au lancement d'un programme. C'étais en fait l'objet de ma première source sur CodeSources. Le programme permettait de visualiser ce qui se trouvait dans la mémoire à partir de 00400000h, emplacement traditionnel des programmes.
On retrouve effectivement integralement en mémoire le header PE (et MZ) à partir de l'adresse 00400000, puis les différentes sections aux emplacements définis par le header PE. Les informations relatives aux différentes sections du header PE contiennent entre autre:
- l'adresse de chargement (où les données vont se retrouver une fois chargées)
- l'adresse à partir de laquelle s'effectuera la copie (position des données dans le fichier non chargé - voir avec éditeur hexa).

Pour la section code et data, elles restent identiques, par compte il pourra y avoir quelques différences pour les imports/export/relocs...
A+


mercredi 4 janvier 2006 à 09:49:25 | Re : Mappage de fichier PE

patatalo

Membre Club Administrateur CodeS-SourceS
salut, effectivement, l'ensemble de l'executable est mappé en memoire virtuelle. Windows recuperera la memoire physique en "discardant" les parties les moins utilisées comme les ressources,... Autrement dit, tout est mappé en memoire virtuelle mais pas forcement en mémoire physique. Un acces memoire aux parties "discardées" génèrera juste une exception PAGE_NOT_PRESENT afin que le gestionnaire memoire remappe le bloc désiré en memoire physique. Ceci est bien sur transparent pour le coté application qui ne voit rien de ce qui c'est passé. @++

mercredi 4 janvier 2006 à 15:34:57 | Re : Mappage de fichier PE

morganitos

Merci pour ces réponses bien claires. Par contre Nasman, je comprends que la section import soit modifiée, puisque les adresses des API sont loadées lors du mapping. Mais je ne comprends pas quelles peuvent être les modif apportées par le loader sur les sections d'exportation et de relocation... Je pensais qu'elles étaient simplement lues, non ?

jeudi 5 janvier 2006 à 10:55:31 | Re : Mappage de fichier PE

Nasman

Bonjour Morganitos,

Pour commencer, je te présente toutes mes confuses .
Effectivement la section relocs est chargée telle quelle dans la mémoire virtuelle (à l'emplacement indiqué par le header) ; en ce qui concerne la section export il faudrait que je verifie. Enfin pour la section import, des modifications sont apportées entre le contenu du fichier source et celui chargé en mémoire.

Pour un décriptage plus complet, je suppose que tu connais la structure des fichiers PE.

A+


jeudi 5 janvier 2006 à 12:39:30 | Re : Mappage de fichier PE

patatalo

Membre Club Administrateur CodeS-SourceS
salut, Les exports sont indiqués en offset par rapport a la section. Pas de raison de les reloger. @++

mardi 10 janvier 2006 à 17:37:12 | Re : Mappage de fichier PE

morganitos

Pour continuer dans la série : Je viens d'étudier une dll et , ho surprise, je vois qque chose qui me semble bizarre : La section .data ( remplie de 0 comme à son habitude je pense...) a sa VirtualSize plus grande que sa SizeOfRawData. Est-ce-normal ??? Si oui, est-ce une caractéristique propre à cette section ou est-il possible que d'autres types de section adoptent la même "originalité" ??? Merci d'avance pour votre réponse... :-)

mardi 10 janvier 2006 à 19:11:25 | Re : Mappage de fichier PE

patatalo

Membre Club Administrateur CodeS-SourceS
salut, la taille virtuelle de la section sera tj alignée par bloc de 4Ko et peut etre plus ? il en est de meme pour la section .code qui font d'excellents endroits pour coller un code virus !!! @++

mardi 10 janvier 2006 à 20:56:01 | Re : Mappage de fichier PE

morganitos

Je n'ai pas très bien compris, cependant, la SizeOfRawData d'une section devrait être alignée par rapport à la VirtualSize de cette même section selon la valeur de FileHeader.FileAlignement ( souvent égale à 1000 octets d'ailleurs) non ? Donc nécessairement : SizeOfRawData > VirtualSize n'est-ce-pas ? Ce qui n'est pas le cas dans mon exemple de la .data...

mardi 10 janvier 2006 à 21:29:16 | Re : Mappage de fichier PE

patatalo

Membre Club Administrateur CodeS-SourceS
qu'est ce que tu me raconte là ? la SizeOfRawData est la taille des données fichier et la virtual size est la taille en memoire. si SizeOfRawData devient superieur a VirtualSize on obtient des données fantomes ( qui existe niveau fichier mais innaccessibles en memoire ??? ). pour dire simple, quand tu veux rentrer tes affaires dans une valise, assure toi que la valise soit assez grande... @++


1 2

Cette discussion est classé dans : fichier, loader, pe, mappé, mappage


Répondre à ce message

Sujets en rapport avec ce message

Fichier resource... [ par Stormy ] Stormy. J'explique le problème. Je dispose de certaines sources en asm sous Masm qui reprennent le principe du fichier resource (rsc) en accompagnemen URGENT fichier ??? [ par TRAX44 ] salut,débutant demande aideG besoin de savoir comment gérer des fichier avec et sans interruption ms dos merciTRAX EditBox [ par Bros ] SalutJ'ai une fenetre avec un editbox.Mon programme ouvre un fichier et va afficher dans l'édit box: "Fichier ouvert..."En suite a la ligne en dessous Convertion asm vers hex (ou bin) [ par mistigry ] J'utilise un PIC16F870 avec le compilateur CH Basic V1.2, ce compilateur me fournit des fichier asm (ou bsc) et pour pouvoir transférer le fichier sur debutant tail d'un fichier [ par TRAX44 ] Salut,c 1 truc tou con je c + cmt on fé pour avoir la tail d'un fichier en octet kan on a son handlemerci imprimer un fichier [ par gassman ] salutest ce que quel qu un pourait me dire comment je fait pour faire un bouton aec qt designer qui appelle la boite de dialogue de kde de l impriman transformer un fichier ascii en format texte afin de pouvoir imprimer correctement sur une imprimante laser [ par kamie ] KamieBonjour à tous,j'ai un petit problème et je ne sais pas comment faire.j'ai un fichier qui est de format ascii.lorsque nous imprimons ce fichier s convertir un fichier ascci en fichier texte afin de pouvoir imprimer corectemen sur une imprimante laser [ par kamie ] KamieBonjour à tous,j'ai un petit problème et je ne sais pas comment faire.j'ai un fichier qui est de format ascii.lorsque nous imprimons ce fichier s Ajouter un lecteur [ par CoreBreaker ] Bojour à tous !J'ai développé un VXD contenant un FSD dans l'espoir ajouter un lecteur virtuel pour rediriger le système de fichier mappé dans un fich Ouvrir un fichier depuis l'explorer windows [ par Apinew ] ApinewSalut,J'ai cherché un peu partout et j'ai pas encore trouvé unmoyen de récupérer le chemin d'un fichier en faisant parexemple la commande ouvrir


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.