2012-03-24 5 views
0

Ich kann GetModuleHandle verwenden, um den Basisoffset abzurufen, aber ich muss auch die Größe des Codesegments der DLL oder EXE kennen. Zum Beispiel muss ich nSize in diesem Code ermitteln:Abrufen der Größe des Codesegments einer DLL oder EXE beim Laden in den Speicher

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

Einfach nur VirtualQuery wird. –

Antwort

1

PSAPI bekommt man diese: GetModuleInformation Funktion gibt Ihnen MODULEINFO Struktur sowohl mit Basisadresse und Größe des Bildes.

typedef struct _MODULEINFO { 
    LPVOID lpBaseOfDll; 
    DWORD SizeOfImage; 
    LPVOID EntryPoint; 
} MODULEINFO, *LPMODULEINFO; 
Verwandte Themen