Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ReflectivePluginLoader — Un mapper PE minimal qui charge les DLL directement depuis la mémoire et appelle une interface de plugin propre, sans avoir besoin de LoadLibrary. | Kitploit
Outils/GitHubGitHub/racoten/reflectivepluginloader
Outils DéfensifsMécanismes de PersistanceRétro-ingénierieShellcodePost-ExploitationAnalyse de MalwareApprentissage et ÉducationRed TeamingDéveloppement de Charges UtilesExploitation de Binaires
GitHub
43612il y a 11 joursVérifié par Kitploit
racoten/reflectivepluginloader

ReflectivePluginLoader

Un mapper PE minimal qui charge les DLL directement depuis la mémoire et appelle une interface de plugin propre, sans avoir besoin de LoadLibrary.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

ReflectivePluginLoader

License: MIT

Un mappeur PE réflexif minimal avec une interface de plugin interchangeable à chaud pour Windows x64. Mappe une DLL directement depuis un tampon d'octets en mémoire, résout ses exports et appelle une ABI IPlugin propre sans toucher à LoadLibrary. Code d'accompagnement pour l'article de blog sur les loaders réflexifs et les architectures de plugins modulaires.

Article de blog

Voir l'article complet : Using Reflective Loaders to Replace LoadLibrary for Hot-Swappable Modules in C++

Démarrage rapide

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)

Utilisation

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

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

Le harness lit la DLL dans un tampon d'octets, la mappe avec le loader réflexif, résout les exports du plugin et distribue la commande via l'interface IPlugin.

Structure du projet

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

Écrire votre propre module

  1. Créez un nouveau répertoire sous Modules/.
  2. Incluez IPlugin.h et implémentez l'interface 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. Implémentez les cinq fonctions exportées (create_plugin, destroy_plugin, plugin_init, plugin_exec, plugin_cleanup) en utilisant HeapAlloc/placement new pour une allocation inter-modules sûre vis-à-vis du CRT.

  2. Ajoutez un CMakeLists.txt et enregistrez-le dans le CMakeLists.txt racine avec add_subdirectory().

L'hôte n'a pas besoin de savoir ce que fait votre module en interne. Il mappe, résout, appelle init -> execute -> cleanup, puis passe à autre chose.

Limitations connues

Le mappeur gère les bases et s'arrête délibérément là :

  • Pris en charge : Relocations de base, résolution des imports, protections mémoire par section
  • Non pris en charge : Callbacks TLS, imports à chargement différé, exports transmis, métadonnées CFG, enregistrement de table SEH

Si un module a besoin de l'un de ces éléments, étendez le mappeur ou rejetez le module tôt avec une erreur claire. Un demi-support silencieux est le pire mode de défaillance.

Références

  • stephenfewer/ReflectiveDLLInjection - Le loader réflexif original
  • ired.team - Reflective DLL Injection - Procédure pas à pas et PoC
  • fancycode/MemoryModule - Bibliothèque complète « load DLL from memory »
  • PE Format (Microsoft) - Spécification PE/COFF

Licence

MIT

Télécharger l’outil