J'ai besoin d'obtenir l'adresse de base/l'adresse du point d'entrée d'un fichier .exe qui a une adresse de base aléatoire à chaque démarrage. Le programme utilise ASLR.
...
je vais l'utiliser pour modifier certains morceaux de mémoire à l'intérieur du processus correct
Afin d'écrire des données dans un autre processus, vous devez utiliser WriteProcessMemory()
, qui vous oblige à Ouvrez un HANDLE
dans le processus en cours d'écriture.
Vous obtenez ce HANDLE
en utilisant OpenProcess()
, en demandant PROCESS_VM_OPERATION
et PROCESS_VM_WRITE
autorisations. OpenProcess()
prend un ID de processus en entrée, que vous pouvez obtenir à partir de:
Voir Process Enumeration et Enumerating All Processes.
À aucun moment, vous n'avez besoin de déterminer l'adresse de base du processus en cours d'écriture. Laissez le système garder une trace de cette information pour vous. Tout ce dont vous avez besoin est le HANDLE
ouvert au processus.
Je suppose que non? – Customality
La méthode est correcte dans mon test. Pourriez-vous coller votre code entier? Ou essayez-vous d'obtenir l'adresse de base d'un autre processus? –
Pourquoi pensez-vous que l'appel 'GetModuleHandle' est supposé faire ce que vous voulez? –