Uzyskiwanie adresu bazowego procesu
Próbuję stworzyć program odczytujący wartość timera z Saper. (OS to Windows 7 64bit)
Używając cheata engine znalazłem adres bazowy zmiennej, ale zmienia się on za każdym razem, gdy uruchamiam Saper.
Co muszę zrobić, aby automatycznie znaleźć adres bazowy?
Czy ma to coś wspólnego z wykonywalnym adresem bazowym?
Oto mój kod:
<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>