我试图找出最合理的逐步读取偏移量的方法,这是我目前正在处理的代码。
DWORD BaseOFFSET = 0x000000;
DWORD address2 = ReadProcessMemory(pHandle, (void*)(BaseOFFSET + 0x50),0, sizeof(DWORD), 0); //50 doors down in baseoffset
DWORD address3 = ReadProcessMemory(pHandle, (void*)(address2 + 0x0500),0, sizeof(DWORD), 0); // address 3 is address2 + another 500 doors down the line
DWORD address4 = ReadProcessMemory(pHandle, (void*)(address3 + 0x140),0, sizeof(DWORD), 0); // and so on...
DWORD address5 = ReadProcessMemory(pHandle, (void*)(address4 + 0x100), 0, sizeof(DWORD), 0); //Final offset is stored in address5
因为我知道浮点数存储在最终地址中,所以我会用它来判断地址中的值
float* Data = (float*)(&address5);
if (Data != nullptr)
Sleep(2000);
cout << *Data << std::endl;
我在那里睡觉(2000),因为它有一个长循环检查地址中的值以查看它是否发生变化,并且取决于变化我会做不同的事情。代码编译并运行正常,但返回的值是错误的,当我在循环中进行cout时,我得到0。
答案 0 :(得分:0)
首先,您使用ReadProcessMemory
错误。失败返回0,成功返回1。你得到了零,因为它失败了,可能是因为你为输出指针传递了一个null(0),这不是可选的。
其次,您不能直接使用其他进程的指针(在您的示例中尝试使用*Data
)。您需要使用您获得的外部指针调用ReadProcessMemory
来读取其他进程上下文中的指向数据。