KiTpIsSupportedKernelTracepointLocation
BOOL __stdcall KiTpIsSupportedKernelTracepointLocation(UINT64 Address, ULONGLONG Maximum){
unsigned __int64 v4;
unsigned __int64 v5;
int v6;
char v7;
LODWORD(v4) = RtlImageNtHeader(Address);
if( !v4 )
return 0;
v5 = RtlSectionTableFromVirtualAddress(v4, Address, (int)Maximum - (int)Address);
if( !v5 )
return 0;
if( (*(_DWORD *)(v5 + 36) & 0x2000020) != 32 )
return 0;
v6 = *(_DWORD *)v5;
if( *(_DWORD *)v5 == 1414090313 || v6 == 1396790859 )
return 0;
if( v6 == 1162297680 && *(_DWORD *)(v5 + 4) )
{
v7 = *(_BYTE *)(v5 + 4);
if( v7 == 119 )
{
if( *(_BYTE *)(v5 + 5) == 120 )
return 0;
}
else if( v7 == 86 && *(_BYTE *)(v5 + 5) == 82 && *(_BYTE *)(v5 + 6) == 70 )
{
return 0;
}
}
return(PVOID)Address != PsHalImageBase
&& (Address != PsNtosImageBase
|| v6 != 1128354388 && v6 != 1347769157 && !KiTpIsExcludedKernelTracepointLocation(Maximum));
}Referenced by:
KeSetTracepoint