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:
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.