ExpMutantInitialization
UINT8 __stdcall ExpMutantInitialization(){
_UNICODE_STRING DestinationString;
_OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
DestinationString = 0i64;
RtlInitUnicodeString(&DestinationString, L"Mutant");
memset(&ObjectTypeInitializer, 0i64, sizeof(ObjectTypeInitializer));
memset(&KeGetCurrentThread()->ApcState.Process->Pcb.DirectoryTableBase, 0i64, *(&ExBootDevicesRemovedEvent + 53));
ObjectTypeInitializer.Length = 120;
ObjectTypeInitializer.ObjectTypeCode = 64;
ObjectTypeInitializer.InvalidAttributes = 256;
ObjectTypeInitializer.PoolType = NonPagedPoolNx;
ObjectTypeInitializer.DefaultNonPagedPoolCharge = 56;
ObjectTypeInitializer.GenericMapping = (_GENERIC_MAPPING)ExpMutantMapping;
ObjectTypeInitializer.ValidAccessMask = 2031617;
ObjectTypeInitializer.DeleteProcedure = (void(__fastcall *)(void *))ExpDeleteMutant;
return ObCreateObjectType(&DestinationString, &ObjectTypeInitializer, 0i64, &ExMutantObjectType) >= 0;
}Referenced by:
ExpInitSystemPhase1