CN104331368A - 一种基于cfg文件静态分析C++虚函数调用的方法 - Google Patents

一种基于cfg文件静态分析C++虚函数调用的方法 Download PDF

Info

Publication number
CN104331368A
CN104331368A CN201410658925.5A CN201410658925A CN104331368A CN 104331368 A CN104331368 A CN 104331368A CN 201410658925 A CN201410658925 A CN 201410658925A CN 104331368 A CN104331368 A CN 104331368A
Authority
CN
China
Prior art keywords
virtual function
class
chained list
pointer
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410658925.5A
Other languages
English (en)
Other versions
CN104331368B (zh
Inventor
顾乃杰
冯光辉
张明
曹华雄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xi'an Wopai Communication Technology Co.,Ltd.
Original Assignee
HEFEI COMJAY INFORMATION TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by HEFEI COMJAY INFORMATION TECHNOLOGY Co Ltd filed Critical HEFEI COMJAY INFORMATION TECHNOLOGY Co Ltd
Priority to CN201410658925.5A priority Critical patent/CN104331368B/zh
Publication of CN104331368A publication Critical patent/CN104331368A/zh
Application granted granted Critical
Publication of CN104331368B publication Critical patent/CN104331368B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种基于cfg文件静态分析C++虚函数调用的方法,其特征是:首先建立多个类的新虚函数链表和多个类的虚函数起始位置偏移链表,其次虚函数调用时,根据类类型指针的动态类型和静态类型信息,通过新虚函数链表和虚函数起始位置偏移链表返回被调用的虚函数名称,结合虚函数调用时参数,唯一确定被调用的虚函数。通过使用编译器中间文件class文件,建立与编译器建表规则一致的新虚函数链表等,通过记录类类型指针的静态类型和动态类型,结合建立的新虚函数链表等,实现静态分析时准确获取动态运行时信息,准确确定被调用的虚函数,从而提高了静态分析精确性,更加符合程序逻辑。

Description

一种基于cfg文件静态分析C++虚函数调用的方法
技术领域
本发明涉及软件分析领域,具体地说是一种基于cfg文件静态分析C++虚函数调用的方法。
背景技术
随着时代的进步,软件的功能越来越复杂,用户对软件的要求也越来越高。同时伴随着计算机相关技术的发展,软件规模越来越庞大,开发的复杂性急剧增加。
随着软件规模的增大,为了保证软件质量,对测试提出了更大的挑战。尤其对于应用于实时性控制等特殊应用场景时,软件发生故障时将会导致不可估量的后果,对软件可靠性要求更高。为了最大程度保证软件可靠性,需要大量测试软件。
在软件测试中,可以分动态测试为和静态测试,前者通过实际运行被测试程序,观察运行结果与预期差异,后者无需程序运行,通过代码分析确定程序缺陷。随着软件代码规模的增大,运行空间急剧扩大,动态测试很难达到100%覆盖率,为软件健壮性和安全性留下隐患,同时随着测试覆盖程度的增加,测试成本也在急剧增加。通过静态分析程序,例如分析程序结构,分析程序函数调用关系,分析程序逻辑,可以更有效发现程序问题,效率通常高于动态测试。
在软件编码中,大量代码使用C++语言开发。在静态分析C++源程序时,通常需要获取函数调用路径,基于函数调用路径分析程序。源程序中存在多个函数调用路径,通过分析每个函数调用路径,进而发现程序中的问题。
发明内容
本发明提出一种具有可操作性的基于cfg文件静态分析C++虚函数调用的方法,以期在静态分析中准确获取动态运行时信息,提高静态分析准确性,实现静态分析更加符合程序语义。
本发明为解决技术问题采用如下技术方案:
本发明一种基于cfg文件静态分析C++虚函数调用的方法,基于Linux平台G++编译器实现,其特点是按如下步骤进行:
步骤1、建立多个类的新虚函数链表和多个类的虚函数起始位置偏移链表:
步骤1.1、利用所述G++编译器对C++源程序进行编译时,添加编译参数fdump-tree-cfg和编译参数fdump-class-hierarchy后进行编译,由所述编译参数fdump-tree-cfg生成cfg文件,由所述编译参数fdump-class-hierarchy获得编译器生成的多个类的虚函数表,并保存在class文件中;所述class文件中包括被G++编译器改编的虚函数名称;
步骤1.2、提取所述class文件中的多个类的虚函数表,并把被G++编译器改编的虚函数名称恢复为C++源程序中的虚函数名称,按虚函数在class文件中出现的顺序使用链表按序进行存储,链表中每个节点对应编译器生成的虚函数表中一行,从而建立多个类的新虚函数链表,所述新虚函数链表中存储的函数名称与源程序中虚函数名称一致;当一个类含有基类时,所述编译器生成的虚函数表和新虚函数链表中包括被直接继承和重写的基类虚函数以及派生类自有虚函数;将所述被直接继承或重写的基类虚函数定义为基类对应的虚函数;
步骤1.3、在所述class文件中编译器生成的虚函数表中,编译器选择一行开始存放所述基类对应虚函数;提取并使用链表记录所述基类对应虚函数在新虚函数链表的中起始存放位置,从而建立类的虚函数起始位置偏移链表;所述虚函数起始位置偏移链表中每个节点存储基类对应虚函数和派生类的首个虚函数在派生类的虚函数表中起始偏移位置;所述起始偏移位置使用指向类的新虚函数链表节点的指针表示;
步骤2、虚函数调用:
步骤2.1、在cfg文件中,以“OBJ_TYPE_REF(other;pointer->num)(pointer,parameter)”格式表示虚函数调用,other为无需处理的字符,pointer为类类型的指针变量名称,num为一整数,parameter为虚函数参数列表,当虚函数无参数时,以“OBJ_TYPE_REF(other;pointer->num)(pointer)”标识虚函数调用,通过pointer指针调用虚函数时,根据所述pointer指针的动态类型,从所述建立的多个类的新虚函数链表和多个类的虚函数起始位置偏移链表中,选择pointer指针动态类型对应的新虚函数链表和虚函数起始位置偏移链表;
步骤2.2、对虚函数起始位置偏移链表进行遍历并找到一节点,所述节点中存放了对应pointer指针静态类型的起始位置偏移信息,所述起始偏移位置使用指向新虚函数链表节点的指针进行表示,通过所述指针找到新虚函数链表中的相应节点作为查找起始节点;
步骤2.3、根据所述cfg文件中pointer指针调用虚函数格式中的num整数,从所述查找起始节点开始查找第num个链表节点,且查找起始节点为第0个链表节点,并返回第num个节点中存储的虚函数名称;
步骤2.4、通过cfg文件中虚函数调用中的parameter虚函数参数列表,使用C++中重载规则,唯一确定被调用的虚函数,从而完成虚函数调用解析。
与现有技术相比,本发明的有益效果在于:
1、本发明通过使用编译器中间文件cfg文件,cfg文件与源程序语义一致且格式更加规则,避免了直接处理源程序复杂灵活的书写方式,降低了分析难度,提高了分析准确性。
2、本发明通过使用编译器中间文件class文件,可以建立和编译器建立虚函数表规则完全一致的新虚函数链表等,避免了通过分析C++源程序,并根据复杂的编译器建表规则建立虚函数表,保证了使用与cfg完全对应一致的虚函数表。提高了建表效率和准确性。
3、本发明通过在分析cfg文件的一条函数调用路径时,记录对类类型指针的操作,例如赋值操作,进而记录类类型指针的静态类型和动态类型,结合建立的虚函数链表等,实现静态分析时准确获取动态运行时信息,准确确定这条函数调用路径中被调用的虚函数,提高了静态分析精确性,更加符合程序逻辑。
具体实施方式
本实施例中,一种基于cfg文件静态分析C++虚函数调用的方法是基于Linux平台G++编译器实现的,并以64位Linux系统GCC4.7.1为例,是先建立多个类的新虚函数链表和多个类的虚函数起始位置偏移链表,其次虚函数调用时,根据类类型指针的动态类型和静态类型,使用新虚函数链表和虚函数起始位置偏移链表返回被调用的虚函数名称,结合虚函数参数,唯一确定被调用的虚函数。通过使用编译器中间文件class文件,建立和编译器建立虚函数表规则完全一致的新虚函数链表等,通过记录类类型指针的静态类型和动态类型,结合建立的新虚函数链表等,实现静态分析时准确获取动态运行时信息;具体地说,是按如下步骤进行:
步骤1、建立多个类的新虚函数链表和多个类的虚函数起始位置偏移链表:
步骤1.1、利用G++编译器对C++源程序进行编译时,添加编译参数fdump-tree-cfg和编译参数fdump-class-hierarchy后进行编译,由编译参数fdump-tree-cfg生成cfg文件,cfg文件为编译器生成的以cfg为文件名称后缀的文件,同时cfg文件与源程序语义一致且格式规则,降低了静态分析难度;由编译参数fdump-class-hierarchy获得编译器生成的多个类的虚函数表,并保存在class文件中;class文件为编译器生成的以class为后缀的文件;class文件中包括被G++编译器改编的虚函数名称;
虚函数表中每个虚函数在内存中占用sizeof(char*)个字节,其中sizeof(char*)标识一个指针类型占用空间大小,在32位系统中为4字节,64位系统中为8字节。
步骤1.2、提取所述class文件中的多个类的虚函数表,并把被G++编译器改编的虚函数名称恢复为C++源程序中的虚函数名称,按虚函数在class文件中出现的顺序使用链表按序进行存储,链表中每个节点对应编译器生成的虚函数表中一行,从而建立多个类的新虚函数链表,所述新虚函数链表中存储的函数名称与源程序中虚函数名称一致;当一个类含有基类时,所述编译器生成的虚函数表和新虚函数链表中包括被直接继承和重写的基类虚函数以及派生类自有虚函数;将所述被直接继承或重写的基类虚函数定义为基类对应的虚函数;
在class文件中,编译器生成的类虚函数表以一定字符标识开始。标识类的虚函数表开始的字符格式为:“Vtable for class_name”(以下简称为字符格式1)。紧邻特定字符标识1的下一行采用“class_name::other:numu entries”格式(以下简称字符格式2),其中class_name标识类的完整名称,若类被声明定义在命名空间中,则类的完整名称包含命名空间,例如,类cat被声明定义在命名空间animal中,则类cat的完整名称为animal::cat,other标志一连续存储的无关字符,无需处理,numu标识符中的‘u’是一整数num末尾紧邻的单个字符,例如“10u”,整数num标识了类的虚函数表中含有的num个单元(编译器生成的虚函数表一行简称为单元,每个单元占用一行,有的单元不描述虚函数)。字符格式1表示当前的单元是class_name类的虚函数表,当前建立的新虚函数链表属于class_name类。
紧邻的字符格式2之后的行是编译器生成的虚函数表的每个单元。采用链表存储类的虚函数表的所有单元,每个虚函数表单元占用一个链表节点,且链表中节点顺序与虚函数表中个单元顺序一致,链表第一个节点即为虚函数表第一个单元,同时每新建立一个链表节点均加入到链表尾部,以下均称存储虚函数表的链表为新虚函数链表。若新虚函数链表中节点对应class文件中单元对应一个虚函数,则链表节点存储虚函数与源程序一致的函数名称。
编译器生成的虚函数表单元格式如下:
(1)、虚函数距整个虚函数表起始位置的字节(以下称为在虚函数表中偏移),之后以空格填充分割;
(2)、紧邻(1)的同一行,以(int(*)(…))字符串填充;
(3)、紧邻(2)的同一行,可能出现多种情况;
a)若以是负数或数字“0”或“(&”开始,将其后字符串内容存放在新建立的链表节点,并将链表节点插入到虚函数链表尾部,此时当前单元不是具体虚函数,转(4)处理;
b)采用“class_name::function_name”格式存储,class_name同上,function_name分为发生函数名称改编和未发生名称改编两种情况。发生名称改编时,function_name的格式由编译器的实现决定。未发生名称改编的行,function_name字符串与源程序中虚函数名称一致。发生名称改编的单元,需从function_name中提取与源程序一致的函数名称。可以通过“c++filtfunction_name”获取源程序中虚函数名称,其中c++filt为Linux系统中命令,function_name同上。在编程实现通过function_name获取虚函数名称时,可以调用popen等函数获取命令执行结果,同时使用c++filt命令处理没有发生名称改编的function_name时,通过命令执行也可以得到正确的结果。通过c++filt命令获取源程序中的虚函数名称后,新建立虚函数表节点并存储源程序中的虚函数名称,将新建立虚函数表节点插入虚函数链表尾部,转(4)处理
(4)、若仍有单元未处理,转(1)分析处理
步骤1.3、在所述class文件中编译器生成的虚函数表中,编译器选择一行开始存放所述基类对应虚函数;提取并使用链表记录所述基类对应虚函数在新虚函数链表的中起始存放位置,从而建立类的虚函数起始位置偏移链表;所述虚函数起始位置偏移链表中每个节点存储基类对应虚函数和派生类的首个虚函数在派生类的虚函数表中起始偏移位置;派生类的首个虚函数指在class文件中,编译器生成派生类的虚函数表中首个描述虚函数的单元,所述起始偏移位置使用指向类的新虚函数链表节点的指针表示;
class文件中的格式“Class class_name_derived”,标识了class_name_derived类的虚函数起始位置偏移信息在class文件中的存放位置,从“Class class_name_derived”所在的文件位置开始,根据class文件内容建立class_name_derived类的虚函数起始位置偏移链表。其中class_name_derived表示类全称,以下所述中的class_name_base也表示类全称,类全称和numu含义如上。对于含有class_name_base类全称的行,若下一行中出现“vptr=((other)+numu)”时,通过计算num/sizeof(char*)表达式的值,可以确定class_name_base类对应虚函数起始偏移位置对应class_name_derived类的新虚函数链表的第(num/sizeof(char*))个节点,其中sizeof(char*)表示一个指针占用的字节数,class_name_derived类的新虚函数链表首个节点为第0个节点,同时在class_name_derived类的虚函数起始位置偏移链表中添加新节点,新节点中存储了class_name_base类的名称和一个指针,所述指针指向了class_name_derived类的新虚函数链表中第(num/sizeof(char*))个节点。
步骤2、虚函数调用
步骤2.1、在cfg文件中,以“OBJ_TYPE_REF(other;pointer->num)(pointer,parameter)”格式表示虚函数调用,other为无需处理的字符,pointer为类类型的指针变量名称,num为一整数,parameter为虚函数参数列表,当虚函数无参数时,以“OBJ_TYPE_REF(other;pointer->num)(pointer)”标识虚函数调用,通过pointer指针调用虚函数时,根据所述pointer指针的动态类型,从建立的多个类的新虚函数链表和多个类的虚函数起始位置偏移链表中,选择pointer指针动态类型对应的新虚函数链表和虚函数起始位置偏移链表;以下步骤使用的新虚函数链表和虚函数起始位置偏移链表,均是本步骤中选择的新虚函数链表和虚函数起始位置偏移链表;
类类型指针pointer的静态类型指在声明pointer指针时的类型,pointer指针的动态类型与pointer指针当前指向的对象类型有关,动态类型和静态类型可以不一致,例如pointer静态类型是基类类型,动态类型为pointer静态类型对应的类的派生类。在分析cfg文件时,需要记录类类型指针的动态类型和静态类型信息。
步骤2.2、对虚函数起始位置偏移链表进行遍历并找到一节点,所述节点中存放了对应pointer指针静态类型的起始位置偏移信息,所述起始偏移位置使用指向新虚函数链表节点的指针进行表示,通过所述指针找到新虚函数链表中的一节点作为查找起始节点;
步骤2.3、根据所述cfg文件中pointer指针调用虚函数格式中的num整数,从查找起始节点开始查找第num个链表节点,且查找起始节点是第0个链表节点,并返回第num个节点中存储的虚函数名称;
步骤2.4、通过cfg文件中虚函数调用中的parameter虚函数参数列表,使用C++中重载规则,唯一确定被调用的虚函数,从而完成虚函数调用解析。
C++支持函数重载。当函数重载是,同一函数名称需要不同的函数签名区分不同函数,即函数参数类型和参数个数的不同区分重载函数。类的新虚函数链表中节点只记录了虚函数名称,在通过新虚函数链表返回虚函数名称之后根据cfg文件中调用虚函数时参数信息,唯一确定被调用的虚函数。

Claims (1)

1.一种基于cfg文件静态分析C++虚函数调用的方法,基于Linux平台G++编译器实现,其特征是按如下步骤进行:
步骤1、建立多个类的新虚函数链表和多个类的虚函数起始位置偏移链表:
步骤1.1、利用所述G++编译器对C++源程序进行编译时,添加编译参数fdump-tree-cfg和编译参数fdump-class-hierarchy后进行编译,由所述编译参数fdump-tree-cfg生成cfg文件,由所述编译参数fdump-class-hierarchy获得编译器生成的多个类的虚函数表,并保存在class文件中;所述class文件中包括被G++编译器改编的虚函数名称;
步骤1.2、提取所述class文件中的多个类的虚函数表,并把被G++编译器改编的虚函数名称恢复为C++源程序中的虚函数名称,按虚函数在class文件中出现的顺序使用链表按序进行存储,链表中每个节点对应编译器生成的虚函数表中一行,从而建立多个类的新虚函数链表,所述新虚函数链表中存储的函数名称与源程序中虚函数名称一致;当一个类含有基类时,所述编译器生成的虚函数表和新虚函数链表中包括被直接继承和重写的基类虚函数以及派生类自有虚函数;将所述被直接继承或重写的基类虚函数定义为基类对应的虚函数;
步骤1.3、在所述class文件中编译器生成的虚函数表中,编译器选择一行开始存放所述基类对应虚函数;提取并使用链表记录所述基类对应虚函数在新虚函数链表的中起始存放位置,从而建立类的虚函数起始位置偏移链表;所述虚函数起始位置偏移链表中每个节点存储基类对应虚函数和派生类的首个虚函数在派生类的虚函数表中起始偏移位置;所述起始偏移位置使用指向类的新虚函数链表节点的指针表示;
步骤2、虚函数调用:
步骤2.1、在cfg文件中,以“OBJ_TYPE_REF(other;pointer->num)(pointer,parameter)”格式表示虚函数调用,other为无需处理的字符,pointer为类类型的指针变量名称,num为一整数,parameter为虚函数参数列表,当虚函数无参数时,以“OBJ_TYPE_REF(other;pointer->num)(pointer)”标识虚函数调用,通过pointer指针调用虚函数时,根据所述pointer指针的动态类型,从所述建立的多个类的新虚函数链表和多个类的虚函数起始位置偏移链表中,选择pointer指针动态类型对应的新虚函数链表和虚函数起始位置偏移链表;
步骤2.2、对虚函数起始位置偏移链表进行遍历并找到一节点,所述节点中存放了对应pointer指针静态类型的起始位置偏移信息,所述起始偏移位置使用指向新虚函数链表节点的指针进行表示,通过所述指针找到新虚函数链表中的相应节点作为查找起始节点;
步骤2.3、根据所述cfg文件中pointer指针调用虚函数格式中的num整数,从所述查找起始节点开始查找第num个链表节点,且查找起始节点为第0个链表节点,并返回第num个节点中存储的虚函数名称;
步骤2.4、通过cfg文件中虚函数调用中的parameter虚函数参数列表,使用C++中重载规则,唯一确定被调用的虚函数,从而完成虚函数调用解析。
CN201410658925.5A 2014-11-18 2014-11-18 一种基于cfg文件静态分析C++虚函数调用的方法 Active CN104331368B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410658925.5A CN104331368B (zh) 2014-11-18 2014-11-18 一种基于cfg文件静态分析C++虚函数调用的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410658925.5A CN104331368B (zh) 2014-11-18 2014-11-18 一种基于cfg文件静态分析C++虚函数调用的方法

Publications (2)

Publication Number Publication Date
CN104331368A true CN104331368A (zh) 2015-02-04
CN104331368B CN104331368B (zh) 2017-04-05

Family

ID=52406100

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410658925.5A Active CN104331368B (zh) 2014-11-18 2014-11-18 一种基于cfg文件静态分析C++虚函数调用的方法

Country Status (1)

Country Link
CN (1) CN104331368B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106021110A (zh) * 2016-05-24 2016-10-12 南京大学 基于虚函数表继承关系的代码重利用攻击检测方法
CN108132799A (zh) * 2017-12-25 2018-06-08 首都师范大学 过程间静态程序分析信息提取方法、装置及设备
CN108874470A (zh) * 2017-05-11 2018-11-23 腾讯科技(深圳)有限公司 一种信息处理方法及服务器、计算机存储介质
CN109840093A (zh) * 2018-12-24 2019-06-04 苏州蜗牛数字科技股份有限公司 一种任意函数适配器实现方法
CN110187988A (zh) * 2019-06-06 2019-08-30 中国科学技术大学 适用于虚函数和函数指针的静态函数调用图构建方法
CN112100059A (zh) * 2020-08-20 2020-12-18 浙江大学 一种c语言的指针类型分析方法
CN112748916A (zh) * 2021-01-13 2021-05-04 叮当快药科技集团有限公司 基于自定义协议的功能模块组件化方法及装置
CN113703879A (zh) * 2021-08-31 2021-11-26 康键信息技术(深圳)有限公司 对象重载方法、装置、设备及存储介质
CN114741131A (zh) * 2022-04-02 2022-07-12 深圳软牛科技有限公司 动态库导出符号的隐藏方法、装置、设备及存储介质
CN116340942A (zh) * 2023-03-01 2023-06-27 软安科技有限公司 一种基于对象传播图和指针分析的函数调用图构建方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115584A1 (en) * 2001-12-13 2003-06-19 Brian Fahs Method and system to instrument virtual function calls
CN102708053A (zh) * 2012-04-27 2012-10-03 北京邮电大学 程序路径中确定函数调用的上下文环境影响的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115584A1 (en) * 2001-12-13 2003-06-19 Brian Fahs Method and system to instrument virtual function calls
CN102708053A (zh) * 2012-04-27 2012-10-03 北京邮电大学 程序路径中确定函数调用的上下文环境影响的方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
苗磊 等: ""基于静态分析的函数调用关系研究"", 《计算机与数字工程》 *
陈忠湘 等: ""带控制流的静态函数调用分析方法"", 《计算机工程》 *
龚健 等: ""基于静态分析的C++虚函数匹配算法研究"", 《微计算机信息》 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106021110B (zh) * 2016-05-24 2019-03-26 南京大学 基于虚函数表继承关系的代码重利用攻击检测方法
CN106021110A (zh) * 2016-05-24 2016-10-12 南京大学 基于虚函数表继承关系的代码重利用攻击检测方法
CN108874470A (zh) * 2017-05-11 2018-11-23 腾讯科技(深圳)有限公司 一种信息处理方法及服务器、计算机存储介质
CN108132799A (zh) * 2017-12-25 2018-06-08 首都师范大学 过程间静态程序分析信息提取方法、装置及设备
CN108132799B (zh) * 2017-12-25 2021-03-16 首都师范大学 过程间静态程序分析信息提取方法、装置及设备
CN109840093A (zh) * 2018-12-24 2019-06-04 苏州蜗牛数字科技股份有限公司 一种任意函数适配器实现方法
CN110187988A (zh) * 2019-06-06 2019-08-30 中国科学技术大学 适用于虚函数和函数指针的静态函数调用图构建方法
CN110187988B (zh) * 2019-06-06 2021-08-13 中国科学技术大学 适用于虚函数和函数指针的静态函数调用图构建方法
CN112100059B (zh) * 2020-08-20 2021-09-14 浙江大学 一种c语言的指针类型分析方法
CN112100059A (zh) * 2020-08-20 2020-12-18 浙江大学 一种c语言的指针类型分析方法
CN112748916A (zh) * 2021-01-13 2021-05-04 叮当快药科技集团有限公司 基于自定义协议的功能模块组件化方法及装置
CN112748916B (zh) * 2021-01-13 2022-08-23 叮当快药科技集团有限公司 基于自定义协议的功能模块组件化方法及装置
CN113703879A (zh) * 2021-08-31 2021-11-26 康键信息技术(深圳)有限公司 对象重载方法、装置、设备及存储介质
CN113703879B (zh) * 2021-08-31 2023-10-20 康键信息技术(深圳)有限公司 对象重载方法、装置、设备及存储介质
CN114741131A (zh) * 2022-04-02 2022-07-12 深圳软牛科技有限公司 动态库导出符号的隐藏方法、装置、设备及存储介质
CN114741131B (zh) * 2022-04-02 2023-08-15 深圳软牛科技有限公司 动态库导出符号的隐藏方法、装置、设备及存储介质
CN116340942A (zh) * 2023-03-01 2023-06-27 软安科技有限公司 一种基于对象传播图和指针分析的函数调用图构建方法
CN116340942B (zh) * 2023-03-01 2024-04-30 软安科技有限公司 一种基于对象传播图和指针分析的函数调用图构建方法

Also Published As

Publication number Publication date
CN104331368B (zh) 2017-04-05

Similar Documents

Publication Publication Date Title
CN104331368A (zh) 一种基于cfg文件静态分析C++虚函数调用的方法
CN106502745B (zh) 一种函数调用方法和装置
CN105468505B (zh) 覆盖率测试方法及覆盖率测试装置
CN105683924A (zh) 通过从在本机模式中执行转变为在经解释的模式中执行来调试本机代码
JP2005293578A (ja) 属性を介して制御されるテストケース継承
US20100275188A1 (en) Intermediate Language Representation and Modification
US8839196B2 (en) Parallel development of a software system
CN107544811B (zh) IOS平台隐藏dylib文件的方法、存储介质、电子设备及系统
CN110968296B (zh) 一种数据获取方法、装置、设备及可读存储介质
CN111506500B (zh) 内存泄露检测方法、装置、电子设备及可读存储介质
CN113094252B (zh) 测试用例生成方法、装置、计算机设备及存储介质
CN108694049B (zh) 一种更新软件的方法和设备
Kröger et al. User manual for the corryvreckan test beam data reconstruction framework, version 1.0
Romano et al. Dum-tool
CN116149668A (zh) 一种应用程序生成方法、装置、设备及存储介质
CN104978221A (zh) 实现程序的下载删除的方法及系统
CN110825361B (zh) 一种代码修改方法、装置、设备及可读存储介质
Geffken et al. Precise interprocedural side-effect analysis
CN113688056A (zh) 一种断点调试控制方法及相关设备
CN103116622B (zh) 一种用于Ibatis方案的序列值生成方法及装置
Garay-Ruiz et al. Human-Readable SMILES: Translating Cheminformatics to Chemistry
CN106775629B (zh) 搜索文件生成方法及装置
CN110245333A (zh) 字体类型检测方法、装置、电子设备及存储介质
Turcotte et al. signatr: A Data-Driven Fuzzing Tool for R
Revelle et al. Blaze: A Framework for Interprocedural Binary Analysis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230531

Address after: 710004 Room 103, B1 Building, West Yungu Phase I, Fengxi New City, Xixian New District, Xi'an City, Shaanxi Province

Patentee after: Xi'an Wopai Communication Technology Co.,Ltd.

Address before: 230000 Comprehensive Building A526, Advanced Technology Research Institute, University of Science and Technology of China, at the intersection of Wangjiang West Road and Chuangxin Avenue, Hefei City, Anhui Province

Patentee before: HEFEI COMJAY INFORMATION TECHNOLOGY Co.,Ltd.