类继承结构信息获取方法、装置及电子设备制造方法及图纸

技术编号:18860411 阅读:51 留言:0更新日期:2018-09-05 14:05
本申请实施例提供一种类继承结构信息获取方法、装置及电子设备,基于待分析类对象的RTTICompleteObjectLocator结构以获取其中的pClassHierarchyDescriptor字段。根据pClassHierarchyDescriptor字段的指向信息获得RTTIClassHierarchyDescriptor结构,并进一步获得其中的numBaseClasses字段以及pBaseClassArray字段。根据numBaseClasses字段可获得待分析类对象的基类的个数,根据pBaseClassArray字段可获得保存基类名称信息的RTTIBaseClassDescriptor结构体数组。根据基类个数以及RTTIBaseClassDescriptor结构体数组以获得待分析类对象的所有基类的名称信息。如此,可快速、有效地获得待分析类对象的基类的名称信息,改善了现有技术中存在的基类名称获取不便的问题,提高了开发人员的开发效率。

Method, device and electronic device for acquiring information of class inheritance structure

The embodiment of the present application provides a class inheritance structure information acquisition method, device and electronic device, which acquires the pClass Hierarchy Descriptor field based on the RTTI Complete Object Locator structure of the class object to be analyzed. The RTTIClass Hierarchy Descriptor structure is obtained from the directional information of the pClass Hierarchy Descriptor field, and the numBaseClasses field and the pBaseClassArray field are further obtained. According to the numBaseClasses field, the number of base classes of the class object to be analyzed can be obtained, and according to the pBaseClassArray field, an array of RTTIBaseClassDescriptor structures that hold the base class name information can be obtained. Get the name information for all base classes of the class object to be analyzed based on the number of base classes and the RTTIBaseClassDescriptor structure array. In this way, the name information of the base class of the class object to be analyzed can be obtained quickly and effectively, which improves the inconvenience of obtaining the name of the base class existing in the existing technology and improves the development efficiency of the developers.

【技术实现步骤摘要】
类继承结构信息获取方法、装置及电子设备
本专利技术涉及应用开发
,具体而言,涉及一种类继承结构信息获取方法、装置及电子设备。
技术介绍
随着智能设备的应用范围的不断扩大,应用于各类智能设备的应用软件也得到了广泛的关注。其中,在应用软件的开发过程中,开发人员可能需要根据对象的内存结构以获取到该类的完整继承结构信息。经专利技术人研究发现,在现有的技术中对象的完整继承结构信息的方式存在不便的问题。
技术实现思路
有鉴于此,本申请的目的在于,提供一种类继承结构信息获取方法、装置及电子设备以改善上述问题。本申请实施例提供一种类继承结构信息获取方法,所述方法包括:获取待分析类对象中的RTTICompleteObjectLocator结构,访问所述RTTICompleteObjectLocator结构以获得该结构中的pClassHierarchyDescriptor字段;根据所述pClassHierarchyDescriptor字段的指向信息获得RTTIClassHierarchyDescriptor结构,访问所述RTTIClassHierarchyDescriptor结构以获得该结构中的numBaseClasses字段以及pBaseClassArray字段;根据所述numBaseClasses字段获得所述待分析类对象的基类的个数;获得所述pBaseClassArray字段指向的RTTIBaseClassDescriptor结构体数组;根据所述基类的个数依次访问所述RTTIBaseClassDescriptor结构体数组中的数组元素,以获得所述待分析类对象的所有基类的名称信息。进一步地,所述根据所述基类的个数依次访问所述RTTIBaseClassDescriptor结构体数组中的数组元素,以获得所述待分析类对象的所有基类的名称信息的步骤,包括:根据获得的基类的个数访问所述RTTIBaseClassDescriptor结构体数组,以获得所述RTTIBaseClassDescriptor结构体数组中与所述个数一致的多个数组元素的每一个数组元素中的pTypeDescritptor字段;针对获得的每一项数组元素,获得所述数组元素中的pTypeDescritptor字段所指向的TypeDescritptor结构;访问所述TypeDescritptor结构以获得所述TypeDescritptor结构中的name字段,并获得所述name字段处的字符串中记录的该数组元素中的基类的名称信息,以获得所述待分析类对象的所有基类的名称信息。进一步地,所述获取待分析类对象中的RTTICompleteObjectLocator结构的步骤,包括:获取待分析类对象的虚函数表的地址;根据所述虚函数表的地址获得所述待分析类对象中的RTTICompleteObjectLocator结构的地址;查找所述RTTICompleteObjectLocator结构的地址以获得所述RTTICompleteObjectLocator结构。进一步地,所述获取待分析类对象的虚函数表的地址的步骤之前,所述方法还包括:检测所述待分析类对象中是否存在虚函数;若不存在虚函数,则生成获取失败信息,若存在虚函数,则执行所述获取待分析类对象的虚函数表的地址的步骤。进一步地,所述获取待分析类对象的虚函数表的地址的步骤之后,所述方法还包括:检测是否启用运行时信息;若未启用运行时信息,则生成获取失败信息,若已启用运行时信息,则执行根据所述虚函数表的地址获得所述待分析类对象中的RTTICompleteObjectLocator结构的地址的步骤。进一步地,所述根据所述虚函数表的地址获得所述待分析类对象中的RTTICompleteObjectLocator结构的地址的步骤,包括:将所述虚函数表的地址减去指定数值以获得所述待分析类对象中的RTTICompleteObjectLocator结构的地址。进一步地,所述获取待分析类对象的虚函数表的地址的步骤,包括:获取所述待分析类对象的起初地址;获得从所述起初地址开始的第一个4字节的整型值以得到所述待分析类对象具有的虚函数对应的虚函数表的地址。本申请实施例还提供一种类继承结构信息获取装置,所述装置包括:结构描述符字段获取模块,用于获取待分析类对象中的RTTICompleteObjectLocator结构,访问所述RTTICompleteObjectLocator结构以获得该结构中的pClassHierarchyDescriptor字段;基类信息获取模块,用于根据所述pClassHierarchyDescriptor字段的指向信息获得RTTIClassHierarchyDescriptor结构,访问所述RTTIClassHierarchyDescriptor结构以获得该结构中的numBaseClasses字段以及pBaseClassArray字段;个数获取模块,用于根据所述numBaseClasses字段获得所述待分析类对象的基类的个数;数组获取模块,用于获得所述pBaseClassArray字段指向的RTTIBaseClassDescriptor结构体数组;名称信息获取模块,用于根据所述基类的个数依次访问所述RTTIBaseClassDescriptor结构体数组中的数组元素,以获得所述待分析类对象的所有基类的名称信息。本申请实施例还提供一种电子设备,包括:存储器;处理器;及类继承结构信息获取装置,包括一个或多个存储于所述存储器中并由所述处理器执行的软件功能模块,所述类继承结构信息获取装置包括:结构描述符字段获取模块,用于获取待分析类对象中的RTTICompleteObjectLocator结构,访问所述RTTICompleteObjectLocator结构以获得该结构中的pClassHierarchyDescriptor字段;基类信息获取模块,用于根据所述pClassHierarchyDescriptor字段的指向信息获得RTTIClassHierarchyDescriptor结构,访问所述RTTIClassHierarchyDescriptor结构以获得该结构中的numBaseClasses字段以及pBaseClassArray字段;个数获取模块,用于根据所述numBaseClasses字段获得所述待分析类对象的基类的个数;数组获取模块,用于获得所述pBaseClassArray字段指向的RTTIBaseClassDescriptor结构体数组;名称信息获取模块,用于根据所述基类的个数依次访问所述RTTIBaseClassDescriptor结构体数组中的数组元素,以获得所述待分析类对象的所有基类的名称信息。本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,实现上述的类继承结构信息获取方法。本申请实施例提供的类继承结构信息获取方法、装置及电子设备,基于待分析类对象的RTTICompleteObjectLocator结构以获取其中的pClassHierarchyDescriptor字段。根据pClassHierarchyDescriptor字段的指向信息获得RTTIClassHierarchyDes本文档来自技高网...

【技术保护点】
1.一种类继承结构信息获取方法,其特征在于,所述方法包括:获取待分析类对象中的RTTICompleteObjectLocator结构,访问所述RTTICompleteObjectLocator结构以获得该结构中的pClassHierarchyDescriptor字段;根据所述pClassHierarchyDescriptor字段的指向信息获得RTTIClassHierarchyDescriptor结构,访问所述RTTIClassHierarchyDescriptor结构以获得该结构中的numBaseClasses字段以及pBaseClassArray字段;根据所述numBaseClasses字段获得所述待分析类对象的基类的个数;获得所述pBaseClassArray字段指向的RTTIBaseClassDescriptor结构体数组;根据所述基类的个数依次访问所述RTTIBaseClassDescriptor结构体数组中的数组元素,以获得所述待分析类对象的所有基类的名称信息。

【技术特征摘要】
1.一种类继承结构信息获取方法,其特征在于,所述方法包括:获取待分析类对象中的RTTICompleteObjectLocator结构,访问所述RTTICompleteObjectLocator结构以获得该结构中的pClassHierarchyDescriptor字段;根据所述pClassHierarchyDescriptor字段的指向信息获得RTTIClassHierarchyDescriptor结构,访问所述RTTIClassHierarchyDescriptor结构以获得该结构中的numBaseClasses字段以及pBaseClassArray字段;根据所述numBaseClasses字段获得所述待分析类对象的基类的个数;获得所述pBaseClassArray字段指向的RTTIBaseClassDescriptor结构体数组;根据所述基类的个数依次访问所述RTTIBaseClassDescriptor结构体数组中的数组元素,以获得所述待分析类对象的所有基类的名称信息。2.根据权利要求1所述的类继承结构信息获取方法,其特征在于,所述根据所述基类的个数依次访问所述RTTIBaseClassDescriptor结构体数组中的数组元素,以获得所述待分析类对象的所有基类的名称信息的步骤,包括:根据获得的基类的个数访问所述RTTIBaseClassDescriptor结构体数组,以获得所述RTTIBaseClassDescriptor结构体数组中与所述个数一致的多个数组元素的每一个数组元素中的pTypeDescritptor字段;针对获得的每一项数组元素,获得所述数组元素中的pTypeDescritptor字段所指向的TypeDescritptor结构;访问所述TypeDescritptor结构以获得所述TypeDescritptor结构中的name字段,并获得所述name字段处的字符串中记录的该数组元素中的基类的名称信息,以获得所述待分析类对象的所有基类的名称信息。3.根据权利要求1所述的类继承结构信息获取方法,其特征在于,所述获取待分析类对象中的RTTICompleteObjectLocator结构的步骤,包括:获取待分析类对象的虚函数表的地址;根据所述虚函数表的地址获得所述待分析类对象中的RTTICompleteObjectLocator结构的地址;查找所述RTTICompleteObjectLocator结构的地址以获得所述RTTICompleteObjectLocator结构。4.根据权利要求3所述的类继承结构信息获取方法,其特征在于,所述获取待分析类对象的虚函数表的地址的步骤之前,所述方法还包括:检测所述待分析类对象中是否存在虚函数;若不存在虚函数,则生成虚函数表获取失败信息,若存在虚函数,则执行所述获取待分析类对象的虚函数表的地址的步骤。5.根据权利要求3所述的类继承结构信息获取方法,其特征在于,所述获取待分析类对象的虚函数表的地址的步骤之后,所述方法还包括:检测是否启用运行时信息;若未启用运行时信息,则生成结构信息获取失败信息,若已启用运行时信息,则执行根据所述虚函数表的地址获得所述待分析类对象中的RTTICompleteObjectLocator结构的地址的步骤。6.根据权利要求3所述的类继承结构信息获...

【专利技术属性】
技术研发人员:杨亮张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1