MiLocateKernelSections
VOID __stdcall MiLocateKernelSections(_KLDR_DATA_TABLE_ENTRY *DataTableEntry){
char *DllBase;
__int64 v2;
int v3;
int *v4;
int v5;
unsigned int v6;
unsigned int v7;
char *v8;
DllBase = (char *)DataTableEntry->DllBase;
LODWORD(v2) = RtlImageNtHeader((UINT64)DllBase);
v3 = *(unsigned __int16 *)(v2 + 6);
v4 = (int *)(*(unsigned __int16 *)(v2 + 20) + v2 + 24);
if( *(_WORD *)(v2 + 6) )
{
do
{
v5 = *v4;
v6 = v4[4];
v7 = v4[2];
if( *v4 == 1987011374 || v5 == 1953655086 )
{
MiFlags |= 0x400u;
}
else if( v5 == 1280266064 )
{
v8 = &DllBase[v4[3]];
if( v4[1] == 1162104643 )
{
ExPoolCodeStart = (__int64)&DllBase[v4[3]];
if( v6 < v7 )
v6 = v7;
ExPoolCodeEnd = ((unsigned __int64)&v8[v6 + 4095] & 0xFFFFFFFFFFFFF000ui64) - 1;
}
}
--v3;
v4 += 10;
}
while( v3 > 0 );
}
}Referenced by:
MiInitializeLoadedModuleList