Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#2

Re: API-Hooking greift nicht bei "Benutzer wechseln&quo

  Alt 18. Jul 2006, 23:57
Zitat von peanut:
CreateProcess
CreateProcessA
CreateProcessW

CreateProcessAsUser
CreateProcessAsUserA
CreateProcessAsUserW

CreateProcessWithLogonW

LoadLibrary
LoadLibraryA
LoadLibraryW
LoadLibraryEx
LoadLibraryExA
LoadLibraryExW
GetProcAddress

CreateRemoteThread
Soso ... soll ich mal aufzählen, welche bösen Dinge man mit genau dieser Geschichte machen kann? ... dann wird hier gleich wegen Malware-Gefahr zugemacht.

Zitat von peanut:
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.
Also du solltest definitiv deine Methoden überdenken. Sich in jeden Prozess einzuklinken ist hirnrissig. Sich in Winlogon einzuklinken würde ich noch schlimmer bewerten, aber mir fällt kein halbwegs diplomatisches Wort ein, also laß ich es.
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 von peanut:
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?
Windows verwendet nur mehrere MSDN-Library durchsuchenWindowStations - mehr nicht. Wenn du rauskriegst, wie MS exakt die TS implementiert, kannst du vielleicht ein Vermögen machen ...

Such mal nach Bei Google suchenAppInitDlls (siehe auch Bei Google suchenAutoRuns Sysinternals).
  Mit Zitat antworten Zitat