Also ich suche mir jetzt lesebare Bereiche raus..
fange mit der Addresse 0x01 an und jedesmal wenn ich entweder
0x01(PAGE_NOACCESS) oder 0x00(NOACCESS) wieder bekomme
gehe ich zur nächsten über, indem ich die alte Addresse + der Pagegröße nehme.
Soweit richtig?
Code:
int startip=0x0001;
status =VirtualQueryEx(pressid,(void*)startip, &range, sizeof(range));
    while(status != 0){
    status =VirtualQueryEx(pressid,(void*)startip, &range, sizeof(range));
    if((range.Protect == 0x01) || (range.Protect == 0x00))
    {
        ((int*)(startip))=((int*)(startip))+range.RegionSize;
    }else{
 dump((void*)PROCESS_ID_MANUAL(void*)range.BaseAddress,range.RegionSize);
 startip=startip+range.RegionSize;
    }
    }
Dabei bekommen ich
Code:
konnte 0x00040000 NICHT auslesen
Status: 0x1C
AllocationBase: 0x40000
AllocationProtect: 0x80
BaseAddress: 0x40000
Protect: 0x02
RegionSize: 0x1000
State: 0x1000
Type: 0x1000000
---------------
konnte 0x00081000 NICHT auslesen
Status: 0x1C
AllocationBase: 0x50000
AllocationProtect: 0x04
BaseAddress: 0x81000
Protect: 0x04
RegionSize: 0xF000
State: 0x1000
Type: 0x20000
---------------
konnte 0x004E4000 NICHT auslesen
Status: 0x1C
AllocationBase: 0x4E0000
AllocationProtect: 0x04
BaseAddress: 0x4E4000
Protect: 0x04
RegionSize: 0xFC000
State: 0x1000
Type: 0x20000
---------------
konnte 0x005E0000 NICHT auslesen
Status: 0x1C
AllocationBase: 0x5E0000
AllocationProtect: 0x04
BaseAddress: 0x5E0000
Protect: 0x04
RegionSize: 0x1000
State: 0x1000
Type: 0x20000
---------------
zurück.
Sehe ich das richtig, dass der erste Block quasi der ProzessBlock ist und der rest freie Blöcke für Dynamischen Speicher?
Aber warum hat die dupe Funktion danach schwierigkeiten?