RtlpQueryPackageIdentityAttributes
NTSTATUS __stdcall RtlpQueryPackageIdentityAttributes(
VOID *TokenObject,
VOID *AttributeBuffer,
VOID *PkgClaim,
PS_PKG_CLAIM *AttributesPresent,
UINT64 *AttributesPresenta){
UINT64 *v5;
unsigned __int8 v9;
unsigned int v10;
NTSTATUS result;
__int64 v12;
UINT64 BufferLength;
UINT64 BufferLengtha;
UINT64 BufferLengthb;
UINT64 pReturnLength;
v5 = AttributesPresenta;
if( AttributesPresenta )
*AttributesPresenta = 0i64;
v9 = 1;
v10 = 1;
if( AttributesPresent || v5 )
v10 = 2;
LODWORD(BufferLength) = 816;
result = SeQuerySecurityAttributesToken(TokenObject, &pAttributes, v10, PkgClaim, BufferLength, &pReturnLength);
if( result < 0 )
{
if( result != -1073741275 )
return result;
if( v10 == 1 )
return result;
LODWORD(BufferLengtha) = 816;
result = SeQuerySecurityAttributesToken(TokenObject, &pAttributes, 1ui64, PkgClaim, BufferLengtha, &pReturnLength);
if( result < 0 )
return result;
v9 = 0;
}
if( !*((_DWORD *)PkgClaim + 1) )
return -1073741275;
if( AttributesPresent )
{
if( v9 )
v12 = **(_QWORD **)(*((_QWORD *)PkgClaim + 1) + 72i64);
else
v12 = 0i64;
*(_QWORD *)AttributesPresent = v12;
}
if( v5 )
{
*v5 |= (2i64 * v9) | 1;
LODWORD(BufferLengtha) = 0;
if( SeQuerySecurityAttributesToken(TokenObject, &stru_140001158 + 1, 1ui64, 0i64, BufferLengtha, &pReturnLength) == -1073741789 )
*v5 |= 4ui64;
LODWORD(BufferLengthb) = 0;
if( SeQuerySecurityAttributesToken(TokenObject, &stru_140001158, 1ui64, 0i64, BufferLengthb, &pReturnLength) == -1073741789 )
*v5 |= 8ui64;
}
return 0;
}Referenced by:
EtwpQueryPsmKey
RtlQueryPackageClaims