0
我使用DWORD BaseAddress = (DWORD)GetModuleHandle("example.exe");
來獲取我附加過程的基地址。我使用的所有地址都是DWORD類型,我在地址編號之前使用0x,所以它是十六進制的,而不是十進制。我正在使用一臺x64電腦。我正在閱讀的這兩個地址都包含一個文本值。C++ ReadProcessMemory基地址+偏移量不工作
此代碼爲一個靜態地址:
ReadProcessMemory(pHandle, (LPVOID)Address1, (LPVOID)&Address1Value, sizeof(Address1Value)*3, 0);
char PlayerNameBuffer[13] = {0};
snprintf(Address1Buffer, sizeof(Address1Value)*3, "%s", (LPVOID)&Address1Value);
ImprovedSetWindowText(Address1DisplayLabel, Address1Buffer);
那麼,爲什麼不這項工作動態地址?:
DWORD Address2 = BaseAddress + Addres2Offset;
ReadProcessMemory(pHandle, (LPVOID)Address2, (LPVOID)&Address2Value, sizeof(Address2Value)*3, 0);
char LocationNameBuffer[13] = {0};
_snprintf(Address2Buffer, sizeof(Address2Value)*3, "%s", (LPVOID)&Address2Value);
ImprovedSetWindowText(Address2DisplayLabel, Address2Buffer);
你如何獲得'Address2Offset'?我認爲這不重要,但從技術上講,如果您的進程是64位,則應該使用64位類型來保存地址。 DWORD是32位寬。 –
我反向工程,發現它。我知道這是正確的100%的事實,因爲我用另一個軟件輸入地址和偏移量來顯示值是什麼,但我無法在C++中使用它。此外,我將DWORD更改爲DWORD64,並沒有什麼區別,我不認爲問題與變量類型有關。 – Dav3
我的問題已解決,我正在使用GetModuleHandle。 – Dav3