Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
sRDI — Implémentation en shellcode de l'injection de DLL réflective. Convertit les DLL en shellcode indépendant de la position. | Kitploit
Outils/GitHubGitHub/monoxgas/srdi
Criminalistique MémoireGénération de PayloadsExploitationÉvasion IDS/IPSShellcodePost-ExploitationTests d'IntrusionRed TeamingGénération de ShellcodeDéveloppement de Charges UtilesTop en Évasion IDS/IPS n°8
2.5k49787il y a 4 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Top en Développement de Charges Utiles n°2
Top en Génération de Payloads n°3
Top en Shellcode n°2
Top en Génération de Shellcode n°3
GitHubmonoxgas/srdi

sRDI

Implémentation en shellcode de l'injection de DLL réflective. Convertit les DLL en shellcode indépendant de la position.

Voir le dépôt

sRDI - Injection de DLL réflexive par Shellcode

sRDI permet la conversion de fichiers DLL en shellcode indépendant de la position. Il tente d'être un chargeur PE entièrement fonctionnel prenant en charge les permissions de section appropriées, les callbacks TLS et les vérifications de cohérence. On peut le considérer comme un chargeur PE en shellcode attaché à une DLL compressée.

La fonctionnalité est accomplie via deux composants :

  • Projet C qui compile une implémentation de chargeur PE (RDI) en shellcode
  • Code de conversion qui attache la DLL, le RDI et les données utilisateur ensemble avec un bootstrap

Ce projet est composé des éléments suivants :

  • ShellcodeRDI : Compile le shellcode pour le chargeur de DLL
  • NativeLoader : Convertit la DLL en shellcode si nécessaire, puis l'injecte en mémoire
  • DotNetLoader : Implémentation C# de NativeLoader
  • Python\ConvertToShellcode.py : Convertit la DLL en shellcode sur place
  • Python\EncodeBlobs.py : Encode les blobs sRDI compilés pour un embedding statique
  • PowerShell\ConvertTo-Shellcode.ps1 : Convertit la DLL en shellcode sur place
  • FunctionTest : Importe la fonction C sRDI pour les tests de débogage
  • TestDLL : Exemple de DLL qui inclut deux fonctions exportées pour un appel au chargement et après

La DLL n'a pas besoin d'être compilée avec RDI, cependant la technique est compatible croisée.

Cas d'utilisation / Exemples

Avant utilisation, je recommande de vous familiariser avec l'injection de DLL réflexive et son objectif.

Convertir une DLL en shellcode avec python

from ShellcodeRDI import *

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

Charger une DLL en mémoire avec le chargeur C#

DotNetLoader.exe TestDLL_x64.dll

Convertir une DLL avec un script python et charger avec l'EXE natif

python ConvertToShellcode.py TestDLL_x64.dll
NativeLoader.exe TestDLL_x64.bin

Convertir une DLL avec PowerShell et charger avec Invoke-Shellcode

Import-Module .\Invoke-Shellcode.ps1
Import-Module .\ConvertTo-Shellcode.ps1
Invoke-Shellcode -Shellcode (ConvertTo-Shellcode -File TestDLL_x64.dll)

Drapeaux

Le code du chargeur PE utilise l'argument flags pour contrôler les différentes options de la logique de chargement :

  • SRDI_CLEARHEADER [0x1] : L'en-tête DOS et le stub DOS de la DLL cible sont complètement effacés avec des octets nuls au chargement (sauf pour e_lfanew). Cela peut causer des problèmes avec les API Windows standard lors de la fourniture de l'adresse de base en tant que pseudo HMODULE.
  • SRDI_CLEARMEMORY [0x2] : Après avoir appelé les fonctions du module chargé (DllMain et toutes les exportations), les données de la DLL seront effacées de la mémoire. C'est dangereux si vous prévoyez de continuer à exécuter du code depuis le module (Threads / GetProcAddressR).
  • SRDI_OBFUSCATEIMPORTS [0x4] : L'ordre des importations dans le module sera randomisé avant de commencer le patchage de l'IAT. De plus, les 16 bits de poids fort du drapeau peuvent être utilisés pour stocker le nombre de secondes à patienter avant de traiter l'importation suivante. Par exemple, flags | (3 << 16) marquera une pause de 3 secondes entre chaque importation.
  • SRDI_PASS_SHELLCODE_BASE [0x8] : Contrairement à la transmission des données utilisateur fournies à la fonction exportée, sRDI passera plutôt l'adresse de base du bloc de shellcode en cours d'exécution. Cela peut être utile pour un auto-nettoyage dans des modules plus avancés.

Compilation

Ce projet est compilé avec Visual Studio 2019 (v142) et le SDK Windows 10. Le script python est écrit en Python 3.

Les scripts Python et PowerShell se trouvent à :

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

Après la compilation du projet, les autres binaires se trouveront à :

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

Si vous souhaitez mettre à jour les blobs statiques dans l'un des outils :

> 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

Alternatives

Si vous trouvez mon code dégoûtant, ou si vous cherchez simplement un projet alternatif de chargeur mémoire-PE, jetez un œil à ceux-ci :

  • https://github.com/fancycode/MemoryModule - Probablement l'un des chargeurs PE les plus propres, excellente référence.
  • https://github.com/TheWover/donut - Vous voulez convertir des assemblys .NET ? Ou du JScript ?
  • https://github.com/hasherezade/pe_to_shellcode - Génère des hybrides PE+shellcode polymorphes.
  • https://github.com/DarthTon/Blackbone - Grande bibliothèque avec de nombreuses primitives de hacking/hooking mémoire.

Crédits

La base de ce projet est dérivée de "Improved Reflective DLL Injection" par Dan Staples qui est lui-même dérivé du projet original de Stephen Fewer.

Le cadre du projet pour compiler du code C en shellcode est tiré de la recherche de Mathew Graeber "PIC_BindShell"

Télécharger l’outil