一個程序要想執行,總是要加載到內存裡面的,為此我們使用下面的代碼查詢所有模塊的信息,再找 到它們在內存裡面的對應位置:
HANDLE hProcess;
HMODULE hModule[0x70];
TCHAR strFileName [MAX_PATH];
DWORD cbNeeded;
MODULEINFO modinfo;
hProcess = GetCurrentProcess();
if(EnumProcessModules(hProcess, hModule, sizeof(HMODULE) * 0x30, &cbNeeded))
{
for(n = 0; n < cbNeeded / sizeof(HMODULE); n++)
{
GetModuleFileName(hModule[n], strFileName, MAX_PATH);
GetModuleInformation( hProcess, hModule[n], &modinfo, sizeof(MODULEINFO) );
// 根據lpBaseOfDll得到其它的數據
……………
}
}
於是就得到了下面的結果(數值均為十六進制):
咱先找幾個有意思的看看。