KGetUnlockSetting
NTSTATUS __stdcall KGetUnlockSetting(
_UNICODE_STRING *keyPath,
_UNICODE_STRING *keyValueName,
_APPMODEL_UNLOCK_VALUE *value,
INT64 a4,
INT64 a5,
INT64 a6,
INT64 a7,
INT64 a8){
int v10;
char v11;
INT64 Length;
UINT64 Lengtha;
UINT64 *ResultLength;
UINT64 v16;
VOID *KeyHandle;
_OBJECT_ATTRIBUTES ObjectAttributes;
char KeyValueInformation[4];
int v20;
unsigned int v21;
__int64 v22;
*(&ObjectAttributes.Length + 1) = 0;
memset(&ObjectAttributes.Attributes + 1, 0, 20);
LODWORD(v16) = 0;
ObjectAttributes.RootDirectory = 0i64;
ObjectAttributes.ObjectName = keyPath;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 576;
v10 = ZwOpenKey(&KeyHandle, 0x20119ui64, &ObjectAttributes, a4, Length, (INT64)ResultLength, v16, 0i64);
if( v10 >= 0 )
{
LODWORD(Lengtha) = 24;
v10 = ZwQueryValueKey(KeyHandle, keyValueName, KeyValuePartialInformation, KeyValueInformation, Lengtha, &v16);
if( v10 >= 0 )
{
v11 = 1;
if( (unsigned int)v22 > 1 && (_DWORD)v22 != 0xFFFF )
v11 = 0;
if( v20 == 4 && v21 >= 4 && v11 )
*value = v22;
else
*value = 0xFFFF;
}
ZwClose((_HANDLE)KeyHandle);
}
if( v10 == -1073741772 )
{
*value = 0xFFFF;
return 0;
}
return v10;
}Referenced by:
KIsSideloadingEnabled
KIsUnlockSettingEnabled