Código
void inyectar(const char * dll, const char * proceso){ DWORD pId = pID(proceso); HANDLE hProceso = OpenProcess(PROCESS_ALL_ACCESS, false, pId); printf("DLL a inyectar: %s\nProceso: %d-%s\n", dll, pId,proceso); if(hProceso != NULL){ LPVOID nLoadLibrary = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA"); if(nLoadLibrary == NULL) printf("LoadLibrary error\n."); LPVOID remoto = VirtualAllocEx(hProceso, NULL, strlen(dll), MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE); if(remoto == NULL) printf("Error reservando la memoria.\n"); WriteProcessMemory(hProceso, (LPVOID)remoto, dll, strlen(dll), NULL); CreateRemoteThread(hProceso, NULL, NULL, (LPTHREAD_START_ROUTINE)nLoadLibrary, (LPVOID)remoto, NULL, NULL); CloseHandle(hProceso); } }