LdrpSectionTableFromVirtualAddress
_IMAGE_SECTION_HEADER *__stdcall LdrpSectionTableFromVirtualAddress(
PVOID ModuleBase,
UINT64 MappingSize,
_IMAGE_NT_HEADERS64 *NtHeaders,
_IMAGE_SECTION_HEADER *InitNtSection){
char *v5;
int v6;
unsigned int v7;
unsigned int v9;
char v10;
if( NtHeaders )
{
v5 = (char *)&NtHeaders->OptionalHeader + NtHeaders->FileHeader.SizeOfOptionalHeader;
if( v5 )
{
v6 = 0;
if( NtHeaders->FileHeader.NumberOfSections )
{
while( !v10
|| (unsigned __int64)(v5 + 40) <= MappingSize + ((unsigned __int64)ModuleBase & 0xFFFFFFFFFFFFFFFCui64) )
{
v7 = *((_DWORD *)v5 + 3);
if( v9 == v7 || v9 > v7 && v9 < *((_DWORD *)v5 + 4) + v7 )
return(_IMAGE_SECTION_HEADER *)v5;
v5 += 40;
if( ++v6 >= NtHeaders->FileHeader.NumberOfSections )
return 0i64;
}
}
}
}
return 0i64;
}Referenced by:
LdrpResGetResourceDirectory
LdrpResSearchResourceInsideDirectory