[发明专利]一种面向C++二进制文件的控制流图生成方法及电子装置在审
申请号: | 202011321203.2 | 申请日: | 2020-11-23 |
公开(公告)号: | CN114527961A | 公开(公告)日: | 2022-05-24 |
发明(设计)人: | 龚晓锐 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41;G06F8/74 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 余长江 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 c++ 二进制文件 控制 生成 方法 电子 装置 | ||
本发明提供一种面向C++二进制文件的控制流图生成方法及电子装置,包括:从C++二进制文件中提取虚函数表与符号表;依据所述符号表获取每一虚函数表中的析构函数,并将虚函数表与相应析构函数进行配对;对每一虚函数表进行交叉引用查询,得到构造函数;通过构造函数、析构函数与直接或间接调用构造函数或析构函数的函数,生成控制流图。本发明采用过程间的方法来解决数据间接引用的问题,从而可以识别虚继承;以构造函数或析构函数为起点,从整体角度进行分析,构造对象内存布局,从而可以抵抗构造函数内联带来的影响;只对构造函数和析构函数及其相关的函数生成控制流图,适用于分析大型的C++二进制文件。
技术领域
本发明属于软件逆向分析技术领域,具体涉及一种面向C++二进制文件的控制流图生成方法及电子装置。
背景技术
控制流图(Control Flow Graph,CFG)是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。它用图的形式表示一个过程内所有基本块执行的可能流向,也能反映一个过程的实时执行过程。
从Frances E.Allen于1970年提出控制流图的概念之后,控制流图成为了编译器优化和静态分析的重要工具。面对无法获取源码的程序,研究人员不得不需要通过逆向工程的手段对程序代码进行分析。而在分析过程中,一个精确而完善的控制流图能过帮助研究人员对程序结构进行直观的认识,以辅助其进一步的深入分析与理解。
为获取更利于分析的控制流图,众多科研人员对此进行了研究。例如中国专利申请CN106775913A公开的一种目标代码控制流图生成方法、中国专利申请CN103577242A公开的针对已调度汇编代码的控制流图重构方法、中国专利申请CN108958793A公开的一种基于改进GN算法的程序控制流图划分方法及中国专利申请CN109408034公开的一种面向对象程序的控制流图构造方法等。
C++语言由于其高性能、稳定和多态的特性,一直是大型商业软件的主流选择。由TIOBE发布的2002年到现在的编程语言热度发展趋势统计图可知,C++语言一直稳定在前三的位置。但由于现有控制流图的生成方案中,由于下述原因导致控制流图的建立不准确,无法分析大型的二进制文件:
1)现有方法将虚函数表与构造函数进行配对,在编译优化的情况下,基类的构造函数可能内联进派生类的构造函数中,或者构造函数全部内联进普通函数中,这样将导致该配对方法失效;
2)现有方法根据连续地址空间上的OffsetToTop字段来进行虚函数表的合并,并且一个虚函数表只与一个类绑定,然而在编译优化的情况下此类方法并不适用;这是因为在编译优化的情况下,同一个类的不同虚函数表可能分布在不连续的地址空间;不同的类可能共享相同的虚函数表,因此会导致类的缺失;
3)现有方法通过遍历所有函数来搜索构造函数,这在面对大型二进制文件时会显著增加分析时间的开销;
4)现有方法无法处理数据间接引用的问题,导致无法处理虚基类表读写操作分别在不同函数的情况,进而无法识别虚继承,从而在编译优化的情况下,构造函数内联情况会扰乱控制流的分析;
5)现有方法会对所有函数生成CFG,这在分析大型二进制文件时会极大的增加时间开销。
发明内容
为解决上述问题,本发明提出一种面向C++二进制文件的控制流图生成方法及电子装置,依据C++二进制接口(ABI)实现的特点,依据构造函数与析构函数,生成一种能够反映C++二进制文件中虚继承关系的控制流图。
为达到上述目的,本发明采用以下技术方案:
一种面向C++二进制文件的控制流图生成方法,其步骤包括:
1)从C++二进制文件中提取虚函数表与符号表;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011321203.2/2.html,转载请声明来源钻瓜专利网。