Вопрос IDA расшифровка виртуальных вызовов

Пользователь
Пользователь
Статус
Оффлайн
Регистрация
6 Янв 2020
Сообщения
91
Реакции
36
Возможно ли заставить IDA расшифровывать вызовы виртуальных методов в декомпилированных функциях ссылаясь на виртуальные таблицы из БД?
Следуя великой
Пожалуйста, авторизуйтесь для просмотра ссылки.
я создал нужные классы в Local Types:
Код:
Expand Collapse Copy
struct /*VFT*/ CEconItem_vtbl // sizeof=0x0 {};
struct __cppobj CEconItem // sizeof=0x8
{
    CEconItem_vtbl *__vftable;
};
И слинковал ordinal с ea_t виртуальной таблицы:
Код:
Expand Collapse Copy
>>> ordinal = idaapi.get_type_ordinal(None, "CEconItem_vtbl")
>>> idaapi.set_vftable_ea(ordinal, 0x3586780)
>>> True
Но максимум что выдает IDA:
Код:
Expand Collapse Copy
(*((unsigned int (__fastcall **)(CEconItem *))a4->__vftable + 2))(a4)
А так хотелось бы увидеть красивое:
Код:
Expand Collapse Copy
a4->sub_137C670(a4)
Разумеется, если наполнить CEconItem_vtbl методами самому, IDA раздуплится, но постоянно заполнять и менять виртуальные таблицы в структурах это нереальный труд.
Буду рад если у кого-то есть решение.
 
много хочешь
 
Код:
Expand Collapse Copy
(*((unsigned int (__fastcall **)(CEconItem *))a4->__vftable + 2))(a4)
Вообще чисто теоретически можно было в тупую изменить тип a4 на CEconItem* и оно показало бы то что ты хотел, хотя может я не понял чего ты хотел
 
Вообще чисто теоретически можно было в тупую изменить тип a4 на CEconItem* и оно показало бы то что ты хотел, хотя может я не понял чего ты хотел
В общем-то я так и делаю, в сигнатуре функции a4 помечена как ..., CEconItem *a4, ...
 
Назад
Сверху Снизу