![]() |
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 |
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.
|
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:
![]() |
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.
|
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:
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 ??? |
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. |
Re: Dateizugriffe (über API-Funktion ?) überwachen
Moin Alexander,
Zitat:
In meiner D5 Pro ist diese Kompo zwar nicht enthalten, aber ich gehe mal davon aus, dass diese die APIs SHChangeNotifyRegister kapselt. |
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. |
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 ![]() 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 ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 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