Visual c++ ReadProcessMemory无法正常工作 我在C++中有一个读进程内存函数的问题。实际上,函数本身工作正常,但当涉及到较大的地址时(例如,当我使用未签名的_int64而不是DWORD时,因为DWORD对于地址来说太小),函数会给我一个错误的指针地址。

Visual c++ ReadProcessMemory无法正常工作 我在C++中有一个读进程内存函数的问题。实际上,函数本身工作正常,但当涉及到较大的地址时(例如,当我使用未签名的_int64而不是DWORD时,因为DWORD对于地址来说太小),函数会给我一个错误的指针地址。,visual-c++,Visual C++,ReadProcessMemory无法正常工作 我在C++中有一个读进程内存函数的问题。实际上,函数本身工作正常,但当涉及到较大的地址时(例如,当我使用未签名的_int64而不是DWORD时,因为DWORD对于地址来说太小),函数会给我一个错误的指针地址。以下是相关代码: DWORD tempAddress; unsigned __int64 potentialBasePointerAddress = 0x13F8A0000 + 0x18606B8; //I used unsigned __in

ReadProcessMemory无法正常工作 <>我在C++中有一个读进程内存函数的问题。实际上,函数本身工作正常,但当涉及到较大的地址时(例如,当我使用未签名的_int64而不是DWORD时,因为DWORD对于地址来说太小),函数会给我一个错误的指针地址。以下是相关代码:

DWORD tempAddress;
unsigned __int64 potentialBasePointerAddress = 0x13F8A0000 + 0x18606B8; //I used unsigned __int64 since 0x13F8A0000 is too large for DWORD

if (ReadProcessMemory(hProcess, (LPVOID)potentialBasePointerAddress, &tempAddress, sizeof(tempAddress), NULL))
{
    cout << tempAddress << endl;
}
//in this specific case the tempAddress is 1BD5679 (or 29185657) but actually it should be 3E7D4FE0 (see (*))
DWORD临时地址;
无符号uu int64位势基点地址=0x13F8A0000+0x18606B8//因为0x13F8A0000对于DWORD来说太大,所以我使用了无符号的_int64
if(ReadProcessMemory(hProcess,(LPVOID)potentialBasePointerAddress和tempAddress,sizeof(tempAddress),NULL))
{

您是否将程序编译为64位二进制文件?如果您将其编译为32位,则转换为
LPVOID
实际上会截断指向32位值的指针,因此您只是读取了错误的地址