Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

AW: DLL Injection von Memory in anderen Prozess

  Alt 27. Jul 2015, 10:49
Ja, du musst per CreateRemoteThread die DllMain ausführen. Das Offset dazu findest du in den ImageNtHeaders unter dem Namen EntryPoint. Prototyp ist folgender:
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

Beim Laden nimmst du DLL_PROCESS_ATTACH als fdwReason und beim Entladen DLL_PROCESS_DETACH. Korrekterweise müsste man auch noch DLL_THREAD_ATTACH und DLL_THREAD_DETACH implementieren (ist zumindest bei manchen DLLs erforderlich, die manuell TLS benutzen), aber dazu benötigt man entweder Hooks in der DLL selbst oder eine zweite "normal" geladene DLL, mit der man die Events weiterleiten kann. Dürfte in den meisten Fällen allerdings nicht nötig sein, also probier es ruhig erstmal ohne.

Brechis Code sollte ja irgendwo auch die WinMain (ebenfalls über das EntryPoint Feld referenziert) ausführen (welche allerdings einen anderen Prototypen hat!). Die Stelle änderst du so um, dass sie der DllMain mit passendem Parameter entspricht.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat