基址为:DWORD address = 0x13F4C34D7
使用ReadProcessMemory获取后返回值一直为0
使用控制台打印出来的address值为:1061958871
基址为:DWORD address = 0x13F4C34D7
使用ReadProcessMemory获取后返回值一直为0
使用控制台打印出来的address值为:1061958871
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题可能是因为在调用ReadProcessMemory函数时,没有正确地传递参数。ReadProcessMemory函数的第二个参数是地址范围,而你只提供了单个的内存地址。
要解决这个问题,你需要提供一个完整的地址范围,包括开始和结束地址。例如:
unsigned int start_address = 0x13F4C34D7;
unsigned int end_address = 0x13F4C34D7 + 4; // 4 bytes for the DWORD value
DWORD buffer[2]; // Allocate a buffer to store the result
if (VirtualQueryEx(hProcess, start_address, &buffer, sizeof(buffer)) == 0) {
printf("Failed to read memory\n");
} else if (buffer[0] != 0) {
printf("Value at %p is 0x%08X\n", start_address, buffer[0]);
}
这段代码首先计算了内存地址范围,然后使用VirtualQueryEx函数读取了这个范围内的内存。如果成功,它将返回第一个字节的值;否则,它将输出错误信息。
注意,这个例子中的hProcess变量应该已经被初始化,并且包含了一个有效的进程句柄。如果你没有这样做,你需要添加相应的代码来创建和初始化这个变量。