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/)
-   -   Delphi Dateizugriffe (über API-Funktion ?) überwachen (https://www.delphipraxis.net/13515-dateizugriffe-ueber-api-funktion-ueberwachen.html)

delphin 19. Dez 2003 22:47


Dateizugriffe (über API-Funktion ?) überwachen
 
Hallo,

suche eine prinzipielle Lösung, um Dateizugriff zu überwachen. Unter DOS hätte ich den Zeiger der Funktion für das Schreiben in eine Datei einfach auf mein Programm "umgebogen". Geht das auch unter Windows ???

Möchte nämlich so eine Art Protokoll im Hintergrund laufen lassen, um bestimmte Manipulationen (die nie einer von den Kollegen war) dem Verursacher zweifelsfrei zuzuordnen.

Für einen Tipp wäre ich Euch dankbar !

Gruß Gerd

Luckie 19. Dez 2003 22:49

Re: Dateizugriffe (über API-Funktion ?) überwachen
 
Man könnte versuchen über einen System Hook die die Funktion CreateFile zu hooken. Genaueres weiß ich allerdings auch nicht. Oder man schreibt sich einen eigenen Treiber - aber nicht mit Delphi.

toms 20. Dez 2003 00:04

Re: Dateizugriffe (über API-Funktion ?) überwachen
 
Hi!

Habe mal ein Demo-Projekt geschrieben, um herauszufinden, wenn eine Exe
Datei gestartet wird. Dabei wird CreateProcess/ShellExecute usw gehookt.

Zitat:

Man könnte versuchen über einen System Hook die die Funktion CreateFile zu hooken.
Sollte damit nicht so schwierig sein, auch CreateFile und andere APIs zu hooken.

EXECUTE-HOOKER

Alexander 20. Dez 2003 10:26

Re: Dateizugriffe (über API-Funktion ?) überwachen
 
Wenn du eine Pro oder höhere Version hast, dann kannst du kucken welcher API-Befehl hinter der Komponente ShellChangeNotifier (unter Samples) steckt.

delphin 20. Dez 2003 11:18

Re: Dateizugriffe (über API-Funktion ?) überwachen
 
Hallo,

erstmal danke für Eure Ideen!
Werde mal den Vorschlag des SystemHooks von Luckie und toms nachgehen.

Den Hinweis von Alexander:
Zitat:

Wenn du eine Pro oder höhere Version hast, dann kannst du kucken welcher API-Befehl hinter der Komponente ShellChangeNotifier (unter Samples) steckt.
habe ich nicht verstanden, habe allerdings auch keine Pro-Version !

Trotzdem geht mir die Sache mit den Interrupts und den BIOS-Funktionen nicht aus dem Kopf.
Deswegen nochmal nachgefragt:

Ist es nicht so, das der Aufruf einer API-Funktion letztlich nicht
auch nur auf die IO-Funktionen des BIOS zurückgreift ?


Wenn dem so wäre, könnte man doch dort aufgerufene Interrupts einfach abfangen und über eine eigene Funktion umleiten !
Sprich: Interrupts wie zu TP-Zeiten:
Wer sich noch an das gute alte Turbo-Pascal erinnern kann, wird wissen, dass es dort möglich war, die ISR-Funktionen als interrupt zu kennzeichnen und anschließend mit den entspechenden Interrupt-Vektoren des Systems zu verbinden.
Leider ist das Schlüsselwort interrupt in Delphi verschwunden, also doch nicht mehr möglich ???

Chewie 20. Dez 2003 12:46

Re: Dateizugriffe (über API-Funktion ?) überwachen
 
Tja, Microsoft hat sich bei Windows (besonders Windows NT) was ganz tolles ausgedacht.

Du kannst nicht mehr direkt auf die Hardware zugreifen, sondern zunächst bietet das OS den HAL, den Hardware Abstraction Layer. Dahinter stehen erstmal die Kernelmode-Treiber (als eine Schicht, Treiber können aber auch mehrschichtig ausgebaut sein), und nur die dürfen Interrupts auswerten.

Intern sieht es nun so aus, dass ein Aufruf von CreateFile() an den Treiber der entsprechenden Hardware weitergegeben wird und dieser dann die Behandlung der Interrupts erledigt.

Christian Seehase 20. Dez 2003 13:26

Re: Dateizugriffe (über API-Funktion ?) überwachen
 
Moin Alexander,

Zitat:

Zitat von Alexander
Wenn du eine Pro oder höhere Version hast, dann kannst du kucken welcher API-Befehl hinter der Komponente ShellChangeNotifier (unter Samples) steckt.

Guter Tip.

In meiner D5 Pro ist diese Kompo zwar nicht enthalten, aber ich gehe mal davon aus, dass diese die APIs SHChangeNotifyRegister kapselt.

APP 20. Dez 2003 17:44

Re: Dateizugriffe (über API-Funktion ?) überwachen
 
Hallo delphin,

wobei SHChangeNotifyRegister() kein Event beim Ändern einer bereits vorhandenen Datei besitzt, da solltest Du die API-Funktion ReadDirectoryChangesW() versuchen.

Assarbad 14. Feb 2004 19:25

Re: Dateizugriffe (über API-Funktion ?) überwachen
 
Die Frage ist immernoch als Offen markiert.

Ich würde ja die System Service Descriptor Table hooken. So machen das zB die Jungs von www.Sysinternals.com bei ihrem FILEMON. Sonst bekommste eh nicht alle Dateizugriffe die im Usermode anlaufen. Mit dem SSDT-Hook gehts.

Allerdings bleiben dann wiederum die meisten Kernelzugriffe unberücksichtigt. Aber die kannste auch mit obigen Beispielen nicht erfassen. Dann braucht es einen FSFD (File System Filter Driver). Einfach auf www.osr.com für die Mailinglist NTFSD anmelden. Man sollte allerdings keine Fragen des hiesigen Levels stellen. Vorbereitung wäre also angesagt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz