-
charger un executable
Salut a tous !
J'ai comme objectif de faire une sorte de PE Loader. L'idée est de faire un programme qui va executer un autre programme, sans passer par ShellExecute, CreateProcess, ... Juste en utilisant le fichier physique sur le disque.
J'ai lu les articles de Matt Pietrek sur le format PE :
http://msdn.microsoft.com/msdnmag/issues/02/02/PE/
et
http://msdn.microsoft.com/msdnmag/issues/02/03/PE2/
Si j'ai bien compris, il faut copier toutes les sections de l'executable en mémoire. A partir de la, comment executer le code ?
Je pense qu'il doit me manquer quelques notions a ce sujet...
Merci d'avance pour votre aide
-
Ben, après avoir chargé, il faut sans doute mapper les appels de DLL (je ne sais pas comment c'est fait sur PC? je ne connais que les relogements de TI-89), autoriser l'exécution sur la zone mémoire concernée (en pensant à retirer les droits d'écriture) avec VirtualProtect(), etc.
-
D'accord, je vais me renseigner pour les DLL.
Pour l'execution, je pense avoir trouvé. Si on recopie les sections comme dans le fichier, on a l'adresse du debut du code a executer avec l'entrypoint non ?
D'ailleurs je me demande, que doit-on mapper en mémoire ? Dos header, pe header, les sections, ... ? Peu etre meme tout le fichier