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

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

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

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

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

Категории

Все категории
Loading categories
ReflectiveDLLInjection — Рефлексивная DLL-инъекция — это техника внедрения библиотек, в которой используется концепция рефлексивного программирования для загрузки библиотеки из памяти в процесс-хост. | Kitploit
Инструменты/GitHubGitHub/stephenfewer/reflectivedllinjection
Криминалистика памятиЭксплуатацияПост-эксплуатацияRed TeamingРазработка Полезной Нагрузки
GitHubstephenfewer/reflectivedllinjection

ReflectiveDLLInjection

Рефлексивная DLL-инъекция — это техника внедрения библиотек, в которой используется концепция рефлексивного программирования для загрузки библиотеки из памяти в процесс-хост.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
3.4k817414 лет назадПроверено Kitploit

About

Reflective DLL injection — это техника внедрения библиотеки, при которой используется концепция рефлексивного программирования для загрузки библиотеки из памяти в процесс-хост. Таким образом, библиотека сама отвечает за свою загрузку, реализуя минимальный загрузчик Portable Executable (PE) файлов. Она может управлять тем, как будет загружаться и взаимодействовать с хостом, при минимальном взаимодействии с хост-системой и процессом.

Внедрение работает от Windows NT4 до Windows 8 включительно, на архитектурах x86, x64 и ARM, где это применимо.

Overview

Процесс удалённого внедрения библиотеки в процесс состоит из двух этапов. Во-первых, библиотека, которую вы хотите внедрить, должна быть записана в адресное пространство целевого процесса (далее именуемого процессом-хостом). Во-вторых, библиотека должна быть загружена в этот процесс-хост таким образом, чтобы были выполнены требования времени выполнения библиотеки, такие как разрешение её импортов или перемещение её в подходящее место в памяти.

Предполагая, что у нас есть выполнение кода в процессе-хосте и библиотека, которую мы хотим внедрить, была записана в произвольное место памяти в процессе-хосте, Reflective DLL Injection работает следующим образом.

  • Управление передаётся, либо через CreateRemoteThread(), либо через крошечный bootstrap-шеллкод, функции ReflectiveLoader библиотеки, которая является экспортируемой функцией, находящейся в таблице экспорта библиотеки.
  • Поскольку образ библиотеки в данный момент находится в произвольном месте памяти, ReflectiveLoader сначала вычислит текущее местоположение своего собственного образа в памяти, чтобы иметь возможность проанализировать свои собственные заголовки для дальнейшего использования.
  • Затем ReflectiveLoader проанализирует таблицу экспорта kernel32.dll процесса-хоста, чтобы вычислить адреса трёх функций, необходимых загрузчику, а именно LoadLibraryA, GetProcAddress и VirtualAlloc.
  • Теперь ReflectiveLoader выделит непрерывную область памяти, в которую он приступит к загрузке своего собственного образа. Местоположение не важно, так как загрузчик позже корректно переместит образ.
  • Заголовки и секции библиотеки загружаются в их новые места в памяти.
  • Затем ReflectiveLoader обработает вновь загруженную копию таблицы импорта своего образа, загружая любые дополнительные библиотеки и разрешая адреса их соответствующих импортируемых функций.
  • Затем ReflectiveLoader обработает вновь загруженную копию таблицы перемещений своего образа.
  • Затем ReflectiveLoader вызовет функцию точки входа своего вновь загруженного образа, DllMain с DLL_PROCESS_ATTACH. Библиотека теперь успешно загружена в память.
  • Наконец, ReflectiveLoader вернёт управление исходному bootstrap-шеллкоду, который вызвал его, или, если он был вызван через CreateRemoteThread, поток завершится.

Build

Откройте файл 'rdi.sln' в Visual Studio C++ и соберите решение в режиме Release, чтобы получить inject.exe и reflective_dll.dll

Usage

Для тестирования используйте inject.exe для внедрения reflective_dll.dll в процесс-хост по идентификатору процесса, например:

inject.exe 1234

License

Лицензировано по 3-пунктной лицензии BSD, подробности см. в LICENSE.txt.

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