ViCreateProcessCallbackInternal
VOID __fastcall ViCreateProcessCallbackInternal(VOID *ProcessId, UINT8 Create){
_EPROCESS *v2;
PVOID v3;
UINT64 v4;
UINT8 v5;
UINT8 v6;
UNICODE_STRING SourceString;
_EPROCESS *Process;
PVOID P;
if( Create )
{
Process = 0i64;
P = 0i64;
SourceString = 0i64;
if( PsLookupProcessByProcessId(ProcessId, (PEPROCESS *)&Process) >= 0 )
{
v2 = Process;
if( (int)PsGetAllocatedFullProcessImageName((__int64)Process, &P) >= 0 )
{
v3 = P;
ViFaultsGetBaseImageName((UNICODE_STRING *)P, &SourceString);
RtlUpcaseUnicodeString(&SourceString, &SourceString, 0);
KeAcquireSpinLockRaiseToDpc(&ViFaultInjectionLock, v4);
v6 = v5;
if( (unsigned int)ViFaultsIsAppTarget(&SourceString) )
{
_InterlockedOr((volatile signed __int32 *)v2 + 280, 0x10000u);
v2 = Process;
v3 = P;
}
KeReleaseSpinLock(&ViFaultInjectionLock, v6);
ExFreePoolWithTag(v3, 0);
}
ObfDereferenceObjectWithTag(v2, 0x746C6644ui64);
}
}
}Referenced by:
ViCreateProcessCallback