pues puede que sea el AV, porque yo tengo tambien lo de la inyeccion y le paso a openprocess y CreateRemoteThread los mismos parametros
if ((hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid)) == NULL){
printf("Acceso denegado al abrir %x\n",dwPid);
return false;
};
if (CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE)(((char*)NewShellCode)+sizeof(LoaderParam)), NewShellCode, 0, NULL) == NULL)
return false;