【发布时间】:2015-04-02 23:05:16
【问题描述】:
我正在尝试逐步找出最合乎逻辑的读取偏移量的方法,这是我目前正在处理的代码。
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。
【问题讨论】:
-
您可能需要参考the documentation 获取 ReadProcessMemory。它不返回读取的值,您使用不当。
-
我很惊讶代码没有崩溃。输出参数不是可选的,您传递的是 NULL。