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 に答える