Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ReflectivePluginLoader — Минимальный PE-маппер, который загружает DLL напрямую из памяти и вызывает их через чистый интерфейс плагинов, без необходимости в LoadLibrary. | Kitploit
Инструменты/GitHubGitHub/racoten/reflectivepluginloader
Оборонительные ИнструментыМеханизмы персистентностиОбратная инженерияШелл-кодПост-эксплуатацияАнализ вредоносных программОбучение и ОбразованиеRed TeamingРазработка Полезной Нагрузки

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Эксплуатация Бинарных Файлов
GitHubracoten/reflectivepluginloader

ReflectivePluginLoader

Минимальный PE-маппер, который загружает DLL напрямую из памяти и вызывает их через чистый интерфейс плагинов, без необходимости в LoadLibrary.

Репозиторий
4361211 дней назадПроверено Kitploit
Поделиться

ReflectivePluginLoader

License: MIT

Минимальный рефлективный PE-маппер с интерфейсом горячей замены плагинов для Windows x64. Отображает DLL прямо из байтового буфера в памяти, разрешает её экспорты и вызывает их через чистый ABI IPlugin, не затрагивая LoadLibrary. Сопутствующий код к посту в блоге о рефлективных загрузчиках и модульных архитектурах плагинов.

Пост в блоге

Полный разбор: Using Reflective Loaders to Replace LoadLibrary for Hot-Swappable Modules in C++

Быстрый старт

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)

Использование

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

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

Harness считывает DLL в байтовый буфер, отображает её с помощью рефлективного загрузчика, разрешает экспорты плагина и передаёт команду через интерфейс IPlugin.

Структура проекта

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

Написание собственного модуля

  1. Создайте новый каталог в Modules/.
  2. Подключите IPlugin.h и реализуйте интерфейс 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. Реализуйте пять экспортируемых функций (create_plugin, destroy_plugin, plugin_init, plugin_exec, plugin_cleanup), используя HeapAlloc/placement new для безопасного межмодульного выделения памяти с учётом CRT.

  2. Добавьте CMakeLists.txt и зарегистрируйте его в корневом CMakeLists.txt с помощью add_subdirectory().

Хосту не нужно знать, что ваш модуль делает внутри. Он отображает, разрешает, вызывает init -> execute -> cleanup и продолжает работу.

Известные ограничения

Маппер обрабатывает основы и намеренно на этом останавливается:

  • Поддерживается: базовые релокации, разрешение импортов, посекционная защита памяти
  • Не поддерживается: TLS-колбэки, delay-load импорты, форвардные экспорты, метаданные CFG, регистрация таблицы SEH

Если модулю нужно что-то из этого, либо расширьте маппер, либо отклоните модуль на раннем этапе с понятной ошибкой. Молчаливая частичная поддержка — худший режим отказа.

Ссылки

  • stephenfewer/ReflectiveDLLInjection - Оригинальный рефлективный загрузчик
  • ired.team - Reflective DLL Injection - Пошаговое руководство и PoC
  • fancycode/MemoryModule - Полнофункциональная библиотека "load DLL from memory"
  • PE Format (Microsoft) - Спецификация PE/COFF

Лицензия

MIT

Скачать инструмент