Basisadresse eines Prozesses abrufen
Ich versuche ein Programm zu erstellen, das den Timer-Wert von Minesweeper liest. (Betriebssystem ist Windows 7 64bit)
Mit der Cheat-Engine habe ich die Basisadresse der Variablen gefunden, aber sie ändert sich jedes Mal, wenn ich Minesweeper starte.
Was muss ich tun, um die Basisadresse automatisch zu ermitteln?
Hat es etwas mit der ausführbaren Basisadresse zu tun?
Hier ist mein Code:
<code>#include <windows.h> #include <iostream> using namespace std; int main() { DWORD baseAddress = 0xFF1DAA38;//always changing DWORD offset1 = 0x18; DWORD offset2 = 0x20; DWORD pAddress1; DWORD pAddress2; float value = 0; DWORD pid; HWND hwnd; hwnd = FindWindow(NULL,"Minesweeper"); if(!hwnd)//didn't find the window { cout <<"Window not found!\n"; cin.get(); } else { GetWindowThreadProcessId(hwnd,&pid); HANDLE phandle = OpenProcess(PROCESS_VM_READ,0,pid);//get permission to read if(!phandle)//failed to get permission { cout <<"Could not get handle!\n"; cin.get(); } else { ReadProcessMemory(phandle,(void*)(baseAddress),&pAddress1,sizeof(pAddress1),0); ReadProcessMemory(phandle,(void*)(pAddress1 + offset1),&pAddress2,sizeof(pAddress2),0); while(1) { ReadProcessMemory(phandle,(void*)(pAddress2 + offset2),&value,sizeof(value),0); cout << value << "\n"; Sleep(1000); } } } } </code>