Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
sRDI — Shellcode-Implementierung von Reflektierender DLL-Injektion. Wandelt DLLs in positionsunabhängigen Shellcode um. | Kitploit
Tools/GitHubGitHub/monoxgas/srdi
SpeicherforensikExploitationShellcodePost-ExploitationPenetrationstestsRed TeamingPayload-Entwicklung
GitHubmonoxgas/srdi

sRDI

Shellcode-Implementierung von Reflektierender DLL-Injektion. Wandelt DLLs in positionsunabhängigen Shellcode um.

Repository anzeigen
2.5k497vor 4 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

sRDI - Shellcode Reflektive DLL-Injektion

sRDI ermöglicht die Konvertierung von DLL-Dateien in positionsunabhängigen Shellcode. Es versucht, ein voll funktionsfähiger PE-Lader zu sein, der korrekte Abschnittsberechtigungen, TLS-Callbacks und Plausibilitätsprüfungen unterstützt. Man kann es sich als einen Shellcode-PE-Lader vorstellen, der an eine gepackte DLL geschnallt ist.

Die Funktionalität wird über zwei Komponenten realisiert:

  • C-Projekt, das eine PE-Lader-Implementierung (RDI) zu Shellcode kompiliert
  • Konvertierungscode, der die DLL, RDI und Benutzerdaten zusammen mit einem Bootstrap verbindet

Dieses Projekt besteht aus folgenden Elementen:

  • ShellcodeRDI: Kompiliert Shellcode für den DLL-Lader
  • NativeLoader: Konvertiert DLL bei Bedarf in Shellcode und injiziert ihn dann in den Speicher
  • DotNetLoader: C#-Implementierung von NativeLoader
  • Python\ConvertToShellcode.py: Konvertiert DLL vor Ort in Shellcode
  • Python\EncodeBlobs.py: Kodiert kompilierte sRDI-Blobs für statische Einbettung
  • PowerShell\ConvertTo-Shellcode.ps1: Konvertiert DLL vor Ort in Shellcode
  • FunctionTest: Importiert die sRDI-C-Funktion zum Debug-Testen
  • TestDLL: Beispiel-DLL, die zwei exportierte Funktionen für den Aufruf beim Laden und danach enthält

Die DLL muss nicht mit RDI kompiliert sein, die Technik ist jedoch kreuzkompatibel.

Anwendungsfälle / Beispiele

Vor der Verwendung empfehle ich, sich mit Reflective DLL Injection und dessen Zweck vertraut zu machen.

Konvertieren einer DLL in Shellcode mit Python

root@kitploit:~
from ShellcodeRDI import *

dll = open("TestDLL_x86.dll", 'rb').read()
shellcode = ConvertToShellcode(dll)

Laden einer DLL in den Speicher mit dem C#-Lader

root@kitploit:~
DotNetLoader.exe TestDLL_x64.dll

Konvertieren einer DLL mit Python-Skript und Laden mit der nativen EXE

root@kitploit:~
python ConvertToShellcode.py TestDLL_x64.dll
NativeLoader.exe TestDLL_x64.bin

Konvertieren einer DLL mit PowerShell und Laden mit Invoke-Shellcode

root@kitploit:~
Import-Module .\Invoke-Shellcode.ps1
Import-Module .\ConvertTo-Shellcode.ps1
Invoke-Shellcode -Shellcode (ConvertTo-Shellcode -File TestDLL_x64.dll)

Flags

Der PE-Ladercode verwendet das Argument flags, um die verschiedenen Optionen der Ladelogik zu steuern:

  • SRDI_CLEARHEADER [0x1]: Der DOS-Header und DOS-Stub der Ziel-DLL werden beim Laden vollständig mit Nullbytes überschrieben (außer e_lfanew). Dies kann bei der Verwendung von Standard-Windows-APIs Probleme verursachen, wenn die Basisadresse als Pseudo-HMODULE übergeben wird.
  • SRDI_CLEARMEMORY [0x2]: Nach dem Aufruf von Funktionen im geladenen Modul (DllMain und alle Exporte) werden die DLL-Daten aus dem Speicher gelöscht. Dies ist gefährlich, wenn Sie erwarten, weiterhin Code aus dem Modul auszuführen (Threads / GetProcAddressR).
  • SRDI_OBFUSCATEIMPORTS [0x4]: Die Reihenfolge der Importe im Modul wird vor dem Start der IAT-Patchung randomisiert. Zusätzlich können die oberen 16 Bits des Flags verwendet werden, um die Anzahl der Sekunden zu speichern, die vor der Verarbeitung des nächsten Imports pausiert werden soll. Beispiel: flags | (3 << 16) pausiert 3 Sekunden zwischen jedem Import.
  • SRDI_PASS_SHELLCODE_BASE [0x8]: Anstatt die übergebenen Benutzerdaten an die exportierte Funktion zu übergeben, übergibt sRDI stattdessen die Basisadresse des aktuell ausgeführten Shellcode-Blocks. Dies kann zur Selbstbereinigung innerhalb komplexerer Module nützlich sein.

Bauen

Dieses Projekt wird mit Visual Studio 2019 (v142) und Windows SDK 10 erstellt. Das Python-Skript ist mit Python 3 geschrieben.

Die Python- und PowerShell-Skripte befinden sich unter:

  • Python\ConvertToShellcode.py
  • PowerShell\ConvertTo-Shellcode.ps1

Nach dem Bauen des Projekts befinden sich die anderen Binärdateien unter:

  • bin\NativeLoader.exe
  • bin\DotNetLoader.exe
  • bin\TestDLL_<arch>.dll
  • bin\ShellcodeRDI_<arch>.bin

Wenn Sie die statischen Blobs in einem der Tools aktualisieren möchten:

root@kitploit:~
> python .\lib\Python\EncodeBlobs.py -h
usage: EncodeBlobs.py [-h] solution_dir

sRDI Blob Encoder

positional arguments:
  solution_dir  Solution Directory

optional arguments:
  -h, --help    show this help message and exit

> python lib\Python\EncodeBlobs.py C:\code\srdi

[+] Updated C:\code\srdi\Native/Loader.cpp
[+] Updated C:\code\srdi\DotNet/Program.cs
[+] Updated C:\code\srdi\Python/ShellcodeRDI.py
[+] Updated C:\code\srdi\PowerShell/ConvertTo-Shellcode.ps1

Alternativen

Wenn Sie meinen Code abscheulich finden oder einfach ein alternatives Speicher-PE-Lader-Projekt suchen, schauen Sie sich einige dieser an:

  • https://github.com/fancycode/MemoryModule - Wahrscheinlich einer der saubersten PE-Lader überhaupt, eine großartige Referenz.
  • https://github.com/TheWover/donut - .NET-Assemblys konvertieren? Oder vielleicht JScript?
  • https://github.com/hasherezade/pe_to_shellcode - Erzeugt polymorphe PE+Shellcode-Hybride.
  • https://github.com/DarthTon/Blackbone - Große Bibliothek mit vielen Speicher-Hacking/Hooking-Primitiven.

Danksagungen

Die Grundlage dieses Projekts stammt von "Improved Reflective DLL Injection" von Dan Staples, das wiederum vom ursprünglichen Projekt von Stephen Fewer abgeleitet ist.

Das Projekt-Framework zum Kompilieren von C-Code als Shellcode stammt aus Mathew Graeber's Forschung "PIC_BindShell"

Tool herunterladen