Hallo,
ich möchte den Aufruf an die folgenden
API-Funktionen überwachen
CreateProcess
CreateProcessA
CreateProcessW
CreateProcessAsUser
CreateProcessAsUserA
CreateProcessAsUserW
CreateProcessWithLogonW
LoadLibrary
LoadLibraryA
LoadLibraryW
LoadLibraryEx
LoadLibraryExA
LoadLibraryExW
GetProcAddress
CreateRemoteThread
Ich habe das mittels einer
DLL gelöst, die an jeden gestarteten Prozess gehängt wird. Hierfür habe ich einen Dienst installiert, der diese beim Hochfahren an jeden Prozess "klebt". Die
DLL sorgt dann entsprechend dafür, dass sie auch in alle weiteren Prozesse geladen wird, die mit diesen ersten Prozessen erzeugt werden. Das funktioniert auch ganz gut - leider nur, wenn genau ein Benutzer aktiv ist! Sobald man unter Windows XP auf "Benutzer wechseln" geht, wird die
DLL nicht an die Prozesse gehängt, die im Zugang des zweiten Benutzers ausgeführt werden, obwohl in winlogon.exe etc. auch meine
DLL steckt, die eigentlich dafür sorgen soll, dass sie in jeden neuen Prozess geladen wird.
Meldet man sich dagegen ab, ohne "Benutzer wechseln" und meldet sich dann mit einem anderen Benutzer wieder an, wird die
DLL wie gewünscht angehängt. Gleiches gilt für "Ausführen als", auch das funktioniert anstandslos.
Was geht hier schief? Verwendet Windows versteckte Funktionen, so dass mein hooking hier nicht greift?
Gruß peanut.