Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
sRDI — Implementación en shellcode de la inyección Reflective DLL. Convierte DLLs a shellcode independiente de posición. | Kitploit
Herramientas/GitHubGitHub/monoxgas/srdi
Forensia de MemoriaExplotaciónShellcodePost-ExplotaciónPruebas de PenetraciónRed TeamingDesarrollo de Payloads
GitHubmonoxgas/srdi

sRDI

Implementación en shellcode de la inyección Reflective DLL. Convierte DLLs a shellcode independiente de posición.

Ver Repositorio
2.5k497hace 4 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

sRDI - Inyección Reflexiva de DLL en Shellcode

sRDI permite la conversión de archivos DLL a shellcode independiente de la posición. Intenta ser un cargador PE completamente funcional que admite permisos de sección adecuados, callbacks TLS y comprobaciones de integridad. Puede considerarse como un cargador PE de shellcode acoplado a una DLL empaquetada.

La funcionalidad se logra mediante dos componentes:

  • Proyecto C que compila una implementación de cargador PE (RDI) a shellcode
  • Código de conversión que une la DLL, RDI y datos de usuario con un bootstrap

Este proyecto consta de los siguientes elementos:

  • ShellcodeRDI: Compila shellcode para el cargador DLL
  • NativeLoader: Convierte DLL a shellcode si es necesario, luego inyecta en memoria
  • DotNetLoader: Implementación en C# de NativeLoader
  • Python\ConvertToShellcode.py: Convierte DLL a shellcode en el lugar
  • Python\EncodeBlobs.py: Codifica blobs compilados de sRDI para incrustación estática
  • PowerShell\ConvertTo-Shellcode.ps1: Convierte DLL a shellcode en el lugar
  • FunctionTest: Importa función C de sRDI para pruebas de depuración
  • TestDLL: DLL de ejemplo que incluye dos funciones exportadas para llamar al cargar y después

La DLL no necesita compilarse con RDI, sin embargo la técnica es compatible entre plataformas.

Casos de Uso / Ejemplos

Antes de usarlo, recomiendo familiarizarse con Reflective DLL Injection y su propósito.

Convertir DLL a shellcode usando python

root@kitploit:~
from ShellcodeRDI import *

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

Cargar DLL en memoria usando el cargador C#

root@kitploit:~
DotNetLoader.exe TestDLL_x64.dll

Convertir DLL con script python y cargar con EXE nativo

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

Convertir DLL con powershell y cargar con Invoke-Shellcode

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

Flags

El código del cargador PE usa el argumento flags para controlar las diversas opciones de la lógica de carga:

  • SRDI_CLEARHEADER [0x1]: La cabecera DOS y el stub DOS de la DLL de destino se borran completamente con bytes nulos al cargar (excepto e_lfanew). Esto podría causar problemas con las API estándar de Windows al proporcionar la dirección base como un pseudo HMODULE.
  • SRDI_CLEARMEMORY [0x2]: Después de llamar a las funciones en el módulo cargado (DllMain y cualquier exportación), los datos de la DLL se borrarán de la memoria. Esto es peligroso si espera continuar ejecutando código del módulo (Hilos / GetProcAddressR).
  • SRDI_OBFUSCATEIMPORTS [0x4]: El orden de las importaciones en el módulo se aleatorizará antes de comenzar el parcheo de IAT. Además, los 16 bits superiores del flag se pueden usar para almacenar el número de segundos de pausa antes de procesar la siguiente importación. Por ejemplo, flags | (3 << 16) pausará 3 segundos entre cada importación.
  • SRDI_PASS_SHELLCODE_BASE [0x8]: A diferencia de pasar los datos de usuario proporcionados a la función exportada, sRDI pasará la dirección base del bloque de shellcode que se está ejecutando actualmente. Esto puede ser útil para la autolimpieza dentro de módulos más avanzados.

Compilación

Este proyecto se compila con Visual Studio 2019 (v142) y Windows SDK 10. El script python está escrito en Python 3.

Los scripts de Python y Powershell se encuentran en:

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

Después de compilar el proyecto, los otros binarios se ubicarán en:

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

Si desea actualizar los blobs estáticos dentro de cualquiera de las herramientas:

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

Alternativas

Si encuentra mi código desagradable, o simplemente busca un proyecto alternativo de cargador PE en memoria, eche un vistazo a algunos de estos:

  • https://github.com/fancycode/MemoryModule - Probablemente uno de los cargadores PE más limpios que existen, gran referencia.
  • https://github.com/TheWover/donut - ¿Quiere convertir ensamblados .NET? ¿O quizás JScript?
  • https://github.com/hasherezade/pe_to_shellcode - Genera híbridos polimórficos de PE+shellcode.
  • https://github.com/DarthTon/Blackbone - Biblioteca grande con muchas primitivas de hacking/hooking de memoria.

Créditos

La base de este proyecto se deriva de "Improved Reflective DLL Injection" de Dan Staples que a su vez se deriva del proyecto original de Stephen Fewer.

El marco del proyecto para compilar código C como shellcode está tomado de la investigación de Mathew Graeber "PIC_BindShell"

Descargar herramienta