Ну, вы можете создать RAM-диск в соответствии с этими инструкциями , затем скопировать DLL, которую вы можете в памяти, в файл и использовать LoadLibrary ().
Конечно, это не очень практично, если вы планируете развернуть его как какой-то продукт, потому что люди заметят, что устанавливается драйвер, перезагрузка после установки и новая буква диска в разделе «Мой компьютер». Кроме того, это ничего не делает для того, чтобы на самом деле скрыть библиотеку DLL, поскольку она просто сидит на RAM-диске, чтобы все могли смотреть.
Еще одна вещь, которая меня интересует: почему вы на самом деле хотите это сделать? Возможно, ваш конечный результат может быть достигнут другими способами, помимо загрузки DLL из памяти. Например, при использовании бинарного упаковщика, такого как UPX , имеющаяся на диске DLL отличается от той, которая в конечном итоге исполняется. Сразу после нормальной загрузки DLL с помощью LoadLibrary распаковщик запускает и перезаписывает память, в которую загружается DLL, с несжатым двоичным файлом (заголовок DLL гарантирует, что выделено достаточно места)