Сейчас на форуме: subword, rtsgreg1989, zds (+9 невидимых)

 eXeL@B —› Основной форум —› Использование type_info для реверсинга ?
Посл.ответ Сообщение

Ранг: 8.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 февраля 2008 15:38
· Личное сообщение · #1

При анализе кода, выдаваемого IDA, в секции данных часто можно наблюдать вот такое:

.data:005703F4 00+ align 8
.data:005703F8 2E+a_?AVCDHtmlControlSink@@ db '.?AVCDHtmlControlSink@@',0
.data:00570410 4C+ dd offset off_523B4C
.data:00570414 00+ align 8
.data:00570418 2E+a_?AUIDispatch@@ db '.?AUIDispatch@@',0
.data:00570428 4C+ dd offset off_523B4C
.data:0057042C 00+ align 10h
.data:00570430 2E+a_?AVCDHtmlElementEventS db '.?AVCDHtmlElementEventSink@@',0
.data:0057044D 00+ align 10h
.data:00570450 4C+ dd offset off_523B4C
.data:00570454 00+ align 8

Насколько я понимаю, это mangled строки относящиеся к type_info ? Вопрос, как бы их использовать для облегчения реверсинга ?
Интерсно так же, что undname.exe из PSDK "обламывается" на этих строках ...



Ранг: 14.0 (новичок)
Активность: 0=0
Статус: Участник

Создано: 01 февраля 2008 16:34
· Личное сообщение · #2

если ида не распознает сама этот манглинг, то, видимо, это чтото странное. Я вот не видел такого ни разу



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 01 февраля 2008 18:25
· Личное сообщение · #3

Great
на самом деле полно таких бинарников - поищи например в %windir% по строке .?A
вопрос как бы эту инфу использовать тоже интересует.



Ранг: 24.1 (новичок), 1thx
Активность: 0.010
Статус: Участник

Создано: 01 февраля 2008 20:51
· Личное сообщение · #4

Есть уже готовые скрипты типа такого:
static GetTypeName(vtbl)
{
auto x, s, c;
x = Dword(vtbl-4);
if ((!x) || (x==BADADDR)) return "";
if (Dword(x)||Dword(x+4)||Dword(x+8)) return "";
x = Dword(x+12);
if ((!x) || (x==BADADDR)) return "";
s = ""; x = x+8;
while (c=Byte(x)) {s = form("%s%c",s,c); x = x+1; }
return s;
}

static main(void)
{
auto a,i,s;
a=ScreenEA(); s=GetTypeName(a);
if (substr(s,0,4)==".?AV")
{s=substr(s,4,-1); MakeName(a,"??_7"+s+"6B@"); }
}

называются ms_typeinfo.idc, ms_rtti4.idc и так далее - гляньте, как они это делают...



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 02 февраля 2008 01:27
· Личное сообщение · #5

type_info используется для идентификации классов в рантайме dinamyc_cast'ом и catch. Знание имен классов может сэкономить время. Подробнее про устройство www.openrce.org/articles/full_view/21 + там ссылки на другие части


 eXeL@B —› Основной форум —› Использование type_info для реверсинга ?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати