![]() |
Suche: Tutorial zu Dll Injection
ich suche nen tutorial zu dll injection für delphi
hab bis jetzt nur das gefunden: ![]() und das is für c++ und davon hab ich keine ahnung ich will keine fertige unit die hab ich selber schon gefunden |
Re: Suche: Tutorial zu Dll Injection
Tutorials dafür hab ich leider keins parat, aber vielleicht hilft dir ein Projekt dafür weiter?
![]() Willst du genau wissen wie es funktioniert oder willst du es "nur" anwenden? Ist zweiteres der Fall kann ich dir die ![]() |
Re: Suche: Tutorial zu Dll Injection
ich verstehe lieber die funktionsweise von etwas bevor ich es benutze
|
Re: Suche: Tutorial zu Dll Injection
Zitat:
ciao, Philipp |
Re: Suche: Tutorial zu Dll Injection
Zitat:
*angeguckt hat* Na wenn das nicht zum Verstehen reicht. :gruebel: |
Re: Suche: Tutorial zu Dll Injection
jo der comment hat geholfen denke ich habs jetzt verstanden
|
Re: Suche: Tutorial zu Dll Injection
Die CRT-Methode verursacht Probleme bei Programmen (32-Bit) die unter WoW64 (Win32-Emulator von Windows x64) laufen.
Da EliCZ den Quelltext nicht veröffentlicht hat, solltest Du _vorher_ Abfragen, ob der Zielprozess 64-Bit ist... |
Re: Suche: Tutorial zu Dll Injection
Im Delphi-Forum gibt es glaube ich einen wunderschönen Thread dazu!
Edit: ![]() |
Re: Suche: Tutorial zu Dll Injection
Zitat:
|
Re: Suche: Tutorial zu Dll Injection
warum?
|
Re: Suche: Tutorial zu Dll Injection
Zitat:
|
Re: Suche: Tutorial zu Dll Injection
Zitat:
Bye |
Re: Suche: Tutorial zu Dll Injection
Zitat:
Ich habe anno dazumal mit einem befreundeten Entwickler an einer eigenen Implementation gearbeitet. Die Methode ist letztendlich der von Madshi ziemlich ähnlich (ich habe kurz danach Madshis Quellen erworben). EliCZ ist der Nickname von ![]() ![]() |
Re: Suche: Tutorial zu Dll Injection
Die einfachste Methode is meiner Neinung nach einen Denkanstos werfe ich einfach einen Hook in den Raum.
Vorraussetzung: Ich kenne den Namen der EXE in die Injiziert werden soll. Verfahren: 1. Einen Messagehook aufsetzen:
Code:
2.1 Im Hook selbst wird bereits gemacht
Irgendwas := SetWindowsHookEx(WH_GETMESSAGE, @MsgHook, hInstance, 0);
Code:
2.2 Im Hook wird der zu injizierende Code nachgeladen.
function MsgHook(Code: Longint; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
if (extractexename(getcommandline)='MEINEXENAME.EXE') then begin : code hier : end; Result := CallNextHookEx(msghookc, Code, wParam, lParam);
Code:
Als Schmankerl stelle ich dann noch folgende Procdeduren zur Verfügung.
function MsgHook(Code: Longint; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
if ((extractexename(getcommandline)='MEINEXENAME.EXE')) and (pruefung=false) then begin hinstance := Loadlibrary ('INJIZIERTE.DLL'); end; Result := CallNextHookEx(msghookc, Code, wParam, lParam);
Code:
Gruß
Procedure WriteSecureBuffer(Addr: DWord; Data: Pointer; Len: Word);
Var Written: DWord; ToPos : Pointer; begin ToPos:= Pointer(Addr); WriteProcessMemory(GetCurrentProcess, ToPos, Data, Len, Written); end; procedure MakeJump(ZielAddr, JumpAddr, NOPS: DWord); Var Buffer : Array[1..5] of Byte; Data : DWord; X : Byte; begin Data:= ZielAddr - (JumpAddr + 5); Move(Data, Buffer[2], 4); Buffer[1]:= $E9; WriteSecureBuffer(JumpAddr, @Buffer, 5); For X:= 1 to NOPS do WriteSecureByte(JumpAddr + 4 + X, $90); end; Martin |
Re: Suche: Tutorial zu Dll Injection
Zitat:
Zitat:
Zitat:
|
Re: Suche: Tutorial zu Dll Injection
Zitat:
prozessweit würde auch reichen oder? //EDIT: Habs jetzt mit nem prozessweiten Message-Hook hinbekommen. Diese Sachen mit VirtualAllocEx und Co. hab ich nie wirklich hinbekommen. Zu dem Punkt dass das Fenster die Nachrichten erst beim durch Focus empfängt: Trat bei mir nur bei SendMessage() auf, bei PostMessage() nicht. |
Re: Suche: Tutorial zu Dll Injection
Liste der Anhänge anzeigen (Anzahl: 1)
So ... ich hab mir jetzt kurzerhand meine eigene DLL-Injektions Library geschrieben (vorallem für ein Jugend forscht Projekt). Sie läuft (bisher) nur unter NT-Systemen, aber dort eigentlich recht stabil (laut meinen tests ;) ).
Die Library kann Dll's injezieren, und auch wieder uninjezieren. Wer will kann sie sich ja mal anschauen, und ggf. auch kritisieren (aber bitte nur konstruktive Kritik). Für den Fall, dass jemand den Code der RemoteThreads Debuggen will, den Kommentar des defines (break_in_remotethread) ganz oben aufheben & neucompilieren (dann wird in jedem RemoteThread ein "hartgecodeter" Breakpoint aufgerufen). Ich denke, dass ich das ganze einigermaßen verständlich kommentiert habe, also könnte es auch als "Tutorial" dienen. Dazu sollte man sich aber zmd. mit den Grundlagen von Assembler auskennen. ciao, Philipp |
Re: Suche: Tutorial zu Dll Injection
Zitat:
Der Trick bei CreateRemoteThread besteht ja darin, dass die TThreadFunc aufrufkompatibel zu LoadLibrary ist. Das heisst, dass Du per CreateRemoteThread einen Thread an der Adresse von LoadLibrary erzeugst und als 'Thread'-Parameter die Adresse des Dateinamens im entfernten Prozess angibst. Und das schöne darin ist, dass man anhand des ExitCodes des Threads (= Rückgabe von LoadLibrary) feststellen kann, ob das Laden erfolgreich war. Das gleiche gilt für FreeLibrary. ps: wie oben schon erwähnt, sollte man nicht versuchen aus einem 32-Bit Programm einen RemoteThread in einem 64-Bit Prozess zu erzeugen, da sich die LoadLibrary-Funktion dort an einer anderen Adresse befindet (man müsste also die Adresse aus der 64-Bit-Version der kernel32.dll auslesen - nicht sonderlich trivial). |
Re: Suche: Tutorial zu Dll Injection
Zitat:
Hmm ... naja, wie auch immer, es war mal interessant soetwas zu programmieren ... ^^ ... und es ist ja nicht "falsch" ;) Zitat:
BTW, wie kann ich herausfinden, ob ich einen 64-Bit Prozess vor mir hab? Andere Frage, wie schauts da eigentlich bei .NET Programmen aus? Ich mein, die arbeiten doch nicht mehr mit DLL's, oder? ciao, Philipp |
Re: Suche: Tutorial zu Dll Injection
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Suche: Tutorial zu Dll Injection
Zitat:
Zitat:
ciao, Philipp |
Re: Suche: Tutorial zu Dll Injection
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz