suche memdumper für arbeitsspeicher eines prozesses
-
hi folks!
brauche einen memory dumper, der den speicher einer application ausliest.
also nicht den binärcode der anwendung selbst, sondern nur den speicher, auf den diese anwendung zugreift. sozusagen den "arbeitsspeicher"..danke im voraus
-
Hier ein Beispiel, wie man es machen könnte. Unter Umständen solltest du die Blöcke mit den Informationen der Funktion EnumProcessModules vergleichen, sonst werden auch alle geladenen Images und die EXE-Datei selbst mitgedumpt.
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_READ, FALSE,_processinfo->pid); if (!hProcess) { return FALSE; } SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); UINT blockcount = 0; PUCHAR address = 0; while (address <= (PUCHAR)0x80000000) { MEMORY_BASIC_INFORMATION memblock; ZeroMemory(&memblock,sizeof(memblock)); SIZE_T ret = VirtualQueryEx(hProcess,address,&memblock,sizeof(memblock)); if (ret == 0) { address += sysinfo.dwPageSize; continue; } if (memblock.State == MEM_COMMIT) { //ReadProcessMemory hier } address += memblock.RegionSize; ++blockcount; };
-
wenn du nicht das betriebssystem oder an den zielprozess angehängt bist kannst du nur auf den arbeitsspeicher von dir selbst (deiner anwendung) zugreifen, und das ist auch gut so
edit: na ich glaub ich hab mal wieder erst gepostet dann gedacht: du hängst dich ja hier an einen prozess oder was ist das openProcess?
-
Such mal nach "Yokem" und gib Zeichen.
-
naja, sache hat sich eigentlich erledigt....
mir da groß was zusammenzuschrauben ist mir zuviel, trotzdem danke für den source.@F98: öhm. verstehe ich nicht ganz. hab mal gegoogelt, aber nix gefunden.
-
Yokem hatte vor Jahren mal ein Kumpel von mir. War ein echt fähiges Tool zu Speicheranalyse, leider wollte er mir nicht verraten wo er es her hatte. Vielleicht hat es jemand hier, oder weiß wo man es her beziehen kann.