Когда-то давно писал свой загрузчик DLL, но сейчас на гитхабе наткнулся на более взрослый загрузчик:GitHub - ynwarcs/MemoryModule: Library to load a DLL from memory.
Для чего это может-быть нужно:
Стандартные функции Windows API для загрузки внешних библиотек в программу (LoadLibrary, LoadLibraryEx) работают только с файлами на файловой системе. Поэтому невозможно загрузить DLL прямо из памяти.
Но иногда нужно загрузить dll из памяти, вот зачем:
1. Например есть у вас какая-то модульная архитектура, к примеру какой-то ботнет с различным функционалом, вот поставляться-же сам ботнет может просто загрузчиком, а в зависимости от задания на управляющим сервере, качать нужную зашифрованную DLL и запускать её в памяти.
2. Таким образом можно делать криптования длл.
Вот как пользоваться кодом выше, вот пример:MemoryModule/example/DllLoader/DllLoader.cpp at master · ynwarcs/MemoryModule
		C:
	
	 handle = MemoryLoadLibrary(data, size);
    if (handle == NULL)
    {
        _tprintf(_T("Can't load library from memory.\n"));
        goto exit;
    }
    addNumber = (addNumberProc)MemoryGetProcAddress(handle, "addNumbers");
    _tprintf(_T("From memory: %d\n"), addNumber(1, 2));
	В общем-то всё просто, есть интерфейсные функции:
handle=MemoryLoadLibrary(data, size) - Загрузка самого образа длл из памяти, где data это адрес в ОЗУ куда dll уже загружена (Например скачена с сети), size размер образа.
Далее уже вызывается MemoryGetProcAddress для получения адреса функции.)
	