Hey,
ich lade mittels InjectLibrary eine
Dll testweise in die eigene Anwendung. Die
DLL sieht etwa so aus:
Delphi-Quellcode:
procedure DllMain(Reason: DWORD); stdcall;
begin
MessageBox(0, 'Hallo', 'Hallo', 0);
end;
begin
DllProc := @DllMain;
DllMain(DLL_PROCESS_ATTACH);
ExitThread(0);
end;
Wie man sieht passiert nichts Aufregendes. Beim Aufruf von InjectLibrary wird nun auch wie erwartet die Meldung "Hallo" ausgegeben.
Führe ich nun aber UnloadLibrary aus hängt sich meine Anwendung einfach auf. Es passiert danach nichts mehr. Der Prozess lässt sich nur noch über den Taskmanager beenden.
Das Komische: Lasse ich das "DllProc := @DllMain" weg, lässt sich die
DLL ganz normal entladen. Damit könnte ich leben, allerdings muss ich mitbekommen, wenn die
DLL entladen wird, da ich eine
API hooken will. Diese sollte nach dem Entladen der
DLL ja auch wieder enthookt werden um AVs zu vermeiden.
Vielen Dank