Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sRDI — Implementazione in shellcode di Reflective DLL Injection. Converte DLL in shellcode indipendente dalla posizione. | Kitploit
Strumenti/GitHubGitHub/monoxgas/srdi
Memory ForensicsExploitShellcodePost-ExploitPenetration TestingRed TeamingSviluppo Payload
GitHubmonoxgas/srdi

sRDI

Implementazione in shellcode di Reflective DLL Injection. Converte DLL in shellcode indipendente dalla posizione.

Vedi Repository
2.5k4974 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

sRDI - Iniezione DLL Riflessiva in Shellcode

sRDI permette la conversione di file DLL in shellcode indipendenti dalla posizione. Tenta di essere un caricatore PE completamente funzionale che supporta permessi di sezione adeguati, callback TLS e controlli di integrità. Può essere pensato come un caricatore PE in shellcode legato a una DLL impacchettata.

La funzionalità è realizzata tramite due componenti:

  • Progetto C che compila un'implementazione del caricatore PE (RDI) in shellcode
  • Codice di conversione che unisce DLL, RDI e dati utente con un bootstrap

Questo progetto è composto dai seguenti elementi:

  • ShellcodeRDI: Compila shellcode per il caricatore DLL
  • NativeLoader: Converte DLL in shellcode se necessario, quindi inietta in memoria
  • DotNetLoader: Implementazione in C# di NativeLoader
  • Python\ConvertToShellcode.py: Converte DLL in shellcode sul posto
  • Python\EncodeBlobs.py: Codifica i blob sRDI compilati per l'incorporamento statico
  • PowerShell\ConvertTo-Shellcode.ps1: Converte DLL in shellcode sul posto
  • FunctionTest: Importa la funzione C di sRDI per test di debug
  • TestDLL: DLL di esempio che include due funzioni esportate per la chiamata al caricamento e dopo

La DLL non deve essere compilata con RDI, tuttavia la tecnica è cross-compatibile.

Casi d'uso / Esempi

Prima dell'uso, ti consiglio di familiarizzare con Reflective DLL Injection e il suo scopo.

Convertire DLL in shellcode usando python

root@kitploit:~
from ShellcodeRDI import *

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

Caricare DLL in memoria usando il loader C#

root@kitploit:~
DotNetLoader.exe TestDLL_x64.dll

Convertire DLL con script python e caricare con Native EXE

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

Convertire DLL con powershell e caricare con Invoke-Shellcode

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

Flag

Il codice del caricatore PE utilizza l'argomento flags per controllare le varie opzioni della logica di caricamento:

  • SRDI_CLEARHEADER [0x1]: L'intestazione DOS e lo stub DOS per la DLL target vengono completamente cancellati con byte nulli al caricamento (tranne e_lfanew). Questo potrebbe causare problemi con le API Windows standard quando si fornisce l'indirizzo di base come pseudo HMODULE.
  • SRDI_CLEARMEMORY [0x2]: Dopo aver chiamato le funzioni nel modulo caricato (DllMain e qualsiasi esportazione), i dati della DLL verranno cancellati dalla memoria. Questo è pericoloso se ci si aspetta di continuare a eseguire codice al di fuori del modulo (Thread / GetProcAddressR).
  • SRDI_OBFUSCATEIMPORTS [0x4]: L'ordine delle importazioni nel modulo verrà randomizzato prima di iniziare la patch dell'IAT. Inoltre, i 16 bit alti del flag possono essere usati per memorizzare il numero di secondi da attendere prima di elaborare l'importazione successiva. Ad esempio, flags | (3 << 16) sospenderà per 3 secondi tra ogni importazione.
  • SRDI_PASS_SHELLCODE_BASE [0x8]: Invece di passare i dati utente forniti alla funzione esportata, sRDI passerà invece l'indirizzo di base del blocco shellcode attualmente in esecuzione. Questo può essere utile per l'auto-pulizia all'interno di moduli più avanzati.

Compilazione

Questo progetto è compilato con Visual Studio 2019 (v142) e Windows SDK 10. Lo script python è scritto con Python 3.

Gli script Python e Powershell si trovano in:

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

Dopo la compilazione del progetto, gli altri binari si troveranno in:

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

Se desideri aggiornare i blob statici all'interno di uno qualsiasi degli strumenti:

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

Alternative

Se trovi il mio codice disgustoso, o stai semplicemente cercando un progetto alternativo di caricatore memory-PE, dai un'occhiata a questi:

  • https://github.com/fancycode/MemoryModule - Probabilmente uno dei caricatori PE più puliti in circolazione, ottimo riferimento.
  • https://github.com/TheWover/donut - Vuoi convertire assembly .NET? O che ne dici di JScript?
  • https://github.com/hasherezade/pe_to_shellcode - Genera ibridi polimorfici PE+shellcode.
  • https://github.com/DarthTon/Blackbone - Ampia libreria con molti primitivi di hacking/hooking della memoria.

Crediti

La base di questo progetto deriva da "Improved Reflective DLL Injection" di Dan Staples che a sua volta deriva dal progetto originale di Stephen Fewer.

Il framework del progetto per compilare codice C come shellcode è preso dalla ricerca di Mathew Graeber "PIC_BindShell"

Scarica lo strumento