
Windows 10 DLL-Injektor über Treiber, der VAD nutzt und den geladenen Treiber versteckt
Driver DLL Injector Beschreibung
Driver DLL Injector ist ein leistungsstarkes Tool, mit dem Benutzer Treiber ihrer Wahl mit ihrem bevorzugten Mapper laden können. Durch die Nutzung der Fähigkeiten eines Laders für unsignierte Treiber wie KDmapper wurde dieser Injektor für Windows 10 2004 x64-Prozesse entwickelt und getestet.
Der Treiber hookt eine Patch-Guard-sichere Funktion namens xKdEnumerateDebuggingDevices zur Kommunikation mit unserem Usermode-Prozess. Diese Methode wird von gängigen Anti-Cheat-Systemen stark erkannt. Deshalb gehen wir einen Schritt weiter und fangen einen Usermode-Thread im Kernel, um zu kommunizieren und die ursprüngliche Funktionsadresse wiederherzustellen. Dadurch werden Funktionsintegritätsprüfungen umgangen.
Der Treiber führt Folgendes aus, um zurückgelassene Spuren zu verbergen:
VAD-Manipulation: Der Treiber allokiert strategisch Speicher hinter dem „Thread-Stack“, indem er undokumentierte Virtual Address Descriptor (VAD)-Funktionen wie MiInsertChange und MiAllocVad nutzt, die nicht allgemein bekannt sind. Sobald der VAD allokiert und die DLL erfolgreich geladen ist, entfernt der Treiber den VAD aus dem VAD-Baum.
PTE-Manipulation: Um Prüfungen von NtQueryVirtualMemory zu umgehen, manipuliert der Treiber die Page Table Entries (PTEs), um die vom VAD allokierten Seiten ausführbar zu machen. Durch die Modifikation der PTEs stellt der Treiber sicher, dass der VAD nicht mit gesetztem ausführbarem (X) Bit aktualisiert wird, wodurch mögliche Einschränkungen umgangen werden.
Löschen von PiDDBCacheTable, MmUnloadedDrivers (Hash-Bucket-Liste).
Abhängig davon, welchen Manual Mapper du für den Treiber verwendest, musst du auch große Pools berücksichtigen.
Der Usermode-Prozess nutzt das Discord-Overlay, um die main-Funktion unserer DLL aufzurufen.
Der Usermode-Prozess führt Folgendes aus:
Um den Driver DLL Injector zu verwenden, führe die folgenden Schritte aus:
1. Wähle einen kompatiblen Mapper aus und installiere ihn, z. B. KDmapper.
2. Kompiliere oder baue das Driver DLL Injector-Projekt.
3. Lade den Treiber mit dem ausgewählten Mapper.
4. Starte die Testanwendung (mit aktiviertem Discord-Overlay).
5. Starte die Usermode-Anwendung und warte auf das Hello-World-Meldungsfeld.
Bei der Entwicklung dieses Projekts gab es einige Hindernisse. Dazu gehörten:
/sdl-, /GS- und der Laufzeitbibliothek auf /MT behob meine Absturzprobleme.KMODE_EXCEPTION-BSOD; behoben durch Setzen der Treibereigenschaft /GS-.ModMap - für die Demonstration der VAD-Manipulation
SkCrypt - für die Verschlüsselung
Stealthy Kernel Mode Injector - für die Treiberbasis
Poseidon - für das Fangen des Usermode-Threads im Kernel-Modus
FACE INJECTOR - für den Shellcode