我試圖用openprocess從這個exe中獲得基地址,但是當我運行代碼時我一直崩潰,而且我沒有看到它的任何錯誤。從一個exe中獲取基址C++
HMODULE GetModule(HANDLE han)
{
HMODULE hMods[1024];
int i;
DWORD cbNeeded;
char szProcessName[MAX_PATH] = "Minesweeper.exe";
EnumProcessModules(han, hMods, sizeof(hMods), &cbNeeded);
for (i = 0; i < (cbNeeded/sizeof(HMODULE)); i++)
{
TCHAR szModName[MAX_PATH];
GetModuleFileNameEx(han, hMods[i], szProcessName, sizeof(szModName));
//printf(TEXT("\t%s (0x%08X)\n"), szModName, hMods[i]);
if (szModName == szProcessName)
{
cout << "FOUND" << endl;
}
}
return 0;
}
這個問題應該可能有一些特定於Windows的標記,但我不知道哪些應用。 – 5gon12eder
'GetModuleFileNameEx'的最後一個參數是以字符而不是字節來衡量的,所以你不應該使用'sizeof'。在Unicode構建中,這可能會導致崩潰。 –
即時通訊使用多字節項目,我也做了printf,我註釋了,我有一些地址,但我打印後,他們都崩潰了。 –