Einzelnen Beitrag anzeigen

Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#33

Re: Auf Dateien zugreifen die gerade in Gebracuh sind (?)

  Alt 14. Nov 2008, 12:55
Zitat von nicodex:
Zitat von 0xF30FC7:
Das Ganze lässt sich teilweise auch im Usermode sauber lösen, sofern man nicht versucht die Namen von Handles aufzulösen, die bestimmte Access Flags gesetzt haben.
Die Abfrage auf eine bestimmte Zugriffsmaske halt ich persönlich nicht für eine "saubere" Lösung... aber das ist sicherlich eine Geschmacksfrage
Ja klar. Ich geb zu da ein wenig pragmatisch veranlagt zu sein . Es hat halt auch noch einige anderen Grenzen. Es reichte für meine Zwecke bislang allerdings immer aus. Es gibt übrigens noch einen zweiten Weg. Wenn Du NtQueryObject in einem Thread ausführst, besteht weiterhin die Möglichkeit den Thread wenn er hängt zu terminieren. Einige "LSOF" Implementierungen, die ich gesehen habe, benutzen diesen Weg. Wenn der Thread der NtQueryObject aufgerufen hat in 50ms nicht beendet ist, wird er platt gemacht. Wahrscheinlich auch keine 100% saubere Möglichkeit, aber durchaus machbar.

Zitat von nicodex:
Zitat von 0xF30FC7:
NtQuerySystemInformation(SystemHandleInformation, [...])
Die WOW64-Implementation von wow64!whNtQuerySystemInformation_SystemHandleInfor mation ist bis zum heutigen Tage nicht brauchbar (die Struktur wird, bis auf NumberOfHandles, nicht gefüllt). Siehe:
http://forum.madshi.net/viewtopic.php?t=1231
http://forum.madshi.net/viewtopic.php?p=16768#16768
Nunja, das hät ich vielleicht noch erwähnen sollen. Das funktioniert natürlich ausschließlich auf 32bit Plattformen. Allerdings funktioniert eine 64bit Implementation des Codes auch unter 64bit Plattformen. Dagegen ist es mich als Privatperson unmöglich ein Code Signing Certificate zu bekommen um unter 64bit Systemen überhaupt erst in den Kernel Mode zu kommen. Und ich meine mit "unmöglich" an dieser Stelle nicht mal, das ich mir das Zertifikat nicht leisten könnte, sondern das Zertifikate nur auf Firmen ausgestellt werden.

Zitat von nicodex:
Zitat von 0xF30FC7:
NtQueryObject([...], ObjectNameInformation, [...])
Sollte man trotz deines Filters doch auf eine Pipe treffen, könnte diese dadurch signalisiert werden. Es gibt einige Programme (zum Beispiel: ATI Control Center, Tobit David, ...), deren Pipe-Kommunikation nicht damit rechnet (AV), dass eine Pipe signalisiert wird, ohne dass Daten zur Verfügung stehen - ist eigentlich deren Problem... aber letztendlich werden normale Nutzer dem "Unlocker"-Programm die Schuld geben.
Auch das ist durchaus ein Problem, wobei man natürlich streiten kann ob es mein Problem ist oder ihr. Ich sag ja auch nicht das ein Treiber die schlechtere Alternative wäre, aber wenn man keine Alternative hat (Privatperson und Code Signing Certificates z.B.), ist es durchaus ein praktikabler Weg. Ein wenig unschön evtl. aber praktikabel.
Fridolin Walther
  Mit Zitat antworten Zitat