PA>Я получаю в итоге в памяти 200кБ-ный массив (т.е. расшифрованную DLL),
PA>как теперь дать системе понять, что это DLL?
Это далеко не DLL. Кто отрезовит импорты? Кто обработает релоки? Кто, в конце концов, развернет секции PE-файла по тем смещениям, по которым они должны располагаться?
Дисковый образ PE-файла не эквивалентен образу развернутого PE-файла в памяти.
Варианта 2-а:
пишите свой загрузчик (есть примеры, можно нагуглить).
Минусы: трудоемко и может не заработать после очередного обновления ОС
берите open-source упаковщик (UPX, например) и заменяйте в нем функцию упаковки на функцию шифрования.
Минусы: DLL останется DLL'кой (заголовок и т.п.), но содержимое будет скрыто