AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dateizugriffe (über API-Funktion ?) überwachen
Thema durchsuchen
Ansicht
Themen-Optionen

Dateizugriffe (über API-Funktion ?) überwachen

Offene Frage von "delphin"
Ein Thema von delphin · begonnen am 19. Dez 2003 · letzter Beitrag vom 14. Feb 2004
Antwort Antwort
delphin

Registriert seit: 21. Aug 2003
Ort: Chemnitz
29 Beiträge
 
Delphi 7 Professional
 
#1

Dateizugriffe (über API-Funktion ?) überwachen

  Alt 19. Dez 2003, 23:47
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 19. Dez 2003, 23:49
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

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

  Alt 20. Dez 2003, 01:04
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
Thomas
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#4

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

  Alt 20. Dez 2003, 11:26
Wenn du eine Pro oder höhere Version hast, dann kannst du kucken welcher API-Befehl hinter der Komponente ShellChangeNotifier (unter Samples) steckt.
Alexander
  Mit Zitat antworten Zitat
delphin

Registriert seit: 21. Aug 2003
Ort: Chemnitz
29 Beiträge
 
Delphi 7 Professional
 
#5

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

  Alt 20. Dez 2003, 12:18
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 ???
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

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

  Alt 20. Dez 2003, 13:46
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

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

  Alt 20. Dez 2003, 14:26
Moin Alexander,

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#8

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

  Alt 20. Dez 2003, 18:44
Hallo delphin,

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

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#9

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

  Alt 14. Feb 2004, 20:25
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 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