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