2010-11-25 6 views
0

Je souhaite savoir s'il est possible de charger le processus à une adresse (pré) spécifiée par l'utilisateur?Spécifier l'adresse de début de la mémoire pour un processus

Merci, Ashutosh

+5

Quelle plateforme ?! – EboMike

+1

Vous devez consulter la documentation de votre chaîne d'outils spécifique, ou au moins la spécifier pour les personnes ici. La norme C++ elle-même ne nécessite aucune installation, ou ne documente aucune installation potentielle pour cela. –

Répondre

3

L'adresse de base est spécifiée dans le fichier PE. Si vous voulez dire pour un EXE que vous compilez en MSVC, vous pouvez définir l'adresse de base dans les paramètres de l'éditeur de liens. Si vous avez un fichier EXE ou DLL arbitraire, vous pouvez modifier l'adresse de base à la main, avec une bonne ressource PE. Vous devez également désactiver ASLR - c'est aussi un paramètre de projet et dans le fichier PE.

La plupart des fichiers EXE se chargent à l'adresse de base de votre choix, car lorsque vous démarrez un processus, c'est la seule chose dans l'espace d'adressage et il n'est pas rare que les fichiers exe ignorent la table de relocalisation. Cependant, les DLL doivent parfois être re-basées. Ce n'est pas une bonne idée de dépendre du chargement à une adresse de base spécifique.

+1

Et n'oubliez pas de désactiver l'ASLR. – ruslik

+0

@ruslik: À la vôtre. – Puppy

Questions connexes