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
Stardust — Una plantilla moderna de implante independiente de posición de 32/64 bits | Kitploit
Herramientas/GitHubGitHub/cracked5pider/stardust
ExplotaciónShellcodePost-ExplotaciónRed TeamingGeneración de ShellcodeDesarrollo de PayloadsExplotación de Binarios
GitHubcracked5pider/stardust

Stardust

Una plantilla moderna de implante independiente de posición de 32/64 bits

Ver Repositorio
1.4k217hace 2 mesesRevisado 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
Sitio web

Stardust

Una plantilla de shellcode moderna y fácil de usar para 32/64 bits.

  • cadenas sin formato
  • proyecto C++20
  • usa hashing en tiempo de compilación con fnv1a tanto para la resolución de funciones como de módulos

Uso básico

Resolución de módulos desde el PEB usando resolve::module:

root@kitploit:~
if ( ! (( ntdll.handle = resolve::module( expr::hash_string<wchar_t>( L"ntdll.dll" ) ) )) ) {
    return;
}

if ( ! (( kernel32.handle = resolve::module( expr::hash_string<wchar_t>( L"kernel32.dll" ) ) )) ) {
    return;
}

Resolución de APIs de funciones usando la macro RESOLVE_API o la función resolve::api:

root@kitploit:~
const auto user32 = kernel32.LoadLibraryA( symbol<const char*>( "user32.dll" ) );

decltype( MessageBoxA ) * msgbox = RESOLVE_API( reinterpret_cast<uintptr_t>( user32 ), MessageBoxA );

msgbox( nullptr, symbol<const char*>( "Hello world" ), symbol<const char*>( "caption" ), MB_OK );

RESOLVE_API es un envoltorio alrededor de resolve::api que automáticamente hashea el nombre de la función y convierte el puntero de función al tipo de función.

Hashing de cadenas tanto para UTF-8 como para UTF-16 usando la función expr::hash_string en tiempo de compilación:

root@kitploit:~
auto user32_hash      = expr::hash_string<wchar_t>( L"user32.dll" );
auto loadlibrary_hash = expr::hash_string<char>( "LoadLibraryA" );

Soporte de cadenas sin formato para 32/64 bits usando la función symbol:

root@kitploit:~
auto caption_string = symbol<const char*>( "hello from stardust" );

user32.MessageBoxA( nullptr, caption_string, symbol<const char*>( "message title" ), MB_OK );

Fácil añadir nuevas APIs y módulos a la instancia. Bajo include/common.h se debe hacer la siguiente entrada:

root@kitploit:~
class instance {
    ...
    
    struct
    {
        uintptr_t handle; // dirección base de user32.dll

        struct {
            D_API( MessageBoxA );
            // más entradas se pueden añadir aquí
        };
    } user32 = {
        RESOLVE_TYPE( MessageBoxA ),
        // más entradas se pueden añadir aquí 
    };
    
    ...

mientras que src/main.cc debe resolver la dirección base de user32 y resolver el puntero de la API:

root@kitploit:~

declfn instance::instance(
    void
) {
    ...
    //
    // resolver user32.dll desde el PEB si está cargado 
    if ( ! (( user32.handle = resolve::module( expr::hash_string<wchar_t>( L"user32.dll" ) ) )) ) {
        return;
    }

    //
    // resolver automáticamente cada entrada importada
    // por user32 desde la estructura 
    RESOLVE_IMPORT( user32 );
    ...
}

Capacidades de depuración semi-amigables mediante DbgPrint. El proyecto necesita ser compilado en modo debug especificando make debug. Uso:

root@kitploit:~
const auto user32 = kernel32.LoadLibraryA( symbol<const char*>( "user32.dll" ) );

if ( user32 ) {
    DBG_PRINTF( "oh wow mira, cargamos user32.dll -> %p\n", user32 );
} else {
    DBG_PRINTF( "ok algo salió mal. falló al cargar user32 :/\n" );
}

DBG_PRINTF( "ejecutando desde %ls (Pid: %d)\n",
    NtCurrentPeb()->ProcessParameters->ImagePathName.Buffer,
    NtCurrentTeb()->ClientId.UniqueProcess );

DBG_PRINTF( "shellcode @ %p [%d bytes]\n", base.address, base.length );

Compilación

Compilar en modo release:

root@kitploit:~
$ make                                                                                                                                                                                                                                                                                  20:17:26
-> compiling src/main.cc to main.x64.obj
-> compiling src/resolve.cc to resolve.x64.obj
compiling x64 project
/usr/bin/x86_64-w64-mingw32-ld: bin/stardust.x64.exe:.text: section below image base
-> compiling src/main.cc to main.x86.obj
-> compiling src/resolve.cc to resolve.x86.obj
compiling x86 project
/usr/bin/i686-w64-mingw32-ld: bin/stardust.x86.exe:.text: section below image base
$ ll bin                                                                                                                                                                                                                                                                                20:57:10
drwxr-xr-x spider spider 4.0 KB Thu Mar 13 20:57:10 2025 obj
.rw-r--r-- spider spider 752 B  Thu Mar 13 20:57:10 2025 stardust.x64.bin
.rw-r--r-- spider spider 672 B  Thu Mar 13 20:57:10 2025 stardust.x86.bin

Compilar en modo debug:

root@kitploit:~
$ make debug                                                                                                                                                                                                                                                                            20:57:14
-> compiling src/main.cc to main.x64.obj
-> compiling src/resolve.cc to resolve.x64.obj
compiling x64 project
/usr/bin/x86_64-w64-mingw32-ld: bin/stardust.x64.exe:.text: section below image base
-> compiling src/main.cc to main.x86.obj
-> compiling src/resolve.cc to resolve.x86.obj
compiling x86 project
/usr/bin/i686-w64-mingw32-ld: bin/stardust.x86.exe:.text: section below image base
$ ll bin                                                                                                                                                                                                                                                                                20:58:13
drwxr-xr-x spider spider 4.0 KB Thu Mar 13 20:58:13 2025 obj
.rw-r--r-- spider spider 1.2 KB Thu Mar 13 20:58:13 2025 stardust.x64.bin
.rw-r--r-- spider spider 1.1 KB Thu Mar 13 20:58:13 2025 stardust.x86.bin

Demo

x64: x64

x86: x86

Descargar herramienta