Sollte ich jedoch wirklich nur
VirtualAlloc durch
VirtualAllocEx austauschen müssen, wie von brechi beschrieben, werde ich dies wohl tun.
Damit ist es ja nicht getan. Du musst auch alle direkten Speicherzugriffe (z.b. beim Anwenden der Relocations, etc) durch ReadProcessMemory/WriteProcessMemory ersetzen (oder du nimmst halt NtMapViewOfSection; damit kannst du den selben Speicherbereich gleichzeitig in deinen eigenen und in den Zielprozess mappen).
IAT auflösen und DllMain ausführen dann per CreateRemoteThread.