SeAuditHardLinkCreationWithTransaction
VOID __stdcall SeAuditHardLinkCreationWithTransaction(
UNICODE_STRING *FileName,
UNICODE_STRING *LinkName,
UINT8 bSuccess,
GUID *TransactionId){
GUID *v8;
_QWORD *PrimaryToken;
_QWORD *ClientToken;
PVOID *v11;
struct _SECURITY_SUBJECT_CONTEXT SubjectContext;
_SE_ADT_PARAMETER_ARRAY Src;
__int128 v14;
SubjectContext.ClientToken = 0i64;
SubjectContext.ImpersonationLevel = 0x80000000;
memset(&SubjectContext.ImpersonationLevel + 1, 0, 20);
memset((INT64)&Src, 0i64);
Src.CategoryId = 3;
Src.FlatSubCategoryId = 116;
v8 = (GUID *)&v14;
Src.AuditId = 4664;
if( TransactionId )
v8 = TransactionId;
Src.Type = 8;
v14 = 0i64;
if( !bSuccess )
Src.Type = 16;
SeCaptureSubjectContext(&SubjectContext);
PrimaryToken = SubjectContext.PrimaryToken;
ClientToken = SubjectContext.PrimaryToken;
Src.Parameters[0].Type = SeAdtParmTypeSid;
if( SubjectContext.ClientToken )
ClientToken = SubjectContext.ClientToken;
Src.Parameters[1].Type = SeAdtParmTypeString;
if( SubjectContext.ClientToken )
PrimaryToken = SubjectContext.ClientToken;
Src.Parameters[1].Length = 32;
Src.Parameters[2].Type = SeAdtParmTypeLogonId;
Src.Parameters[3].Type = SeAdtParmTypeFileSpec;
v11 = (PVOID *)ClientToken[19];
Src.Parameters[4].Type = SeAdtParmTypeFileSpec;
Src.Parameters[2].Length = 8;
Src.Parameters[3].Address = FileName;
Src.Parameters[0].Address = *v11;
Src.Parameters[4].Address = LinkName;
Src.Parameters[5].Type = SeAdtParmTypeGuid;
LODWORD(v11) = *((unsigned __int8 *)Src.Parameters[0].Address + 1);
Src.Parameters[5].Length = 16;
Src.Parameters[5].Address = v8;
Src.ParameterCount = 6;
Src.Parameters[0].Length = 4 * (_DWORD)v11 + 8;
Src.Parameters[1].Address = &SeSubsystemName;
Src.Parameters[2].Data[0] = PrimaryToken[3];
Src.Parameters[3].Length = FileName->Length + 16;
Src.Parameters[4].Length = LinkName->Length + 16;
SepAdtLogAuditRecord(&Src);
SeReleaseSubjectContext(&SubjectContext);
}Referenced by:
SeAuditHardLinkCreation