In der Informatik bezeichnet DLL-Injection eine Technik, mit der man Code im Adressraum eines anderen Prozesses zur Ausführung bringt, indem man diesen Prozess zwingt, eine programmfremde Dynamic Link Library (DLL) zu laden. Im Prinzip ist diese Technik bei allen Betriebssystemen verfügbar, die dynamische Bibliotheken unterstützen, der Begriff DLL-Injection bezieht sich jedoch gewöhnlich auf das Betriebssystem Microsoft Windows.

Diese Technik wird nur benötigt, wenn der Quellcode eines Programms, dessen Verhalten man beeinflussen möchte, nicht verfügbar ist. Somit wird DLL-Injection häufig von sogenannten Third-Party Anbietern genutzt, um das Verhalten eines Programms in einer Weise anzupassen, die vom Entwickler des ursprünglichen Programms nicht vorgesehen wurde. Ein typisches Beispiel für eine die Technik der DLL-Injection nutzende Anwendung ist ein Profiler.

Verfügbare Techniken unter Windows

Bearbeiten

Unter Microsoft Windows gibt es verschiedene Techniken, eine DLL-Injection zu bewerkstelligen. Die wichtigsten sind dabei folgende:

  • Windows-Registry: In der Registrierung (registry) können unter dem key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs" DLLs angegeben werden, die global bei dem Start jedes Programms zusätzlich geladen werden.
  • Hooks: Durch die Nutzung von Windows-Hooks ist es möglich, eigene DLLs an fremde Prozesse (sowohl selektiv, als auch global) anzuhängen. Zusätzlich lassen sich mithilfe dieser Technik gleich bestimmte Programmaktionen abfangen/verhindern (siehe Windows-Hooks).
  • CreateRemoteThread: Die CreateRemoteThread API ermöglicht es, einen Thread von einer beliebigen Speicheradresse mit der Übergabe eines Arguments zu starten. Dadurch ist es möglich, bei Aufruf der Speicheradresse, in welcher die LoadLibrary API eines Prozesses liegt, mit dem Argument des zu ladenden DLL-Namens diese DLL in einen fremden Prozess zu laden.
  • Direkter Speicherzugriff: Mithilfe der Windows-Funktionen AllocMemory und WriteMemory ist es möglich, direkt auf den Speicher fremder Prozesse zuzugreifen. So lässt sich neuer Speicher (AllocMemory) anfordern und in diesen eine eigene Funktion zum Nachladen der eigenen DLL schreiben.
  • Durch Nutzung von Betriebssystemfunktionen (APIs) zur Manipulation von Prozessen (process manipulations functions) kann das Nachladen einer zusätzlichen DLL erreicht werden.

Nutzung durch bösartige Software

Bearbeiten

Die Nutzung von DLL-Injection ist für bösartige Software sehr attraktiv. Diese Technik ermöglicht es, Code unter dem Deckmantel eines anderen Programms auszuführen. Dies ist deshalb interessant, da dadurch Zugriffe auf das Internet vor einer Desktop-Firewall verschleiert werden können. Hierüber können beispielsweise auf dem infizierten Computer ausgespähte Passwörter unbemerkt versendet werden. Um diesem Problem zu begegnen, versuchen einige Desktop-Firewalls, durch eine Analyse des Systems eine DLL-Injection zu erkennen, was ihnen jedoch nicht immer gelingt.

Gegenmaßnahmen

Bearbeiten
  • Auf geschützte Prozesse (protected process, mit Windows Vista für den Protected Media Path eingeführt) kann nicht zugegriffen werden, sofern der schreibende Prozess nicht auch ein geschützter Prozess ist

Literatur

Bearbeiten
  • Jeffrey Richter: Programming Applications for Microsoft Windows. 4th edition. Microsoft Press, Redmond WA 1999, ISBN 1-57231-996-8 (Microsoft Programming Series).

📚 Artikel Terkait di Wikipedia

HP-85

zur Anlagensteuerung verwendet wurde. Der Computer hatte die Fähigkeiten der HP 9800 Serie Schreibtisch-Computer mit einem integrierten Monitor. Bei kleineren

Perl (Programmiersprache)

erstmals den Umschlag des auch als Kamelbuch bekannten Referenzwerkes Programming Perl. Sein Verleger (Tim O’Reilly) sagte in einem Interview scherzhaft

Jingle

Climbing the Charts, 2012, S. 73. David T. MacFarland: Future Radio Programming Strategies, 1997, S. 67. PAMS: Custom Jingle Maker, Billboard-Magazin

AI-Alignment

Goodman, Leigh Sheneman, Leonardo Trujillo, Bill Worzel (Hrsg.): Genetic Programming Theory and Practice XVII. Genetic and Evolutionary Computation. Springer

Futurama/Staffel 3

selbst in Bender auf Tour Coolio als Kwanzaabot in Alle Jahre wieder Jan Hooks als Angleyne in Bender – bis über beide Ohren Lucy Liu als sie selbst in

Young-Tableau

the hook-length formula. In: J. Algorithms. Band 3, 1982, S. 317–343, doi:10.1016/0196-6774(82)90029-3.  D. E. Knuth: The Art of Computer Programming. Band 3

Sebastian Engell

Chemieingenieurwesen. Im Jahr 2024 ist er Chair of the Advisory and Programming Group (APG) von A.SPIRE. (Quellen:) Sebastian Engell wurde 1954 in Düsseldorf

Lovesexy (Album)

erscheinen unauffällig. Zudem wirken die rhythmischen Elemente und das Drum-Programming weniger einfallsreich als in früheren Songs. Das zentrale Thema der Liedtexte