Nunja, sicher, daß kernel32.dll bereits geladen ist, wenn Du versuchst zu injecten? Das würde erklären wieso es "plötzlich" funktioniert, sobald Du einen Moment wartest. Die Wahrscheinlichkeit ist höher, daß die
DLL geladen wurde
.
Generell soll Deine Funktion ja die
DLL laden, sobald der Prozess gestartet wurde. Entsprechend würde ich eher den EP des neuen Prozesses überschreiben mit nem einfachen LdrLoadDll. LdrLoadDll weil NTDLL.DLL die einzige
DLL ist, die wirklich in jedem Prozess geladen ist. KERNEL32.DLL ist zwar in den meisten, aber noch längst nicht allen Prozessen vorhanden
.