Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponente? (https://www.delphipraxis.net/43540-besitzer-eines-mutex-ermitteln-%2Aohne%2A-kernelmodekomponente.html)

Mephistopheles 5. Apr 2005 15:58


Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponente?
 
Hi,

ganz schnell gestellt die Frage: wie ermittele ich den Besitzer (egal ob Prozess oder Thread herauskommt) eines Mutex unter Win32 (NT-basiert) ohne Benutzung eines Treibers?

KMUTANT, TEB und PEB sind bekannt und müssen hier nicht diskutiert werden, insofern es nicht Usermode ist.
Ach ja: Admin-Privilegien dürfen *nicht* vorausgesetzt werden.

Es geht darum einen Prozess abzuschießen, der einen Mutex quasi als Geisel hält :mrgreen: ... dazu braucht man natürlich dessen PID.

w3seek 5. Apr 2005 16:39

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen
 
tut mir leid, unmoeglich. Das einzige was du pruefen kannst ist ob der mutant vom aktuellen thread "geowned" wird, mit hilfe von NtQueryMutant (class MutantBasicInformation)

w3seek 5. Apr 2005 16:40

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen
 
abgesehen davon, einen prozess der auf einen mutant waert sollte problemlos terminierbar sein, solange er sich nicht in einer kritischen region befindet

Mephistopheles 5. Apr 2005 16:50

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen
 
Zitat:

Zitat von w3seek
tut mir leid, unmoeglich. Das einzige was du pruefen kannst ist ob der mutant vom aktuellen thread "geowned" wird, mit hilfe von NtQueryMutant (class MutantBasicInformation)

Das hilft ja nun wiederum nicht viel, es sei denn ich würde mich in alle fremden Usermode-Threads schleichen und dort besagte Abfrage machen.

Zitat:

Zitat von w3seek
abgesehen davon, einen prozess der auf einen mutant waert sollte problemlos terminierbar sein, solange er sich nicht in einer kritischen region befindet

Das steht außer Frage. Logisch ist er das. Nur wie finde ich denn den korrekten *Besitzer*? Ein Handle auf den Mutex können ja auch andere Prozesse/Threads haben. Das sagt also nichts darüber aus, ob dieser oder jener Prozess der Übeltäter ist.

Danke erstmal für die Antworten.

w3seek 5. Apr 2005 17:07

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen
 
Zitat:

Zitat von Mephistopheles
Das hilft ja nun wiederum nicht viel, es sei denn ich würde mich in alle fremden Usermode-Threads schleichen und dort besagte Abfrage machen.

Ist mir klar dass das nicht viel hilft, aber das ist so ziemlich das einzigste was du rausfinden kannst (wenn du ueberhaupt einen handle mit entsprechenden rechten hast)

Zitat:

Zitat von Mephistopheles
Nur wie finde ich denn den korrekten *Besitzer*?

Wie bereits erwaehnt, mit den "Einschraenkungen" die du fuer die Loesung voraussetzt absolut unmoeglich.

Zitat:

Zitat von Mephistopheles
Ein Handle auf den Mutex können ja auch andere Prozesse/Threads haben. Das sagt also nichts darüber aus, ob dieser oder jener Prozess der Übeltäter ist.

Ich hoffe ich hab das nicht impliziert, aber das laesst sich auf diese Weise gar nicht ermitteln ;)

Fazit: Mit den genannten Einschraenkungen ist das Unterfangen unmoeglich, da hilft langes diskutieren auch nicht weiter ;) Entweder du lockerst die Einschraenkungen oder du laesst es sein. Zum Glueck leben wir nicht mehr in DOS zeiten :mrgreen:

BenBE 5. Apr 2005 18:42

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen
 
Aber zeigen nicht manche Programme wie der Process Explorer von SysInternals jegliche Handles an? Und das auch ohne Zusatz-Treiber?

Mephistopheles 5. Apr 2005 18:50

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen
 
Kleiner Tip für den Unwissenden. Der Process Explorer benutzt einen Treiber. Schau mal in die Ressourcen der procexp.exe.
Apropos: was der Process Explorer anzeigt, bekommt man auch ohne Treiber heraus. Der Treiber ist offensichtlich für andere Sachen zuständig. Oder hast du eine Stelle gesehen, wo der Process Explorer den Besitzer eines Mutex anzeigt. Ich nicht. Ansonsten erklär mal wo (@BenBE)!

@Thomas: Danke, aber die Einschränkungen stehen nunmal.

Mahlzeit,


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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