// 获取模块长度
DWORD GetModuleLen(HMODULE hModule)
{
PBYTE pImage = (PBYTE)hModule;
PIMAGE_DOS_HEADER pImageDosHeader;
PIMAGE_NT_HEADERS pImageNtHeader;
pImageDosHeader = (PIMAGE_DOS_HEADER)pImage;
if(pImageDosHeader->e_magic != IMAGE_DOS_SIGNATURE)
{
return 0;
}
pImageNtHeader = (PIMAGE_NT_HEADERS)&pImage[pImageDosHeader->e_lfanew];
if(pImageNtHeader->Signature != IMAGE_NT_SIGNATURE)
{
return 0;
}
return pImageNtHeader->OptionalHeader.SizeOfImage;
}
-------------------------------------------
CHAR szLog[1024] = {0};
DWORD dwRet = NULL;
HMODULE hDll = GetModuleHandle("XXX.dll");
sprintf(szLog, "模块基址:0x%08X, 长度:0x%08X", hDll, GetModuleLen(hDll));
DebugMessage(szLog);