ViLookasideTrackList
VOID __stdcall ViLookasideTrackList(_GENERAL_LOOKASIDE *Lookaside, UINT64 HookAllocateFree){
VOID **(__fastcall *AllocateEx)(UINT64, UINT64, INT64);
VOID *(__stdcall *v3)(POOL_TYPE, UINT64, UINT64);
if( (_DWORD)HookAllocateFree && (VOID *(__stdcall *)(PVOID, UINT32))Lookaside->FreeEx == ExFreePoolWithTag )
{
AllocateEx = (VOID **(__fastcall *)(UINT64, UINT64, INT64))Lookaside->AllocateEx;
if( AllocateEx == ExAllocatePoolWithTag )
{
v3 = VerifierExAllocatePoolWithTag;
LABEL_7:
Lookaside->AllocateEx = (void *(__fastcall *)(_POOL_TYPE, unsigned __int64, unsigned int, _LOOKASIDE_LIST_EX *))v3;
Lookaside->FreeEx = (void(__fastcall *)(void *, _LOOKASIDE_LIST_EX *))VerifierExFreePool;
goto LABEL_8;
}
if( (char *)AllocateEx == (char *)ExAllocatePoolWithQuotaTag )
{
v3 = VerifierExAllocatePoolWithQuotaTag;
goto LABEL_7;
}
}
LABEL_8:
ViLookasideAdd(Lookaside);
}Referenced by:
VerifierExInitializeNPagedLookasideList
VerifierExInitializePagedLookasideList