读取进程内存

我正在尝试从进程中读取内存(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。 那永远都会失败。 您需要从目标进程的虚拟地址空间中有意义的地址读取。

请注意,为了调用ReadProcessMemory您只需要PROCESS_VM_READ 。 这不是问题,但我认为为了完整起见我会指出它。