2017-05-11 1 views
-1

Ich versuche, eine neue benannte Mutante aus einem Prozess mit niedriger Integrität zu erstellen. Dieser Code eignet sich hervorragend für einen Prozess mit hoher Integrität, schlägt jedoch bei niedriger und mittlerer Integrität fehl.Kann ein Prozess mit geringer Integrität ein benanntes mutiertes Objekt erstellen?

RtlInitUnicodeString(&Name, L"\\MutantName"); 
InitializeObjectAttributes(&Attr, &Name, OBJ_INHERIT | OBJ_OPENIF, NULL, NULL); 
NTStatus = NtCreateMutant(&Mutant, MUTANT_ALL_ACCESS, &Attr, 0); 

Ich bekomme NTStatus = ERROR_ACCESS_DENIED (0xc0000022).

Ist es möglich, eine Mutante aus einem Prozess mit niedriger Integrität zu erstellen? Wenn ja - weiß jemand was ich falsch mache? Vielen Dank!

Antwort

1

Ein Low Integrity-Prozess kann Objekte nur in einem Objektverzeichnis erstellen, das über ein Low Mandatory-Label verfügt. Das Stammobjektverzeichnis hat diese Bezeichnung nicht. \BaseNamedObjects tut, so können Sie Ihre Mutante dort aus einem Low Integrity-Prozess erstellen:

RtlInitUnicodeString(&Name, L"\\BaseNamedObjects\\MutantName"); 
Verwandte Themen