
Рефлексивная DLL-инъекция — это техника внедрения библиотек, в которой используется концепция рефлексивного программирования для загрузки библиотеки из памяти в процесс-хост.
Reflective DLL injection — это техника внедрения библиотеки, при которой используется концепция рефлексивного программирования для загрузки библиотеки из памяти в процесс-хост. Таким образом, библиотека сама отвечает за свою загрузку, реализуя минимальный загрузчик Portable Executable (PE) файлов. Она может управлять тем, как будет загружаться и взаимодействовать с хостом, при минимальном взаимодействии с хост-системой и процессом.
Внедрение работает от Windows NT4 до Windows 8 включительно, на архитектурах x86, x64 и ARM, где это применимо.
Процесс удалённого внедрения библиотеки в процесс состоит из двух этапов. Во-первых, библиотека, которую вы хотите внедрить, должна быть записана в адресное пространство целевого процесса (далее именуемого процессом-хостом). Во-вторых, библиотека должна быть загружена в этот процесс-хост таким образом, чтобы были выполнены требования времени выполнения библиотеки, такие как разрешение её импортов или перемещение её в подходящее место в памяти.
Предполагая, что у нас есть выполнение кода в процессе-хосте и библиотека, которую мы хотим внедрить, была записана в произвольное место памяти в процессе-хосте, Reflective DLL Injection работает следующим образом.
Откройте файл 'rdi.sln' в Visual Studio C++ и соберите решение в режиме Release, чтобы получить inject.exe и reflective_dll.dll
Для тестирования используйте inject.exe для внедрения reflective_dll.dll в процесс-хост по идентификатору процесса, например:
inject.exe 1234
Лицензировано по 3-пунктной лицензии BSD, подробности см. в LICENSE.txt.