AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Datei überwachen / Auf DLL-Start reagieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei überwachen / Auf DLL-Start reagieren

Ein Thema von Westcliff · begonnen am 22. Dez 2005 · letzter Beitrag vom 11. Jan 2006
Antwort Antwort
Westcliff

Registriert seit: 9. Dez 2003
4 Beiträge
 
#1

Datei überwachen / Auf DLL-Start reagieren

  Alt 22. Dez 2005, 10:12
Längere Geschichte: Ziel ist es, eine kleine "Firewall" zu schreiben, die Aufrufe von ODBC-Funktionen unterbindet.
Konkret sollen ODBC-Anfragen von EXCEL und ACCESS über einen bestimmten Treiber verhindert werden. Der Aufruf von anderen, explizit bekannten Programmen soll weiterhin gestattet werden.

Erster Ansatzpunkt war die jeweilige Prozessliste mit den entsprechenden geladenen Modulen in einer Schleife auszuwerten (die ODBC-DLL wird dann auch entsprechend angezeigt). Dies würde jedoch unnütz Rechenleistung verpulvern, zudem ja nur in einem gewissen Zeitintervall auf das Laden der DLL reagiert werden kann.

Geht das nicht doch etwas eleganter, evtl. über einen Systemhook?
Hat jemand evtl. eine andere Idee?

Danke schonmal
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Datei überwachen / Auf DLL-Start reagieren

  Alt 22. Dez 2005, 10:32
Warum nicht die DLL ersetzen?
Die DLL ist der ODBC-Treiber, aber die Aufrufe werden an die umbenannte originale DLL weitergeleitet.
In der DLL kann man nun beim Laden der DLL (PROCESS_ATTACH bzw THREAD_ATTACH) den Pfadamen des aufrufenden Programms herausbekommen und entsprechend reagieren.
Alternativ macht man das in den einzelnen Funktionsaufrufen.
GetModuleFileName(0, ...) liefert auch in der DLL den Namen des aufrufenden EXEs.
  Mit Zitat antworten Zitat
Westcliff

Registriert seit: 9. Dez 2003
4 Beiträge
 
#3

Re: Datei überwachen / Auf DLL-Start reagieren

  Alt 22. Dez 2005, 10:43
Das wäre auch eine Idee. Beim Aufruf der DLL entsprechend zu reagieren dürfte nicht wirklich das Problem sein. Aber wir kann ich die entsprechenden Funktionsaufrufe Transparent weiterleiten? Ich denke es macht wenig Sinn, sämtliche Funktionsaufrufe vorher in Erfahrung zu bringen und pro Aufruf eine Weiterleitungsfunktion zu erstellen.

Oder mache ich mir da wieder zu viele Gedanken?
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Datei überwachen / Auf DLL-Start reagieren

  Alt 22. Dez 2005, 12:03
Doch genau das. Es muss doch irgendwo ein ODBC API geben.
  Mit Zitat antworten Zitat
Westcliff

Registriert seit: 9. Dez 2003
4 Beiträge
 
#5

Re: Datei überwachen / Auf DLL-Start reagieren

  Alt 22. Dez 2005, 12:39
Soweit bin ich mittlerweile auch, aber mir fehlen noch header-files und die dazugehörige Delphi-Umsetzung da die Funktionen mit ODBC-spezifischen Datentypen arbeiten die Delphi von Haus aus scheinbar nicht kennt.

Das wären knapp 30 Funktionen, eine durchaus machbare Anzahl.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: Datei überwachen / Auf DLL-Start reagieren

  Alt 22. Dez 2005, 13:37
Da kann man bestimmt ein bischen bescheissen. Ich bin sicher es werden nur Zeiger auf Strukturen uebergeben.
Da man die Strukturen nicht veraendern will, kann man einfach mit Pointer arbeiten. Einfach nur weiterreichen.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: Datei überwachen / Auf DLL-Start reagieren

  Alt 9. Jan 2006, 22:59
Wenn du beliebige DLL-Starts unterbinden willst oder eben darüber benachrichtigt werden willst, kannst du mit PsSetLoadImageNotifyRoutine() und einem Treiber einiges reißen. Ansonsten wohl nur dann, wenn du den Prozeß, welcher die DLL lädt kontrollieren kannst und die DLL nicht implizit (statisch) geladen wird.
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#8

Re: Datei überwachen / Auf DLL-Start reagieren

  Alt 11. Jan 2006, 10:04
Zitat von Olli:
...und die DLL nicht implizit (statisch) geladen wird.
Wird bei einem ODBC-Treiber wohl nicht der Fall sein.
Ja, Funktionshook auf loadLibrary(Ex) ist auch nicht so super-schön, da du dich in sämtliche Prozesse einklinken müßtest.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: Datei überwachen / Auf DLL-Start reagieren

  Alt 11. Jan 2006, 13:40
Das ist das Schöne bei PsSetLoadImageNotifyRoutine() - du wirst nämlich "zurückgerufen" und entscheidest anhand des Objektes, ob du interessiert bis irgendwas zu machen (z.B. RT-Patches oder Laden verhindern usw.).
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#10

Re: Datei überwachen / Auf DLL-Start reagieren

  Alt 11. Jan 2006, 15:42
Mag sein, aber die Nachteile für einen reinen Delphiprogrammierer sind dabei auch nicht von der Hand zu weisen
Wer später bremst ist eher tot.
  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 04:33 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