Функции, которые используются для загрузки модулей (LoadLibrary, LoadLibraryEx) не поддерживают загрузку модулей из памяти. Данный модуль реализует данную функцию.
Основа была взята с репозитария: https://github.com/fancycode/MemoryModule
Вносятся правки которые позволяют полноценно запускать EXE из памяти.
История:
15.02.16 - Реализована возможность указания командной строки перед запуском EntryPoint. Поток, исполняющийся внутри MemoryModule маркируется изменением значения ProcessParameters в _PEB. Производится перехват (методом импорта) некоторых важных функций для изоляции от основного процесса. !Модуль не учитывается в списке модулей процесса!
16.02.16 - Некоторые фиксы в TLS.
19.02 - Введена функция TryFreeMem и флаг bForceMemFree для "насильного" освобождения памяти в случае её занятости. !Использовать, только если основной процесс больше не будет использоваться, иначе могут быть ошибки!
Проблемы:
- При отсутствии таблицы .reloc и невозможности выделить нужную память по ImageBase запуск модуля становится невозможным.