0

我正在尝试从进程(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);
}
4

1 回答 1

7

您正在尝试读取目标进程中的地址 0。那总是会失败的。您需要从目标进程的虚拟地址空间中有意义的地址读取。

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

于 2012-08-31T12:32:38.083 回答