練習のために、特定のメモリアドレスが指しているアドレスを取得しようとしています。どのような結果を得る必要があるかを示すツールがあります。私の場合は次のとおりです。
"clientApp.exe"+0x11F9B08 -> 0E4C5F90
したがって、これは基本的に次の意味であると想定しています:("The base address of the .exe" + 0x11F9B08)
そして、それはアドレスを指しています0x0E4C5F90
。
clientApp.exe のベース アドレスは既に取得しています。EnumProcessModules
そのためにandを使いGetModuleFileNameEx
ました。
小さなスニペット
if ( GetModuleFileNameEx( hProcess, hMods[i], szModName, sizeof(szModName) / sizeof(TCHAR)))
{
if(gameName.compare(szModName))
{
dwClientBase = (DWORD)hMods[i]; //base address
break;
}
}
その後、指定されたアドレスを取得しようとしています。しかし、次の結果はまったく別の結果になります。
DWORD result = (DWORD)(dwClientBase + 0x11F9B08);
これにより、次のことがわかります23042824
。そして、私は探しています: 0x0E4C5F90
. 近いと思いますが、次に何を試すことができるかわかりません。
ツールが私に与えているのと同じ結果を得るために私が何をすべきか知っている人はいますか?