C++ 无法读取指针偏移链,获取随机无效数字

问题描述 投票:0回答:2

下面的函数按之前的预期工作,没有进行任何更改,但现在我在第一次读取指针值时得到无效输出。所以,第一次我用 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*) 强制转换,但没有成功。

c++ dynamic-memory-allocation
2个回答
0
投票

事实证明,我只是忘记将配置从 x64 更改为 x86,因此指针大小不匹配。这导致了这个问题。最好多注意项目设置。


0
投票

哈哈,菜鸟错误。我很高兴找到你的帖子,因为我也做了同样的事情

© www.soinside.com 2019 - 2024. All rights reserved.