AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponente?
Thema durchsuchen
Ansicht
Themen-Optionen

Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponente?

Ein Thema von Mephistopheles · begonnen am 5. Apr 2005 · letzter Beitrag vom 5. Apr 2005
Antwort Antwort
Mephistopheles
(Gast)

n/a Beiträge
 
#1

Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponente?

  Alt 5. Apr 2005, 15:58
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 ... dazu braucht man natürlich dessen PID.
  Mit Zitat antworten Zitat
w3seek
(Gast)

n/a Beiträge
 
#2

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen

  Alt 5. Apr 2005, 16:39
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)
  Mit Zitat antworten Zitat
w3seek
(Gast)

n/a Beiträge
 
#3

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen

  Alt 5. Apr 2005, 16:40
abgesehen davon, einen prozess der auf einen mutant waert sollte problemlos terminierbar sein, solange er sich nicht in einer kritischen region befindet
  Mit Zitat antworten Zitat
Mephistopheles
(Gast)

n/a Beiträge
 
#4

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen

  Alt 5. Apr 2005, 16:50
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 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.
  Mit Zitat antworten Zitat
w3seek
(Gast)

n/a Beiträge
 
#5

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen

  Alt 5. Apr 2005, 17:07
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 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 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
  Mit Zitat antworten Zitat
Benutzerbild von BenBE
BenBE

Registriert seit: 3. Apr 2005
Ort: Jahnsdorf
48 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen

  Alt 5. Apr 2005, 18:42
Aber zeigen nicht manche Programme wie der Process Explorer von SysInternals jegliche Handles an? Und das auch ohne Zusatz-Treiber?
Benny Baumann
Je komplexer das System, desto kleiner die Fehler; je kleiner die Fehler, desto häufiger ihr Auftreten!
  Mit Zitat antworten Zitat
Mephistopheles
(Gast)

n/a Beiträge
 
#7

Re: Besitzer eines Mutex ermitteln *ohne* Kernelmodekomponen

  Alt 5. Apr 2005, 18:50
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,
  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:28 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