C++のReadProcessMemory関数に問題があります。実際に関数自体はうまく動作しますが、大きなアドレスの場合(たとえば、DWORDがアドレスに対して小さすぎるためにungsigned __int64を使用した場合など)、関数は私に間違ったポインタアドレスを与えます。私はDWORD tempAddressを変更した場合ReadProcessMemoryが正しく動作しません。
DWORD tempAddress;
unsigned __int64 potentialBasePointerAddress = 0x13F8A0000 + 0x18606B8; //I used unsigned __int64 since 0x13F8A0000 is too large for DWORD
if (ReadProcessMemory(hProcess, (LPVOID)potentialBasePointerAddress, &tempAddress, sizeof(tempAddress), NULL))
{
cout << tempAddress << endl;
}
//in this specific case the tempAddress is 1BD5679 (or 29185657) but actually it should be 3E7D4FE0 (see (*))
;:ここに関連するコードです符号なし__int64 tempAddressに; tempAddressは1953A4A0002C88A5(または18249832811198240377)です。
この問題を解決する方法はありません。私はかなりDWORDサイズよりも大きいベースアドレスを処理する方法があると確信していますが、私はあまりにも愚かであることを知るために愚かです。
私はすべての助けに感謝しています!