Einzelnen Beitrag anzeigen

worker
(Gast)

n/a Beiträge
 
#21

Re: DLL-Injection mit Freelibrary

  Alt 10. Mär 2009, 13:59
Hallo,

habe zu der Routine aus Beitrag #20 mal eine Frage.

Und zwar habe ich diese Routine so bei mir implementiert.
Allerdings schmiert meine Testanwendung (Notepad) beim Aufruf der folgenden Codezeile ab:

th := createremotethread(hproc, Nil, 0, getprocaddress(getmodulehandle('kernel32.dll'), 'FreeLibrary'), Pointer(result), 0, hremthread); Die Injizierung hat vorher problemlos funktioniert.

Muss ich in der DLL noch irgendetwas implementieren?

Habe schon folgendes probiert:

Delphi-Quellcode:
Procedure DllMain(Reason: Integer);
Var
   hThread: Cardinal;
Begin
   Case Reason Of
      DLL_PROCESS_ATTACH: CreateThread(Nil, 0, TFNThreadStartRoutine(@CreateIt), Nil, 0, hThread);
      DLL_THREAD_ATTACH: ;
      DLL_THREAD_DETACH: ;
      DLL_PROCESS_DETACH: ;
   End;
End;
[...]
Begin
   DllProc := @DllMain;
   DllProc(DLL_PROCESS_ATTACH);
End.
Delphi-Quellcode:
Procedure DllMain(Reason: Integer);
Var
   hThread: Cardinal;
Begin
   Case Reason Of
      DLL_PROCESS_ATTACH: CreateThread(Nil, 0, TFNThreadStartRoutine(@CreateIt), Nil, 0, hThread);
      DLL_THREAD_ATTACH: ;
      DLL_THREAD_DETACH: ;
      DLL_PROCESS_DETACH: CreateThread(Nil, 0, TFNThreadStartRoutine(@DestroyIt), Nil, 0, hThread);
   End;
End;

Procedure DestroyIt;
Begin

   //Alte WndProc wieder zurücksetzen
   setWindowLong(xNotepad, GWL_WNDPROC, LongInt(@pWndProc));
End;
[...]
Begin
   DllProc := @DllMain;
   DllProc(DLL_PROCESS_ATTACH);
End.
Delphi-Quellcode:
Procedure DllMain(Reason: Integer);
Var
   hThread: Cardinal;
Begin
   Case Reason Of
      DLL_PROCESS_ATTACH: CreateThread(Nil, 0, TFNThreadStartRoutine(@CreateIt), Nil, 0, hThread);
      DLL_THREAD_ATTACH: ;
      DLL_THREAD_DETACH: ;
      DLL_PROCESS_DETACH: CreateThread(Nil, 0, TFNThreadStartRoutine(@DestroyIt), Nil, 0, hThread);
   End;
End;

Procedure DestroyIt;
Begin

   //Alte WndProc wieder zurücksetzen
   setWindowLong(xNotepad, GWL_WNDPROC, LongInt(@pWndProc));
FreeLibrary(HInstance);
End;
[...]
Begin
   DllProc := @DllMain;
   DllProc(DLL_PROCESS_ATTACH);
End.
Bringt aber leider alles nichts - Notepad schmiert weiterhin ab
  Mit Zitat antworten Zitat