Optimalerweise wäre es jedoch folgendermaßen:
Programm (exe) läd eine
Dll direkt in einen Zielprozess ohne Zwischen-
DLL und ohne Zwischen-Speichern auf Festplatte.
Warum darf die
Dll nicht auf der Festplatte zwischengespeichert werden?
Du kannst die
Dll auch direkt aus deiner Resource in den Zielprozess mappen, aber das ist nicht wirklich trivial und erfordert viel Wissen über das
PE Format und die Funktionsweise des Windows Loaders. Hatte vor Ewigkeiten mal eine "Manual Mapping" Library geschrieben, die Dlls direkt aus einer Resource laden konnte (nur im eigenen Prozess). Es ist aber auch möglich direkt in einen Zielprozess zu mappen.
Mapping der Sections mit NtCreateSection, NtMapViewOfSection, (evtl. VirtualProtect, wenn du die Section Protections korrekt setzen willst), danach musst du Relocations parsen und anwenden, die IAT auflösen (indem du einen kleinen Loader im Zielprozess ausführst z.b. mit CreateRemoteThread), TLS ausführen, DllMain ausführen, ggfls. noch
Exception Tables laden (64 Bit) und noch viele weitere kleine Dinge.
Alles in allem den Aufwand nicht wert denke ich