我正在尝试从进程中读取内存(calc.exe)。但是我打的是“无法读取内存”的消息。我的错误在哪里?
int main() {
HWND handle = FindWindow(0, TEXT("Calculadora"));
if (!handle) {
msg("Could not find window");
return 0;
}
DWORD id;
GetWindowThreadProcessId(handle, &id);
HANDLE proc = OpenProcess(PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, id);
if (!proc) {
msg("Could not open process");
return 0;
}
char buffer[128];
if (ReadProcessMemory(proc, 0, &buffer, 128, NULL)) {
msg("yes!!");
}
else {
msg("Could not read memory");
}
CloseHandle(proc);
}
答案 0 :(得分:7)
您正在尝试读取目标进程中的地址0。那永远都会失败。您需要从目标进程的虚拟地址空间中有意义的地址中读取。
请注意,要拨打ReadProcessMemory
,您只需PROCESS_VM_READ
。这不是问题所在,但我认为为了完整起见我会指出它。