我正在尝试读取(并最终写入)另一个进程的内存。我有地址(使用作弊引擎找到),并且想从程序中读取它的值,但是没有得到期望的值。地址是274A88A1630,但是当我将其转换为LPCVOID(ReadProcessMemory要求)时,我只会得到A88A1630(未指向我想要的内存)
我尝试使用(LPCVOID)
和(void*)
进行转换,它们都给出相同的结果
int val = 0;
ReadProcessMemory(handle, (void*)0x274A88A1630, &val, sizeof(val), 0);
cout << val <<endl;
答案 0 :(得分:1)
发生这种情况是因为您已将应用程序编译为x86(32位/ Win32)二进制文件。指针(在这种情况下为void*
)在x86上为32位。 x64(64位/ Win64)上的指针是64位。 0x274A88A1630
是64位值,因此,如果您为x64(64位/ Win64)编译应用,则不会遇到此问题。
TLDR;为x86编译时,超过32位的指针值将被截断为32位。