To inject a dll:
1, Enable debug privilege, this will be needed to create the remote thread.
OpenProcessToken LookupPrivilegeValue AdjustTokenPrivileges
2, Alloc a remote buffer in the targe process, for hold the dll name.
OpenProcess VirtualAllocEx WriteProcessMemory
3, Create a remote thread, to load the library.
::GetProcAddress(::GetModuleHandle("Kernel32"), "LoadLibraryA") CreateRemoteThread WaitForSingleObject(, INFINITE)