Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Arbeitsweise von "Process Monitor" (https://www.delphipraxis.net/166080-arbeitsweise-von-process-monitor.html)

Alloc 29. Jan 2012 00:18

Arbeitsweise von "Process Monitor"
 
Hi zusammen,

ich möchte gerne ein Programm schreiben, dass einige Funktionen des Process Monitor beherrscht. Konkret geht es mir darum, dass mein Programm ein anderes Programm "überwachen" können soll, und dann Operationen wie CreateFile, aber auch Zugriffe auf die Registry, protokolliert. Letztlich möchte ich damit überwachen, was genau ein Installationsprogramm auf meinem System anstellt.

Kann mir jemand einen Tipp geben, wonach ich suchen muss, um diese Überwachung durchzuführen, so wie es der Process Monitor macht?

Grüße,
Chris

DMW 29. Jan 2012 15:05

AW: Arbeitsweise von "Process Monitor"
 
Wenn's nur um ein einzelnes Programm geht, wären die Mittel der Wahl vermutlich DLL-Injection und Detouring der fraglichen Funktionen (z.B. mit Microsoft Detours, madCodeHook). Was Process Monitor genau tut, weiß ich nicht, aber vermutlich bedient es sich eines Filtertreibers.

Edit: solche Software gibt es schon: z.B. Total Uninstall. Aber das weißt du sicherlich.

Alloc 29. Jan 2012 15:21

AW: Arbeitsweise von "Process Monitor"
 
Hi DMW,

danke für deine Antwort.

Erstmal zu den Programmen: Es gibt verschiedene, die meist den gleichen Ansatz nutzen (zB auch Track Winstall): Vor der Installation wird ein "Snapshot" des aktuellen Systems gemacht, in dem von bestimmten Ordnern und Dateien der Zeitstempel oder auch ein Hash gespeichert wird. Zusätzlich wird noch die Registry mehr oder weniger genau kopiert. Nach der Installation wird dann lediglich der neue Zustand des Systems mit dem Snapshot verglichen um Unterschiede festzustellen.

Dieser Ansatz funktioniert zwar prinzipiell, hat aber zwei große Nachteile:
1. Es dauert je nach System (Umfang der Registry, Menge der Dateien die in überwachten Ordnern liegen) extrem lang ein Snapshot zu erstellen bzw. zu vergleichen.
2. Es werden nicht nur Änderungen durch die eine Installation überwacht, sondern alles, was im Zeitraum zwischen Snapshot erstellen und vergleichen passiert. Bei mir sind da zum Beispiel oft eine Menge Registry-Updates wegen DHCP drin, oder die Registry-Dateien selber werden als geändert gezeigt (logisch, muss aber nicht sein, da die Setups ja nicht in die Datei schreiben sondern in die Registry, was ja sowieso bemerkt wird). Die Liste wäre also durch "meinen" Ansatz wesentlich kompakter und präziser ;)


Wenn der Process Monitor einen Filtertreiber nutzen würde, wäre der doch sicherlich als eigene Datei bei dem Programm dabei? Das ist nämlich nicht der Fall, das ist ausschließlich eine EXE.


Grüße,
Chris

himitsu 29. Jan 2012 15:27

AW: Arbeitsweise von "Process Monitor"
 
Die Treiber liegen in der EXE und werden dynamisch geladen.

Alloc 29. Jan 2012 15:38

AW: Arbeitsweise von "Process Monitor"
 
Das heißt für Dateien wahrscheinlich ein File System Filter Driver? Und für die Registry?

Alloc 29. Jan 2012 17:08

AW: Arbeitsweise von "Process Monitor"
 
Hab mittlerweile rausgefunden, dass der Process Monitor auf Event Tracing for Windows (ETW) basiert. Jetzt muss ich nur noch rausfinden, was ich alles tun muss, um Reg/File-Events darüber zu überwachen :shock: :lol:

Grüße,
Chris

daywalker9 29. Jan 2012 17:31

AW: Arbeitsweise von "Process Monitor"
 
JEDI

Luckie 29. Jan 2012 17:37

AW: Arbeitsweise von "Process Monitor"
 
Zitat:

Zitat von Alloc (Beitrag 1148150)
Wenn der Process Monitor einen Filtertreiber nutzen würde, wäre der doch sicherlich als eigene Datei bei dem Programm dabei? Das ist nämlich nicht der Fall, das ist ausschließlich eine EXE.

Der Treiber liegt als Ressource in der Exe und wird beim ersten Start in ein Systemverzeichnis kopiert und dann geladen. Starte das Programm mal als einfacher Monitor, dann bekommst du die Meldung, dass der Treiber nicht installiert werden konnte, wenn du es das erste mal startest.

himitsu 29. Jan 2012 17:43

AW: Arbeitsweise von "Process Monitor"
 
Zitat:

Zitat von Alloc (Beitrag 1148159)
Event Tracing for Windows (ETW) ... Jetzt muss ich nur noch rausfinden, was ich alles tun muss, ...

Zitat:

Zitat von daywalker9 (Beitrag 1148161)

Das ist auch nur der Punkt 3 (Event Tracing Reference).
1 (About Event Tracing) und 2 (Using Event Tracing) sollte man sich dennoch mal durchlesen.

Alloc 29. Jan 2012 17:47

AW: Arbeitsweise von "Process Monitor"
 
Zitat:

Zitat von himitsu (Beitrag 1148163)
Zitat:

Zitat von Alloc (Beitrag 1148159)
Event Tracing for Windows (ETW) ... Jetzt muss ich nur noch rausfinden, was ich alles tun muss, ...

Zitat:

Zitat von daywalker9 (Beitrag 1148161)

Das ist auch nur der Punkt 3 (Event Tracing Reference).
1 (About Event Tracing) und 2 (Using Event Tracing) sollte man sich dennoch mal durchlesen.

Ups, mal wieder falsches Tab verlinkt ;)
Kapitel 1 hatte ich mir durchgelesen, Kapitel 2 noch nicht. Kommt aber alles noch :thumb:
Scheinbar ist das ganze aber auch nicht gerade wenig Aufwand, mal schauen wann ich da überall durch bin (vor allem scheint es ja wieder Unterschiede zwischen Windows XP und >= Vista zu geben :evil: ).

@Lars: Danke für den Link :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 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