Arbeitsspeicher auslesen
-
Hallo.
Wie kann ich mit der WinAPI den Arbeitsspeicher auslesen, den ein Programm belegt und anschlisßend die Daten im Arbeitsspeicer auslesen?
Ich hatte gedacht da gibts was in der WinAPI.Gruß Gasto
-
-
Danke, die funktionen hab ich gesucht.
Aber ich verstehe nicht ganz die Parameter von VirtualQuery/VirtualQueryEX
Mein Code sieht so aus:PVOID pvAddress = 0; MEMORY_BASIC_INFORMATION meminfo; VirtualQuery(pvAddress,&meminfo,sizeof(meminfo));Allerdings tritt bei VirtualQuery ein fehler auf.
-
lpAddress
[in] Pointer to the base address of the region of pages to be queried. This value is rounded down to the next page boundary. To determine the size of a page on the host computer, use the GetSystemInfo function.
lpBuffer
[out] Pointer to a MEMORY_BASIC_INFORMATION structure in which information about the specified page range is returned.
dwLength
[in] Size of the buffer pointed to by the lpBuffer parameter, in bytes.BTW: Mit GetLastError() kriegt man mehr Infos als "tritt ein fehler auf"
MfG SideWinder
-
ja, die Parameter kenn ich.
Ich verstehe nur nicht ganz zu was der erste parameter da ist.
und wie ich den wert bekomme.
-
Wenn du die Daten eines fremden Prozesses auslesen willst, musst du VirtualQueryEx verwenden. Der Adressparameter ist die virtuelle Adresse für die du feststellen willst, zu welchem Block gleichartiger Speicherseiten sie gehört oder ob sie im nicht definierten Bereicht liegt. Willst du den ganzen virtuellen Speicher abfragen, beginnst du einfach mit dem Nullpointer und wirst einen nicht zugewiesenen Adressblock erhalten. Dann erhöhst du deinen Pointer um die Größe des aktuellen Bereiches und kannst so die nächste Gruppe von Speicherseiten abfragen. Das machst du dann so lange, bis du bei 0x80000000 angekommen bist.
