begin process at 2010 02 09 18:34:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Aide a la programmation Windows

 > 

Mappage de fichier PE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Mappage de fichier PE

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ée 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

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales