Witam
Moze ktos sie orientuje w jaki sposob mozna odczytac mape pamieci processu by otrzymac podobny efekt do tego jaki daje ollydbg
Problem jest w tym ze kolejne strony pamieci nie sa rownie oddalone ,czyli:
AdresNastepnej!=AdresPoprzedniej+RozmiarStrony.
Widac to na zalaczonym zdjeciu.
Obojetnie mi czy bede odczytywal pamiec po stronie czy cala,chodzi o efektywne przeszukiwania pamieci procesu...Uff ;-)
VirtualQueryEx - daje atrybuty i zwraca rozmiar stron mających takie same flagi.
Hym.
Przeanalizujmy sytuacje taka jak na zdjeciu.
Za pierwszym razem VirtualQueryEx :
unsigned long MinAdress=0x00010000;
VirtualQueryEx(handle_to_Process,(void*)MinAdress,&mbi,sizeof(mbi));
zwroci mi
mbi.BaseAdres=0x00010000;
mbi.RegionSize=0x1000;
wiec jak najbardziej prawidlowo.
Adres nastepnej strony
MinAdress=MinAdress+mbi.RegionSize;
Iteraz kwestia adresu trzeciej strony, ktory w tym wypadku wynosi 0x0031E000.
W jaki sposob go odgadnac ?
Odnalazlem taki project
http://www.codeproject.com/threads/MDumpAll.asp
Tutaj procka tworzaca liste stron korzysta jeszcze z VirtualAlloc.
Olly nie wyswietla nieistniejacych stron chyba, nie? Kolejne co odczytasz to blok z MEM_FREE i jego rozmiar... za nim bedzie kolejny /juz w Olku widoczny/ blok.
Deus fakt ;].Zasugerowalem sie tym ze olly wyswietla tylko page ,ktore sa uzywane . :-)
Takze juz wszystko jasne [browar]