![]() |
API-Hooking greift nicht bei "Benutzer wechseln"
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. |
Re: API-Hooking greift nicht bei "Benutzer wechseln&quo
Zitat:
Zitat:
Eine DLL führt Code immer im Kontext des Prozesses aus - eine DLL selbst besteht nur aus Daten und totem Code. Erst in einem Prozeß (noch exakter: in einem Thread!) wird diesem Code Leben eingehaucht. Wenn nun aber dein Code verursacht, daß Winlogon abschmiert, regt sich der Session-Manager (SMSS.EXE) darüber so auf, daß er nen Herzkasper kriegt und dem System sagt: mach blau, mir hat jemand meinen Freund abgemurkst. Und das System macht dann auch blau - mit nem Bluescreen. Zitat:
![]() Such mal nach ![]() ![]() |
Re: API-Hooking greift nicht bei "Benutzer wechseln&
Hallo Olli,
Zitat:
Ich wollte eigentlich nur erkennen, wer nen Prozess startet oder ne DLL lädt. Das bringt aber nicht viel, weil dann wieder irgend jemand mit dem Totschlagargument Kerneldriver oder selbst programmierter API ankommt und sagt: Du DAU, ich erstellt einen Prozess und Du merkst es gar nicht... Bis jetzt ist mir aber noch nichts besseres eingefallen :gruebel: Auf der anderen Seite muss man aber Adminrechte besitzen um nen Kerneldriver zu installieren, was ich bei meiner Annahme "unter der mein Rechner mit dem fertigen Prog betrieben werden soll" aber nicht voraussetze, so dass allenfalls Variante 2 zum Zuge kommt - und Adminrechte höchstens über nen Bug im OS erlangt werden können. Aber dieses Risiko muss man tragen (man kann auch überfahren werden, wenn man anständig den Zebrastreifen benutzt). Zitat:
Vielleicht sollte ich wirklich nicht jeden Prozess mit meiner DLL beglücken. Was die erwähnten Bluescreens betrifft: Da hatte ich schon das Vergnügen mit - das ist was ich meinte, das muss man probiert haben und dann weiß mans. Zitat:
Zitat:
Gruß peanut. |
Re: API-Hooking greift nicht bei "Benutzer wechseln&
Zitat:
Zitat:
Es gibt Spyware-Firmen, die das auch bei Ihren Kunden versuchen. Und dann gibt es noch andere unschöne Sachen, auf die ich nicht eingehen darf ;) Zitat:
AppInitDlls sollte zumindest auch innerhalb der jeweiligen Terminalsessions funktionieren. Dürfte dir doch sehr entgegenkommen, oder? Ich nehme an, daß dein Service "interaktiv" läuft? Dann ist das was du beobachtest nämlich nichts als die normale Trennung dank WindowStations. Ach ja, interaktive Services sind out ... :mrgreen: |
Re: API-Hooking greift nicht bei "Benutzer wechseln&
Zitat:
Zitat:
Viele Grüße peanut. |
Re: API-Hooking greift nicht bei "Benutzer wechseln&
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz