Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
sRDI — Implementação em shellcode de injeção reflexiva de DLL. Converta DLLs em shellcode independente de posição. | Kitploit
Ferramentas/GitHubGitHub/monoxgas/srdi
Forensia de MemóriaExploraçãoShellcodePós-ExploraçãoTestes de PenetraçãoRed TeamingDesenvolvimento de Payloads
GitHubmonoxgas/srdi

sRDI

Implementação em shellcode de injeção reflexiva de DLL. Converta DLLs em shellcode independente de posição.

Ver Repositório
2.5k497há 4 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

sRDI - Injeção de DLL Refletiva em Shellcode

O sRDI permite a conversão de arquivos DLL em shellcode independente de posição. Ele tenta ser um carregador de PE totalmente funcional, suportando permissões de seção adequadas, callbacks TLS e verificações de integridade. Pode ser visto como um carregador de PE em shellcode acoplado a uma DLL compactada.

A funcionalidade é obtida por meio de dois componentes:

  • Projeto C que compila uma implementação de carregador PE (RDI) em shellcode
  • Código de conversão que anexa a DLL, o RDI e os dados do usuário com um bootstrap

Este projeto é composto pelos seguintes elementos:

  • ShellcodeRDI: Compila o shellcode para o carregador de DLL
  • NativeLoader: Converte DLL em shellcode se necessário, depois injeta na memória
  • DotNetLoader: Implementação em C# do NativeLoader
  • Python\ConvertToShellcode.py: Converte DLL em shellcode no local
  • Python\EncodeBlobs.py: Codifica blobs sRDI compilados para incorporação estática
  • PowerShell\ConvertTo-Shellcode.ps1: Converte DLL em shellcode no local
  • FunctionTest: Importa a função C do sRDI para teste de depuração
  • TestDLL: DLL de exemplo que inclui duas funções exportadas para chamada no carregamento e depois

A DLL não precisa ser compilada com RDI, no entanto a técnica é compatível entre si.

Casos de Uso / Exemplos

Antes de usar, recomendo que você se familiarize com Injeção de DLL Refletiva e seu propósito.

Converter DLL em shellcode usando python

root@kitploit:~
from ShellcodeRDI import *

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

Carregar DLL na memória usando carregador C#

root@kitploit:~
DotNetLoader.exe TestDLL_x64.dll

Converter DLL com script python e carregar com EXE nativo

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

Converter DLL com powershell e carregar com Invoke-Shellcode

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

Flags

O código do carregador PE usa o argumento flags para controlar as várias opções da lógica de carregamento:

  • SRDI_CLEARHEADER [0x1]: O Cabeçalho DOS e o Stub DOS da DLL alvo são completamente zerados com bytes nulos ao carregar (exceto para e_lfanew). Isso pode causar problemas com APIs padrão do Windows ao fornecer o endereço base como um pseudo HMODULE.
  • SRDI_CLEARMEMORY [0x2]: Após chamar funções no módulo carregado (DllMain e quaisquer exportações), os dados da DLL serão limpos da memória. Isso é perigoso se você espera continuar executando código fora do módulo (Threads / GetProcAddressR).
  • SRDI_OBFUSCATEIMPORTS [0x4]: A ordem das importações no módulo será randomizada antes de iniciar o patching da IAT. Além disso, os 16 bits superiores da flag podem ser usados para armazenar o número de segundos para pausar antes de processar a próxima importação. Por exemplo, flags | (3 << 16) pausará 3 segundos entre cada importação.
  • SRDI_PASS_SHELLCODE_BASE [0x8]: Em vez de passar os dados fornecidos pelo usuário para a função exportada, o sRDI passará o endereço base do bloco de shellcode atualmente em execução. Isso pode ser útil para auto-limpeza dentro de módulos mais avançados.

Compilação

Este projeto é compilado usando Visual Studio 2019 (v142) e Windows SDK 10. O script python é escrito em Python 3.

Os scripts Python e Powershell estão localizados em:

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

Após compilar o projeto, os outros binários estarão localizados em:

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

Se você quiser atualizar os blobs estáticos dentro de qualquer uma das ferramentas:

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

Se você achar meu código nojento, ou apenas estiver procurando um projeto alternativo de carregador PE em memória, confira alguns destes:

  • https://github.com/fancycode/MemoryModule - Provavelmente um dos carregadores PE mais limpos por aí, ótima referência.
  • https://github.com/TheWover/donut - Quer converter assemblies .NET? Ou que tal JScript?
  • https://github.com/hasherezade/pe_to_shellcode - Gera híbridos polimórficos de PE+shellcode.
  • https://github.com/DarthTon/Blackbone - Grande biblioteca com muitas primitivas de hacking/hooking de memória.

Créditos

A base deste projeto é derivada de "Improved Reflective DLL Injection" de Dan Staples, que por sua vez é derivado do projeto original de Stephen Fewer.

A estrutura do projeto para compilar código C como shellcode é tirada da pesquisa de Mathew Graeber "PIC_BindShell"

Baixar ferramenta