static BOOL process_vtbl(ea_t &ea_sect) { VTBL_info_t vftable_info_t; if(get_vtbl_info(ea_sect, vftable_info_t)) { ea_sect = vftable_info_t.ea_end; ea_t ea_assumed; verify_32_t((vftable_info_t.ea_begin - 4), ea_assumed); if(vftable_info_t.methods > 1) { if(has_user_name(getFlags(vftable_info_t.ea_begin))) { vftable_info_t.vtbl_name = get_short_name(vftable_info_t.ea_begin); qstring vtbl_info_str; vtbl_info_str.cat_sprnt(" 0x%x - 0x%x: %s methods count: %d", vftable_info_t.ea_begin, vftable_info_t.ea_end, vftable_info_t.vtbl_name.c_str(), vftable_info_t.methods); vtbl_list.push_back(vtbl_info_str); vtbl_t_list.push_back(vftable_info_t); return(TRUE); } } return(FALSE); } ea_sect += sizeof(UINT); return(FALSE); }
static BOOL process_vtbl(ea_t &ea_sect) { VTBL_info_t vftable_info_t; if (get_vtbl_info(ea_sect, vftable_info_t)) { ea_sect = vftable_info_t.ea_end; ea_t ea_assumed; #ifndef __EA64__ verify_32_t((vftable_info_t.ea_begin - 4), ea_assumed); #else verify_64_t((vftable_info_t.ea_begin - sizeof(UINT64)), ea_assumed); #endif if (vftable_info_t.methods > 0) { /*if(has_user_name(getFlags(vftable_info_t.ea_begin))) { */ vftable_info_t.vtbl_name = f_get_short_name(vftable_info_t.ea_begin); qstring vtbl_info_str; #ifndef __EA64__ vtbl_info_str.cat_sprnt(" 0x%x - 0x%x: %s methods count: ", vftable_info_t.ea_begin, vftable_info_t.ea_end, vftable_info_t.vtbl_name); vtbl_info_str.cat_sprnt(" %u", vftable_info_t.methods); #else vtbl_info_str.cat_sprnt(_T(" 0x%I64X - 0x%I64X: %s methods count: "), vftable_info_t.ea_begin, vftable_info_t.ea_end, vftable_info_t.vtbl_name); vtbl_info_str.cat_sprnt(_T(" %d"), (vftable_info_t.methods)); #endif vtbl_list.push_back(vtbl_info_str); vtbl_t_list.push_back(vftable_info_t); return(TRUE); //} } return(FALSE); } #ifndef __EA64__ ea_sect += sizeof(UINT); #else ea_sect += sizeof(UINT64); #endif return(FALSE); }