ReadProcessMemory() 不适用于像 0x2840C6C68D8 这样的长地址

ReadProcessMemory() doesn't works with long address like 0x2840C6C68D8

本文关键字:地址 0x2840C6C68D8 不适用 适用于 ReadProcessMemory      更新时间:2023-10-16

我正试图用ReadProcessMemory()从游戏中读取值,但似乎我只能用短地址。我成功地读取了具有完全相同代码但地址较短的游戏的值。就像这个0x5CD38994,但是当我尝试用一个不同的游戏做同样的事情,这个游戏有更长的地址,比如0x2840C6C68D8,我只得到0。我想这是关于ReadProcessMemory((的。我该怎么办?

ReadProcessMemory(pHandle,(LPVOID)0x2840C6C68D8, &my_value, sizeof(my_value),0);
Entire Code:
#include <iostream>
#include <Windows.h>
#include <string>
#include <cstdint>
DWORD pid;
int my_value;
int main(){
HWND hWnd = FindWindowA(0, ("game"));
GetWindowThreadProcessId(hWnd, &pid);
std::cout << pid << std::endl;
HANDLE pHandle = OpenProcess(PROCESS_VM_READ, FALSE, pid);
while(1){
ReadProcessMemory(pHandle, (LPVOID)0x2840C6C68D8, &my_value, sizeof(my_value),0);
std::cout << my_value << std::endl;
}
}

必须使用"gcc-m64"为x64进行编译,否则无法使用ReadProcessMemory((读取64位地址。