
Reflektive DLL-Injektion ist eine Bibliotheks-Injektionstechnik, bei der das Konzept der reflektiven Programmierung genutzt wird, um das Laden einer Bibliothek aus dem Speicher in einen Host-Prozess durchzuführen.
Reflective DLL Injection ist eine Bibliotheks-Injektionstechnik, bei der das Konzept der reflektiven Programmierung eingesetzt wird, um das Laden einer Bibliothek aus dem Speicher in einen Host-Prozess durchzuführen. Dabei ist die Bibliothek selbst dafür verantwortlich, sich zu laden, indem sie einen minimalen Portable-Executable-(PE)-Dateilader implementiert. Sie kann dann mit minimaler Interaktion mit dem Host-System und -Prozess steuern, wie sie sich lädt und mit dem Host interagiert.
Die Injektion funktioniert von Windows NT4 bis einschließlich Windows 8, auf x86, x64 und ARM, wo zutreffend.
Der Prozess des Ferninjizierens einer Bibliothek in einen Prozess ist zweigeteilt. Erstens muss die Bibliothek, die Sie injizieren möchten, in den Adressraum des Zielprozesses geschrieben werden (im Folgenden als Host-Prozess bezeichnet). Zweitens muss die Bibliothek so in diesen Host-Prozess geladen werden, dass die Laufzeiterwartungen der Bibliothek erfüllt werden, wie das Auflösen ihrer Importe oder das Verschieben an einen geeigneten Speicherort.
Angenommen, wir haben Codeausführung im Host-Prozess und die zu injizierende Bibliothek wurde an einen beliebigen Speicherort im Host-Prozess geschrieben, funktioniert Reflective DLL Injection wie folgt.
Öffnen Sie die Datei 'rdi.sln' in Visual Studio C++ und erstellen Sie die Projektmappe im Release-Modus, um inject.exe und reflective_dll.dll zu erzeugen.
Zum Testen verwenden Sie inject.exe, um reflective_dll.dll über eine Prozess-ID in einen Host-Prozess zu injizieren, z. B.:
inject.exe 1234
Lizenziert unter einer 3-Klausel-BSD-Lizenz, siehe LICENSE.txt für Details.