gpt4 book ai didi

c++ - 从十六进制转换为 LPCVOID 切断了地址的一半

转载 作者:行者123 更新时间:2023-11-28 04:18:38 27 4
gpt4 key购买 nike

我正在尝试读取(并最终写入)另一个进程的内存。我有地址(使用 Cheat Engine 找到),我想从我的程序中读取它的值,但我没有得到预期的值。地址是 274A88A1630,但是当我将它转换为 LPCVOID(ReadProcessMemory 需要)时,我只得到 A88A1630(它没有指向我想要的内存)

我试过使用 (LPCVOID)(void*) 进行转换,两者都给出相同的结果

int val = 0;
ReadProcessMemory(handle, (void*)0x274A88A1630, &val, sizeof(val), 0);
cout << val <<endl;

最佳答案

发生这种情况是因为您已将应用程序编译为 x86(32 位/Win32)二进制文件。指针(在本例中为 void*)在 x86 上是 32 位的。 x64(64 位/Win64)上的指针是 64 位。 0x274A88A1630 是一个 64 位值,因此如果您为 x64(64 位/Win64)编译应用程序,则不会遇到此问题。

TLDR;为 x86 编译时,超过 32 位的指针值会被截断为 32 位。

关于c++ - 从十六进制转换为 LPCVOID 切断了地址的一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55984559/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com