下面的函数按之前的预期工作,没有进行任何更改,但现在我在第一次读取指针值时得到无效输出。所以,第一次我用 ReadProccessMemory 读取指针值时,addr 从 0x58AC00 变成 0x127ca7c800765d50,而且它不是十进制的地址,没有任何意义......我注意到这种奇怪的转换仅在我第一次尝试读取指针时发生链,因此接下来的 2 次迭代偏移量将按预期添加到 addr。任何帮助,我都会很高兴!
我将偏移量作为 std::vector ( 0x374, 0x14, 0x0) 传递 hProc 有效。
uintptr_t FindDMAAddy(HANDLE hProc, uintptr_t ptr, std::vector<unsigned int> offsets)
{
uintptr_t addr = ptr;
for (unsigned int i = 0; i < offsets.size(); ++i)
{
ReadProcessMemory(hProc, (BYTE*)addr, &addr, sizeof(addr), 0);
addr += offsets[i];
}
return addr;
}
我尝试用 (LPCVOID) 替换 (BYTE*) 强制转换,但没有成功。
事实证明,我只是忘记将配置从 x64 更改为 x86,因此指针大小不匹配。这导致了这个问题。最好多注意项目设置。
哈哈,菜鸟错误。我很高兴找到你的帖子,因为我也做了同样的事情