En primer lugar, el malware normalmente no carga sus propias DLL en la memoria. Creo que confunde esto con código malintencionado de inyección de código ejecutable en otro proceso (OpenProcess (), WriteProcessMemory ()) e iniciando un nuevo hilo en ese proceso (CreateRemoteThread ()) que ejecuta ese código. Esto no tiene nada que ver con cargar una DLL en la memoria, que es mucho más difícil que simplemente ejecutar código. ¿Por qué el malware debe consistir en múltiples DLL que se cargan en la memoria? Es mucho más fácil escribir UN ejecutable de malware en lugar de múltiples DLL.
Vuelve a tu pregunta: si quieres engañar a Windows para que cargue un DLL desde la memoria, esto es algo entre una programación muy avanzada y un cracking.
Una desventaja es que no puedes usar los depuradores si algo sale mal en tu DLL.
Puede usar, por ejemplo, este código: enlace para cargar un archivo DLL en la memoria. No lo probé porque la desventaja es que debes usar funciones especiales para acceder a esa DLL en la memoria después. Por ejemplo, para leer un recurso de cadena de esa DLL, no puede usar la API de Windows habitual. Debe utilizar una función de la misma biblioteca.
Algunos problemas que ocurren se enumeran con más detalle aquí:
enlace
El autor dice que con su código su DLL no tiene un identificador de HINSTANCIA. Esto es una gran desventaja.