was ist eine dll injection?
Hi,
also eine dll Datei ist eine Ansammlung von Code in Windows. Ein Programm benutzt diese Funktionen in der dll Dateien um beispielsweise Daten irgendwo abzulegen.
Wie kann ich mir jetzt eine .dll Injection vorstellen. Der Hacker modifiziert eine .dll Datei, damit meine Programme nicht mehr darauf zugreifen können? Oder was wird da gemacht?
Auf einer website heißt es:
A DLL injection is where code is forced to run in place of other code.
Aber was bringt das?
4 Antworten
Eine DLL-Datei enthält an sich Code, welcher dynamisch von Programmen verwendet wird. Das heißt beispielsweise, jedes Betriebssystem hat seine eigene dynamiche Bibliothek( in Windows .dll) und das Programm nutzt dann je nach Betriebssystem selbsständig die passende.
Dabei ist das Programm darauf angewiesen, dass es die dynamische Bibliothek je nach System selbstständig findet. Das kann beispielsweise dadurch bewerkstelligt werden, dass das programm beim Betriebssystem nachfragt, wo die Bibliothek liegt oder indem immer ein fester Ordner verwendet wird, in dem sich die Datei finden lässt.
Eine DLL-Injection nutzt dabei aus, dass das Programm sich darauf verlassen muss, dass die dynamische Bibliothek, die es findet, tut, was sie soll und keine Malware enthält.
Dem Angreifer gelingt es, eine dynamische Bibliothek auf dem PC auszutauschen.(Beispielsweise wenn sich ein Nutzer eine .dll-Datei von einer herstellerfremden Seite herunterlädt. Im Zusammenhang mit VCRUNTIME dürfte das öffters vorkommen).
Sobald dann ein Prozess auf diese dynamische Bibliothek zugreift, führt die dynamische Bibliothek, statt oder neben dem Code, den sie ausführen sollte, ihren eigenen Code aus und infiziert den Computer.
Destranix hat bereits eine ausführliche Antwort geschrieben, eine .dll Datei enthält kompilierten Code, der ansich geschlossen ist. Eine .dll kann auch Icons und andere Recourcen enthalten aber vorallem Funktionen auf die Programme die diese .dll referenzieren zugreifen können.
Bei einer .dll Injection wird der Bytecode ausgetauscht durch ebenfalls kompilierten code oder es wird mit einem Hexeditor an der .dll herumgepfuscht um Sprungmarken zu ändern.
Wichtig für eine erfolgreiche Injection ist, dass das Wirtprogramm keinen Fehler wirft und die .dll das zu tun scheint was sie sonnst auch macht nur vielleicht noch ein paar zusätzliche Dinge, so kann die .dll jedes Programm starten und wird von einem AV nur sehr schwer erkannt.
Hauptanwendungen von .dll Injection ist Cracken von Programmen, da die Sicherheitseinstellungen oft in der .dll ausgelagert sind.
Es ist sehr komplizert eine .dll Inection durchzuführen, da sind Kenntnisse im Decompilieren und Assembler als Disziplin von Nöten, aber wenn mann es schafft in einer Reihe von NOP Anweisungen (No OPeration 3 Systemtakte) JMP Befehle (Jump zur Adresse) einzufügen und anschiessend wieder da weiter macht wo das Programm grad war fällt nichts auf.
Danke! Fand ich ne schöne Ergänzung zum kommentar von Destranix.
Manche Cheats funktionieren so, um ein AntiCheat zu umgehen. Beim Spielstart ist alles normal aber nach der Injection wird halt Code "verändert" (anstatt vom originellen Code ausgeführt) und in den Game Files merkt man keinen Unterschied
Bei einer DLL-Injection muss Code anstelle von anderem Code ausgeführt werden.
Ja ok verstehe soweit. Diese schädliche .dll könnte im Prinzip code enthalten die den ganzen PC lahm legt nehme ich an.