binær - Hvordan får man (flyttet) adgangspunktet for en eksekverbar deltagelse i ASLR på Windows?

Indlæg af Hanne Mølgaard Plasc

Problem




  Hvordan får man (flyttet) adgangspunktet for en eksekverbar deltagelse i ASLR på Windows?



Antag, at den eksekverbare er blevet indlæst, og at den deltager i ASLR.


PE-headeren giver den eksekverbare indgangspunkt, når den er indlæst uden ASLR. ASLR skal dog være 'tilfældigt', så overskriften kan ikke fortælle noget om det nye indgangspunkt?


Hvordan ville jeg finde min ASLR eksekverbare i hukommelsen, så jeg f.eks. Kan inspicere det og (muligvis) ændre det.

Bedste reference


Hvis din kode kører i forbindelse med den proces, hvis hovedmodul du vil lokalisere, kan du ringe enten GetModuleHandle eller GetModuleHandleEx, passerer NULL i stedet for et modulnavn. [2] [3]


Bemærk, at et 'modulhåndtag' i 32-bit eller 64-bit Windows er en pointer til den virtuelle adresse på modulet. (Dette var ikke sandt i 16-bit Windows.)


Hvis din kode kører i en separat proces, kan du bruge EnumProcessModules som beskrevet her. [4]