BOOL EBP_OK = TRUE ;
do
{
if( (DWORD)EBP & 3 )
EBP_OK = FALSE ;
if( EBP_OK && IsBadReadPtr( (void*)EBP, 8 ) )
EBP_OK = FALSE ;
if( EBP_OK )
{
BYTE* caller = *((BYTE**)EBP + 1) ;
EBP = *(DWORD*)EBP ;
MEMORY_BASIC_INFORMATION mbi ;
VirtualQuery( caller, &mbi, sizeof( mbi ) ) ;
HINSTANCE hInstance = mbi.AllocationBase ;
if( hInstance == 0 )
EBP_OK = FALSE ;
else
DumpDebugInfo( caller, hInstance ) ;
}
else
break ;
}
while( TRUE ) ;
//End of File