En effet, VirtualQueryEx (
hProcess,
lpAddress,
lpBuffer,
dwLength) me permet d'obtenir les champs:
BaseAddress;
AllocationBase;
AllocationProtect;
RegionSize;
State;
Protect;
lType;
dans la structure pointée par
lpBuffer, en lui passant le Handle
hProcess du processus demandé et obtenu précédemment.
Afin d'optimiser la recherche, on peut faire un mapping de la mémoire du processus en partant de
BaseAddress = 0 et en incrémentant
BaseAddress de
RegionSize. Si AllocationBase != 0 ET que State = MEM_COMMIT (1000h), alors on est dans un segment du processus et on peut rechercher, voir modifier le code si on a le bon handle. Je suis en train d'écrire le module ... Ah oui, ne pas oublier de s'aligner sur 4 pour la structure MEMORY_BASIC_INFORMATION sous peine de défaut de la fonction (implémentation adresses paires).
J'étais parti sur le principe d'attacher le processus et de faire un GetProcessHeaps dessus, ou de lire ses tas à l'aide de son PEB (7FFDF000h), mais le VirtualQueryEx est beaucoup plus simple...
Merci encore à Patatalo

smarty