Ich habe eine Unicode DLL die sich selbst mit einem CRC32 Check auf ihre File Integrität überprüfen kann(AntiHexedit). Wenn ich die DLL in einen Prozess lade, findet die DLL erst mal ihren Pfadnamen
[cpp] GetModuleFileNameA((HMODULE) hDll, bfr, sizeof(bfr));
dll_name = bfr;[/cpp]
und benutzt dann fopen
[cpp] pDLLFile = fopen(bfr, „rb“);[/cpp]um ihre eigene CRC32 Checksumme auszulesen, die wird dann verglichen mit einem HashStempel der zuvor am Ende der DLL nach dem kompilieren hinzugefügt wurde.
Bis hierhin läuft alles gut, nun habe ich aus dieser DLL eine DLL_ARRAY.h header datei gemacht, also ein Byte Array als [cpp]static unsigned char ARRAY_DLL[] = {etc…[/cpp] mit der definierten Grösse [cpp]#define ARRAY_SIZE 17408[/cpp] Diesen Byte Array der DLL füge ich nun meinem MFC DLLInjector Projekt hinzu (nicht als Ressource, sondern als Header), der dann bei einem Tastendruck die DLL in einen bestimmten Prozess lädt.
Nun ist das Problem, das die DLL sich nicht mehr selbst überprüfen kann, sie findet den Pfad zu sich selbst nicht mehr. Gibt es hier einen Weg das die DLL ihren eigenen Byte Array Header in der Injector.exe überprüfen kann, oder ihr eigenes Image in der Memory, wenn ja wie?