I understood that In NT/2K/XP-only there's a shortcut. You can pass the functionpointer to LoadLibrary() for CreateRemoteThread() and all you have to inject is name of the DLL to be loaded. So no stub is needed for loader . It would be like:
GetProcaddress() for LoadLibrary(). Allocate memory for remote-thread storage and writeProcessMemory() the name of the DLL_to_be_loaded there. Then CreateRemoteThread() and pass the funcPointer for LoadLibrary() and address of the location where DLLname is stored. The DLLMain gets called as soon as it's loaded.