Du könntest mit virtualquery durch den Addressraum durchmarschieren.
Edit:
Hier hatte ich mal etwas geschrieben.
Abgeändert auf deine Sache:
Delphi-Quellcode:
function getType(Typ:cardinal):string;
begin
case typ of
MEM_Image:result:='Image';
MEM_Private:result:='Private';
MEM_Mapped:result:='Mapped';
else result:='';
end;
end;
procedure TForm1.getmemInfo;
var mbi:memory_basic_information;
si:system_info;
pos:cardinal;
begin
getsysteminfo(si);
pos:=cardinal(si.lpMinimumApplicationAddress);
while pos<cardinal(si.lpMaximumApplicationAddress) do begin
virtualquery(pointer(pos),mbi,sizeof(mbi));
if ((mbi.State and mem_commit)>0) then
memo1.Lines.Add(inttohex(integer(mbi.BaseAddress),8)+
' Größe: '+inttostr(mbi.RegionSize)+
' Type: '+gettype(mbi.type_9));
inc(pos,mbi.regionsize);
end;
end;
Für einen anderen Process müsste man sicherlich virtualqueryEx nehmen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.