SeAuditHandleDuplication
VOID __stdcall SeAuditHandleDuplication(
PVOID SourceHandle,
PVOID NewHandle,
_EPROCESS *SourceProcess,
_EPROCESS *TargetProcess){
__int64 v8;
__int64 v9;
unsigned __int8 *v10;
int v11;
UINT8 IsKernelHandle;
INT8 v13;
ULONG v14;
SE_ADT_PARAMETER_TYPE v15;
__int64 v16;
unsigned __int64 v17;
UINT8 v18;
__int64 v19;
__int64 v20;
unsigned __int64 v21;
SE_ADT_PARAMETER_TYPE v22;
ULONG v23;
_QWORD SubjectContext[5];
_SE_ADT_PARAMETER_ARRAY Src;
memset(&SubjectContext[1], 0, 32);
SeCaptureSubjectContext((_SECURITY_SUBJECT_CONTEXT *)&SubjectContext[1]);
v8 = SubjectContext[3];
v9 = SubjectContext[3];
if( SubjectContext[1] )
v9 = SubjectContext[1];
v10 = **(unsigned __int8 ***)(v9 + 152);
memset((INT64)&Src, 0i64);
v11 = v10[1];
Src.CategoryId = 3;
if( SubjectContext[1] )
v8 = SubjectContext[1];
*(_DWORD *)&Src.FlatSubCategoryId = 524411;
Src.Parameters[0].Length = 4 * v11 + 8;
Src.AuditId = 4690;
Src.Parameters[1].Address = &SeSubsystemName;
Src.Parameters[2].Data[0] = *(_QWORD *)(v8 + 24);
Src.Parameters[0].Type = SeAdtParmTypeSid;
Src.Parameters[0].Address = v10;
Src.Parameters[1].Type = SeAdtParmTypeString;
Src.Parameters[1].Length = 32;
Src.Parameters[2].Type = SeAdtParmTypeLogonId;
Src.Parameters[2].Length = 8;
Src.Parameters[3].Type = SeAdtParmTypePtr;
Src.Parameters[3].Length = 8;
IsKernelHandle = ObpIsKernelHandle(SourceHandle, 0);
Src.Parameters[4].Type = v15;
v17 = v16 ^ 0xFFFFFFFF80000000ui64;
Src.Parameters[4].Length = v14;
Src.Parameters[5].Type = v15;
if( !IsKernelHandle )
v17 = (unsigned __int64)SourceHandle;
Src.Parameters[4].Data[0] = *((_QWORD *)SourceProcess + 136);
Src.Parameters[5].Length = v14;
Src.Parameters[3].Data[0] = v17 & 0xFFFFFFFFFFFFFFFCui64;
v18 = ObpIsKernelHandle(NewHandle, v13);
v21 = v20 ^ v19;
Src.Parameters[6].Type = v22;
Src.Parameters[6].Length = v23;
if( !v18 )
v21 = (unsigned __int64)NewHandle;
Src.Parameters[6].Data[0] = *((_QWORD *)TargetProcess + 136);
Src.ParameterCount = 7;
Src.Parameters[5].Data[0] = v21 & 0xFFFFFFFFFFFFFFFCui64;
SepAdtLogAuditRecord(&Src);
SeReleaseSubjectContext((_SECURITY_SUBJECT_CONTEXT *)&SubjectContext[1]);
}Referenced by:
ObAuditInheritedHandleProcedure
ObCompleteObjectDuplication