Mit VirtualQueryEx kannst Du die Alloziierungs-Infos des fremden Prozesses abfragen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| var Ptr : Pointer; Offset: DWORD absolute Ptr;
MemInfoNew: TMemoryBasicInformation; MemInfo : Array of TMemoryBasicInformation; Idx : Integer; Begin SetLength(MemInfo, 0); Idx := 0;
Offset := 4096; While Offset <> 0 do Begin If VirtualQueryEx(0, Ptr, @MemInfoNew, SizeOf(MemInfoNew)) <> 0 Then Begin If Idx > High(MemInfo) Then SetLength(MemInfo, Idx + 64); MemInfo[Idx] := MemInfoNew; Inc(Idx); Inc(Offset, MemInfoNew.RegionSize); end else Begin Inc(Offset, 4096); end; end; SetLength(MemInfo, Idx); end; |
Prozedure laut Informationen des MSPSDK, Übersetzung mancher Pointer kann in Delphi leicht abweichen.
Der zu behandelnde Prozess ist im Beispiel der aktuelle. Einfach die 0 bei VirtualQueryEx austauschen gegen ein Prozesshandle eurer Wahl
Die Informationen liegen dann in MemInfo.
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.