IDA将某些项目注释为:typeinfo代表_classname_。 (例如,我想知道对象的大小或虚函数表的大小)。

我对Android NDK for ARM的GNU C ++(G ++)特别感兴趣。

#1 楼

这些对象确实是type_info类的实例(或更可能是其后代之一)。这些类的结构在Itanium C ++ ABI中进行了描述。您还可以从GCC检查rtti.h文件。

有关这些类的精简,纯数据表示,请检查我的Recon 2012演示文稿(从第27张幻灯片开始)。

#2 楼

要添加Igor Skochinsky的答案:

给出VFT地址,您可以打印损坏的类名: c++filt

_Z的东西不存储在这里,但需要c++filt起作用。)

您还可以打印继承链(窍门是typeinfo也是一个对象,如果它是一个__cxxabiv1::__si_class_type_info,则其名称为strcmp(),该对象存在单一继承,并且指向超类typeinfo的指针紧随该名称之后): br />其中strrealloccat()定义为:

unsigned int* vmtaddr = *(int*)obj_addr;
DLOG("class name: _Z%s",((char***)vmtaddr)[-1][1]);


_Z4hopeN4this5helpsE