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