問了一個問題Call CloseHandle on handle that is a function parameter?編輯的代碼有問題
人編輯的代碼後,我更新了它發現代碼不再按預期工作。
intptr_t readMem(HANDLE processHandle, intptr_t address, int sizeToReadBytes) { intptr_t memValue = 0; bool success = ReadProcessMemory(processHandle, (LPVOID)address, memValue, sizeToReadBytes, NULL); if (!success) std::wcout << "Memory read failed on address: " << std::hex << address << "\n"; return memValue; }
在線路
ReadProcessMemory(processHandle, (LPVOID)address, memValue, sizeToReadBytes, NULL);
的memValue
不會沒有(LPVOID)
或(LPCVOID)
石膏編譯,但是與它們的代碼不再讀取存儲器(或在的情況下,寫入使用的功能WriteProcessMemory
最初(現在我已經改變了它在我的小程序中)它使用參考&memValue
和工作正常。我的問題是:
應該這樣工作嗎? 或者是編輯正確,我的程序的其餘部分可能是錯誤的?
如果需要,我可以提供更多的代碼,只是不知道哪些位,並不想堵塞屏幕比我更...還應該回滾編輯?
寫道:或 '(LPCVOID)' 時,它的唯一 '(LPVOID)' 這...這在'WriteProcessMemory'函數中... –
*「和我的程序的其餘部分可能是錯誤的嗎?」* - 如果你不得不問,答案是平常的ly:是的,可能。您正在使用一種超越您的頭腦的API。如果投射具有挑戰性,那麼你不應該在運行過程中閱讀記憶。試着寫一個掃雷遊戲,看看它是如何工作的。你以後可以回來作弊。通常比學習打球更困難。計劃投資5年,如果這是你的最終目標。 – IInspectable
不,代碼在你的最後一個問題中也是錯誤的 –