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>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage