Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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
ReflectivePluginLoader — Un mapeador PE mínimo que carga DLLs directamente desde memoria y llama a una interfaz de plugin limpia, sin necesidad de LoadLibrary. | Kitploit
Herramientas/GitHubGitHub/racoten/reflectivepluginloader
Herramientas DefensivasMecanismos de PersistenciaIngeniería InversaShellcodePost-ExplotaciónAnálisis de MalwareAprendizaje y EducaciónRed TeamingDesarrollo de Payloads

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 →
Explotación de Binarios
GitHubracoten/reflectivepluginloader

ReflectivePluginLoader

Un mapeador PE mínimo que carga DLLs directamente desde memoria y llama a una interfaz de plugin limpia, sin necesidad de LoadLibrary.

Ver Repositorio
43612hace 11 díasRevisado por Kitploit
Compartir

ReflectivePluginLoader

License: MIT

Un mapeador PE reflexivo mínimo con una interfaz de plugin intercambiable en caliente para Windows x64. Mapea una DLL directamente desde un búfer de bytes en memoria, resuelve sus exportaciones y llama a una ABI IPlugin limpia sin tocar LoadLibrary. Código complementario para la entrada del blog sobre cargadores reflexivos y arquitecturas de plugins modulares.

Entrada del blog

Consulta el análisis completo: Using Reflective Loaders to Replace LoadLibrary for Hot-Swappable Modules in C++

Inicio rápido

root@kitploit:~
# Configure
cmake -B build

# Build
cmake --build build --config Release

# The build produces:
#   build/Release/cmdplugin.dll   (example plugin)
#   build/Release/harness.exe     (test harness)

Uso

root@kitploit:~
# Map cmdplugin.dll from disk, run "dir C:\"
harness.exe cmdplugin.dll "dir C:\"

# Default: loads cmdplugin.dll, runs "whoami"
harness.exe

El harness lee la DLL en un búfer de bytes, la mapea con el cargador reflexivo, resuelve las exportaciones del plugin y despacha el comando a través de la interfaz IPlugin.

Estructura del proyecto

root@kitploit:~
ReflectivePluginLoader/
├── CMakeLists.txt              # Root build
├── Include/
│   ├── IPlugin.h               # Plugin ABI (TaskApi, IPlugin, helpers)
│   └── ReflectiveLoaderEngine.h # PE mapper + export resolver
├── Modules/
│   └── CmdPlugin/
│       ├── cmdplugin.cpp        # Example: command execution plugin
│       └── CMakeLists.txt
├── Testing/
│   ├── main.cpp                 # Test harness (loads DLL from file)
│   └── CMakeLists.txt
└── Tools/
    └── file2hex.py              # Convert a DLL to a C byte array

Escribiendo tu propio módulo

  1. Crea un nuevo directorio bajo Modules/.
  2. Incluye IPlugin.h e implementa la interfaz IPlugin:
root@kitploit:~
#include "IPlugin.h"

class MyPlugin : public IPlugin {
public:
    void init() const override { /* setup */ }
    void execute(TaskApi* task) const override { /* do work */ }
    void cleanup() const override { /* teardown */ }
};
  1. Implementa las cinco funciones exportadas (create_plugin, destroy_plugin, plugin_init, plugin_exec, plugin_cleanup) usando HeapAlloc/placement new para una asignación segura entre módulos compatible con el CRT.

  2. Añade un CMakeLists.txt y regístralo en el CMakeLists.txt raíz con add_subdirectory().

El host no necesita saber qué hace tu módulo internamente. Mapea, resuelve, llama a init -> execute -> cleanup y continúa.

Limitaciones conocidas

El mapeador cubre lo básico y deliberadamente se detiene ahí:

  • Soportado: Reubicaciones base, resolución de importaciones, protecciones de memoria por sección
  • No soportado: Callbacks TLS, importaciones de carga diferida, exportaciones reenviadas, metadatos CFG, registro de tablas SEH

Si un módulo necesita alguno de estos, extiende el mapeador o rechaza el módulo desde el principio con un error claro. El soporte parcial silencioso es el peor modo de fallo.

Referencias

  • stephenfewer/ReflectiveDLLInjection - El cargador reflexivo original
  • ired.team - Reflective DLL Injection - Guía y PoC
  • fancycode/MemoryModule - Biblioteca completa de "cargar DLL desde memoria"
  • PE Format (Microsoft) - Especificación PE/COFF

Licencia

MIT

Descargar herramienta