Я пытаюсь создать игровой трейнер для игры. Я нашел нужные адреса памяти и теперь хочу записать свои значения в этот адрес.
Например: адрес боеприпасов: 0x0E9AFD07.
Это может сделать функция WriteProcessMemory()
в Windows API.
Мой источник:
int main(){
DWORD pid;
int address = 0x0E9AFD07;
const int data = 20;
HWND hwnd = FindWindow(0 , "Max Payne v1.05");
GetWindowThreadProcessId(hwnd , &pid);
HANDLE hndl = OpenProcess(PROCESS_ALL_ACCESS , false ,pid);
WriteProcessMemory(hndl , &address , &data , 4 , NULL);
return 0;
}
Но этот код не работает!
Если я должен использовать WriteProcessMemory
, как показано ниже:
WriteProcessMemory(hndl , (void*)0x0E9AFD07 , &data , 4 , NULL);
то второй параметр функции имеет тип LPVOID
и я читал, что LPVOID
это указатель на что угодно.
Итак, почему я не могу передать указатель на int
(переменная адреса) для второго параметра?
И почему я должен использовать (void*)
?
false
предполагает C++, но это может быть определено (как 0) в C. А процессOpenProcess
принимаетBOOL
второй параметр. - person Adrian Mole   schedule 22.03.2021