qhhu
Messages postés66Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 octobre 2009
-
27 sept. 2008 à 11:35
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
30 sept. 2008 à 19:00
Bonjour tout le monde.
Je crois savoir que le programme svchost.exe, l'hote de tous les services windows parvient à charger certains programmes dans sa propre mémoire. En effet, il arrive a "héberger" un programme dans sa propre mémoire alouée.
Par example, quant je tape services.msc, je trouve une tonne de services démarrés qui font référence à des executables que je ne trouve pas dans le gestionnaire des taches. Je n'en suis pas sur, dites moi si c'est faux, mais je pense qu'ils sont "stockés" dans le processus svchost.exe.
J'aimerais simplement imiter son fonctionnement, c.a.d pouvoir appeler un programme dans la mémoire d'un autre..
Merci d'avance !
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 30 sept. 2008 à 19:00
Salut,
Sur le plan purement théorique, il n'est pas possible de charger un .exe dans un processus et de le faire tourner. Le problème vient du fait que les .exe sont (généralement) conçut pour tourner à une adresse précise.
Tu lances ton processus hôte Host.exe, qui veut l'adresse 12. Comme il est pas petit, il va consommer de l'adresse 12 à l'adresse 15.
Puis tu veux charger Child.exe. Rien ne te dit que Child.exe ne veut pas les adresses de 14 à 17. De plus, mis à part Host.exe, dans la mémoire de ton processus, tu as une pile, un tas, et toutes les dlls chargées par Host.exe.
Conclusion : faire un logiciel capable d'héberger un logiciel quelconque est impossible.
Par contre, il y a les dlls... Les dlls, ressemble à s'y méprendre à des .exe, et respèctent le même format de fichier. Cependant, quand on compile (Ca doit plutôt se faire au link d'ailleur) une dll, on peut préciser son adresse préférée, mais ce n'est pas une adresse forcée. La dll inclus en effet une table de relocation, qui permet à Windows de corriger la dll si elle est chargée à une autre adresse.
C'est ainsi que svchost n'héberge pas des .exe, mais des .dll. Sur cette page, on peut voir les principale correspondances dll <-> service.