CRC32 Checksum Scan einer zuvor in die Memory gela

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?

Hallo Fragewurm,

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.

Was machst du da genau ??

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,

Du müsstest ihr diese Informationen irgendwie durch einen Aufruf übergeben.

oder ihr
eigenes Image in der Memory, wenn ja wie?

Das funktioniert, im allgemeinen, sowieso nicht !!

Je nachdem an welche Speicheradresse der Programmcode geladen wird, müssen z.B. die Spungadressen angepasst werden. Somit entspricht das was im Speicher steht, nicht dem was auf der Platte abgelegt ist. Zudem ist auf der Platte noch die Tabelle, mit den Code-Adressen welche beim laden modifiziert werden müssen eingefügt.

Du solltest dich mal mit dem EXE-Format, oder was dein Betriebssystem so verwendet, und dem Programm-Loader etwas genauer befassen. Naheres findest du in den Programmier-Unterlagen zu deinem Betriebssystem.

MfG Peter(TOO)