2012-03-24 23 views
0

我可以使用GetModuleHandle來獲取其基址偏移量,但我也需要知道DLL或EXE代碼段的大小。例如,我需要在此代碼來估算n大小:獲取DLL或EXE的代碼段在加載到內存中時的大小

char aCrashSignatureBytesAtEIP[] = { 0x87, 0x12, 0x00, ... }; 
char* pBaseOffset = (char*) GetModuleHandle(NULL); 
int nSize = ???; 
for (int i = 0; i<nSize; i++) 
    if (!memcmp(&pBaseOffset[i], aCrashSignatureBytesAtEIP, sizeof(aCrashSignatureBytesAtEIP))) 
    { 
     printf("Crash signature found at offset %p", &pBaseOffset[i]); 
    } 
+1

只是簡單的VirtualQuery會做。 – 2012-03-24 11:23:10

回答

1

PSAPI得到你:GetModuleInformation函數返回你與圖像的兩個基地址和大小MODULEINFO結構。

typedef struct _MODULEINFO { 
    LPVOID lpBaseOfDll; 
    DWORD SizeOfImage; 
    LPVOID EntryPoint; 
} MODULEINFO, *LPMODULEINFO; 
相關問題