CN105159828B - 源代码级的上下文敏感性检测方法 - Google Patents
源代码级的上下文敏感性检测方法 Download PDFInfo
- Publication number
- CN105159828B CN105159828B CN201510526528.7A CN201510526528A CN105159828B CN 105159828 B CN105159828 B CN 105159828B CN 201510526528 A CN201510526528 A CN 201510526528A CN 105159828 B CN105159828 B CN 105159828B
- Authority
- CN
- China
- Prior art keywords
- function
- context
- called
- depth
- information
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种源代码级的上下文敏感性检测方法,该上下文敏感性检测方法具体为:对源程序中函数调用的上下文敏感性进行统计,通过遍历函数调用图对每一个函数结点的调用和被调用关系进行梳理,统计出调用图深度、调用点个数、上下文不敏感调用点个数、不敏感率这些信息,用以判断函数被调用的情况,以便进行精确的软件行为建模;如果一个函数在不同位置被不同调用多次,那么这个函数就是上下文不敏感的;函数调用图为过程间获取到的;本发明的检测方法检测到的上下文敏感性是程序分析的一个重要属性,它可以用来提高函数调用上下文的分析精度,并且有利于编译器优化和程序验证。
Description
(一)技术领域
本发明涉及一种上下文敏感性检测方法,特别是涉及一种源代码级的上下文敏感性检测方法。
(二)背景技术
软件行为建模的主要目的是为了获取软件的状态信息,从而对软件的行为进行分析和预测。为了高效获取软件的状态信息,就需要设计一种合理的建模方法。根据需求和应用背景的不同,研究者提出了多种软件行为建模的方法:基于系统调用的短序列模型、考虑函数调用的自动机模型、考虑函数调用参数的数据流模型等等。其中,考虑函数调用的自动机模型在全函数范围内对函数的调用关系进行建模,比较典型的模型包括:非确定的有限状态自动机(NFA)、下推自动机(PDA)和Dyck模型。这些模型都是与上下文敏感性有关的建模方法,其中NFA是一种上下文不敏感的建模方法,存在不可能路径问题;而PDA和Dyck模型能够区分函数不同的被调用点,能够提供更高的建模精度,解决了不可能路径问题。
然而,在给定一个自动机模型进行行为建模之前,并未考虑软件具有何种上下文敏感性程度,若程序中的函数不存在多处被调用的上下文时,采取上下文敏感的自动机模型不但无法获得计算精度的提升,反而会带来冗余的计算开销。如果程序中存在多处被调用的上下文时,采用上下文不敏感的程序分析方法,则会存在不可能路径问题,导致软件在运行时被恶意程序攻击。因此,为了保证模型计算精度的同时,提高其可伸缩性,就需要在建模前对软件中的函数调用上下文进行分析,来指导软件的行为建模。上下文敏感性是影响程序分析精度的一种重要属性,上下文不敏感的程序分析与过程调用的上下文无关,而上下文敏感的程序分析需要考虑调用点和被调用点,能够产生更为精确的分析结果。
(三)发明内容
本发明要解决的技术问题是:提供一种源代码级的上下文敏感性检测方法,该方法检测到的上下文敏感性是程序分析的一个重要属性,它可以用来提高函数调用上下文的分析精度,并且有利于编译器优化和程序验证。
本发明的技术方案:一种源代码级的上下文敏感性检测方法,具体为:对源程序中函数调用的上下文敏感性进行统计,通过遍历函数调用图对每一个函数结点的调用和被调用关系进行梳理,统计出调用图深度、调用点个数、上下文不敏感调用点个数、不敏感率这些信息,用以判断函数被调用的情况,以便进行精确的软件行为建模;
如果一个函数在不同位置被不同调用多次,那么这个函数就是上下文不敏感的;
函数调用图为过程间获取到的。
采用遍历的方法对函数调用图进行分析的具体方法如下:
首先,获得结点main的相关信息,结点main为程序的入口点,结点main没有父结点,检测到main函数的调用深度为1,main函数中调用了子函数,按照遍历的方法获得深度为2的子函数结点,对于获得到的每个结点,在敏感性信息统计结构体和调用点结构体中记录函数的相关信息;
接着,对深度为2的子函数按照同样的遍历方法进行遍历获得到深度为3的被调用子函数结点的信息,此时,有些深度为3的子函数在函数main和深度为2的子函数中都被调用,就会在上下文敏感信息结构体统计信息中加入该不敏感函数调用点,不敏感掉用点个数增加1;按照相同的方法遍历剩余的子函数,从而获得上下文敏感性相关的信息。
函数调用图由Open64编译器的过程间分析生成,Open64编译器的过程间分析有三部分:
A.过程间本地分析(Inter-Procedural Local Analysis,IPL),收集所有程序的汇总信息;
B.过程间分析(Inter-Procedural Analysis,IPA),将过程间本地分析得到的汇总信息建立过程调用图,进行其他分析;过程间分析不检查中间表示,而是工作在汇总信息上,包括过程间常量传播、内联替换以及别名分析;
C.过程间优化(Inter-Procedural,IPO),主要根据过程间分析的结果获 取中间表示,对源代码进行变换;
Open64编译器的过程间分析框架使用四种技术:过程调用图构建、内联替换、别名分析和过程克隆。
Open64编译器在过程间分析时生成的函数调用图是扩展调用图。
Open64编译器通过检查程序中的每个函数的函数体,为其中每个函数调用点加入一条从调用函数到被调用函数的边,以这样的方式遍历整个程序的源代码,获取所有函数之间调用和被调用的关系,生成含有结点和边信息的函数调用图。
敏感性信息统计结构体(CONTEXT_SENSITIVE_INFO)用以存储和统计函数上下文敏感性的相关信息,这些信息包括函数调用深度、被调用函数的个数、不敏感函数个数和概率、不敏感的被调用函数个数和均值以及不敏感的最大深度;调用点结构体(CALL_INFO)用来统计调用点深度、调用点名称、被调用点深度和被调用点名称。
该源代码级的上下文敏感性检测方法获取到的上下文敏感性信息可用来指导软件行为建模:(1)上下文不敏感的软件可以采用有限状态自动机来构建软件模型;(2)上下文敏感的软件可以采用下推自动机、Dyck模型来构建软件模型;(3)既含有上下文敏感和上下文不敏感调用点的软件,可以采取有限状态自动机和下推自动机相结合的方式进行建模。
本发明的有益效果:
上下文敏感性是程序分析的一个重要属性,它可以用来提高函数调用上下文的分析精度,并且有利于编译器优化和程序验证;然而,目前针对源代码上下文敏感性的分析相对较少,也没有集成在编译器中。本发明基于Open64高性能编译器,实现了一种源代码上下文敏感性检测算法,通过编译器的过程间分析扩展了传统函数调用图,构建出函数扩展调用图,在此基础上进行上下文敏感性分析,获取函数调用上下文敏感性的相关信息,包括函数调用深度、不敏感调用点个数以及最大不敏感深度等。
(四)附图说明
图1为程序源代码对应的过程间函数调用关系图;
图2为Open64编译器的过程间分析框架图;
图3为传统调用图与扩展调用图的对比图。
(五)具体实施方式
源代码级的上下文敏感性检测方法为:对源程序中函数调用的上下文敏感性进行统计,通过遍历函数调用图对每一个函数结点的调用和被调用关系进行梳理,统计出调用图深度、调用点个数、上下文不敏感调用点个数、不敏感率这些信息,用以判断函数被调用的情况,以便进行精确的软件行为建模;
如果一个函数在不同位置被不同调用多次,那么这个函数就是上下文不敏感的;
函数调用图为过程间获取到的。
以下是一个含有不敏感函数调用点的程序源代码:
show_char(char ch[],int num)
{
int count;
for(count=1;count<=num,count++)
putchar(ch);
}
show_insert(char ch[])
{
char cat[]="insert";
strcat(ch,cat);
show_char(ch,strlen(ch));
}
int show(char ch[])
{
puts(ch);
……
show_insert(ch);
}
int count(char ch[])
{
printf("%d\n",strlen(ch));
……
}
main()
{
char ch[]="length_count";
show(ch,4);
count(ch);
show_insert(ch,5);
}
图1是该程序源代码对应的过程间函数调用关系图,在该函数调用图的基础上采用上下文敏感性检测算法检测函数的上下文敏感性。
采用遍历的方法对函数调用图进行分析的具体方法如下:
首先,获得结点main的相关信息,结点main为程序的入口点,结点main没有父结点,检测到main函数的调用深度为1,main函数中调用了三个子函数,按照遍历的方法获得深度为2的子函数结点的顺序为:show、show_insert、count,对于获得到的每个结点,在敏感性信息统计结构体(CONTEXT_SENSITIVE_INFO)和调用点结构体(CALL_INFO)中记录函数的相关信息;
接着,对深度为2的子函数show按照同样的遍历方法进行遍历获得到深度为3的被调用子函数结点show_insert的信息;此时,有些深度为3的子函数show_insert在函数main和深度为2的子函数show中都被调用,就会在上下文敏感信息结构体统计信息中加入该不敏感函数调用点,不敏感掉用点个数增加1;按照遍历函数main和子函数show相同的方法遍历图1中剩余的子函数,从而获得上下文敏感性相关的信息。
函数调用图由Open64编译器的过程间分析生成,Open64编译器的过程间分析有三部分:
A.过程间本地分析(Inter-Procedural Local Analysis,IPL),收集所有程序的汇总信息;
B.过程间分析(Inter-Procedural Analysis,IPA),将过程间本地分析得到的汇总信息建立过程调用图,进行其他分析;过程间分析不检查中间表示,而是工作在汇总信息上,包括过程间常量传播、内联替换以及别名分析;
C.过程间优化(Inter-Procedural,IPO),主要根据过程间分析的结果获取中间表示,对源代码进行变换;
Open64编译器的过程间分析框架使用四种技术:过程调用图构建、内联替换、别名分析和过程克隆。
Open64编译器在过程间分析时生成的函数调用图是扩展调用图。
Open64编译器通过检查程序中的每个函数的函数体,为其中每个函数调用点加入一条从调用函数到被调用函数的边,以这样的方式遍历整个程序的源代码,获取所有函数之间调用和被调用的关系,生成含有结点和边信息的函数调用图。
敏感性信息统计结构体(CONTEXT_SENSITIVE_INFO)用以存储和统计函数上下文敏感性的相关信息,这些信息包括函数调用深度、被调用函数的个数、不敏感函数个数和概率、不敏感的被调用函数个数和均值以及不敏感的最大深度; 调用点结构体(CALL_INFO)用来统计调用点深度、调用点名称、被调用点深度和被调用点名称。
为了能够更透彻、更直观地理解本发明的设计方案和特点,进行下列描述:
1过程间分析
本发明中提出的函数上下文敏感性检测算法的实现主要依赖于Open64编译器生成的函数调用图,在函数调用图的结构上对函数敏感性进行检测。文中主要从Open64编译器的分析框架、扩展调用图与传统调用图的区别,以及函数扩展调用图的生成和遍历方法三个方面对函数调用图的构造过程进行说明。
1.1分析框架
分析过程主要通过Open64编译器实现,使用Open64的过程间分析生成函数调用图。Open64的过程间分析主要有三部分组成:
(1)过程间本地分析(Inter-Procedural Local Analysis,IPL),收集所有程序的汇总信息;
(2)过程间分析(Inter-Procedural Analysis,IPA),将过程间本地分析得到的汇总信息建立过程调用图,进行其他分析;过程间分析不检查中间表示,而是工作在汇总信息上,包括过程间常量传播、内联替换以及别名分析等分析方法;
(3)过程间优化(Inter-Procedural,IPO),主要根据IPA分析的结果,获取中间表示对源代码进行变换。
Open64的过程间分析框架主要使用四种技术:过程调用图构建,内联替换,别名分析和过程克隆。分析框架如图2所示,函数调用图构造主要依赖Open64过程间分析的过程间本地分析和过程间分析两部分。
1.2扩展函数调用图
程序调用图用来表示程序过程间的调用关系,程序中每一个调用点通常需要用图中一条单独的边来表示,这种情况下,调用图实际上是一个多重图。调用图的准确性直接影响到对函数调用上下文分析的准确性。扩展调用图是对传统的调用图的一种改进,采用树形结构,主要用来表示程序的执行流程特征。图中的每个结点代表一个函数或一个过程。扩展调用图相比传统调用图扩展了一些额外的信息,对于同一函数的多个被调用点,扩展调用图将会把该函数表 示为多个结点。以图3中传统调用图与扩展调用图的对比为例,传统的调用图中,同一段代码的不同调用点都指向同一个结点,内核函数结点多个调用函数共享,如图3中的(a)所示;而在扩展调用图中,不同的调用点指向不同的结点,内核函数结点多个调用函数各自拥有,如图3中的(b)所示。Open64在过程间分析时生成的函数调用图是扩展调用图,通过增加冗余结点的方式,可以准确表示源代码的函数调用关系。
1.3调用图的建立和遍历
程序的调用图是表示程序中函数之间调用关系的一种图形结构,Open64通过检查程序中的每个函数的函数体,为其中每个函数调用点加入一条从调用函数到被调用函数的边,以这样的方式遍历整个程序的源代码,获取所有函数之间调用和被调用的关系,生成含有结点和边信息的函数调用图G=(N,E),其中N中结点代表程序中的函数,E中的边代表函数的调用关系。
正确建立函数调用图之后,需要采取相应的图的遍历方法,获取并存储函数调用图的结构,用于将要进行的函数上下文敏感性分析。不同的遍历方法获取到的调用图的结构,以及调用的先后顺序都是不同的。Open64编译器含有对函数遍历的结构TRAVERSAL_ORDER,来对源代码中的函数关系进行遍历,主要包括前序遍历PREORDER,后序遍历POSTORDER,层级遍历LEVELORDER和另一种后序遍历DONTCARE。表1描述了不同遍历方法的相关信息:
表1调用图遍历算法调用次序说明
其中,前序遍历的方法与传统的“中左右”方式略有不同,使用的是“中右左”的遍历方法,后序遍历采用的是“右中左”方式,在层级遍历中,按照调用深度由高层级到低层级依次遍历,在每一层中的遍历顺序为从右到左,而Open64给出的另一种遍历方式DONTCARE实质采取的是一种“左右中”的后序遍历;这些遍历方式按不同的次序访问了调用图上的每个结点。由于对函数调用图的遍历不论是哪种方式对上下文敏感性检测算法的正确性都没有影响,这里 我们选取了前序遍历作为访问函数调用图中每个结点的遍历方法。
2上下文敏感性检测方法
存储上下文敏感性信息的结构体主要有CONTEXT_SENSITIVE_INFO和CALL_INFO,CONTEXT_SENSITIVE_INFO用以存储和统计函数上下文敏感性的相关信息,这些信息主要包括函数调用深度,被调用函数的个数,不敏感函数个数、概率,不敏感的被调用函数个数、均值,以及不敏感的最大深度。CALL_INFO主要用来统计调用点深度,调用点名称,被调用点深度和被调用点名称。
本发明是针对前序遍历order=PREORDER获得的源代码的函数调用图进行敏感性的分析;首先使用Open64中的迭代器将前序遍历的调用图进行迭代遍历,将结果输出到cg_iter中;对上文中描述的结构体进行实例化操作,获取到名为context_sensitivity_info的结构体数组用以存储敏感性相关的信息;申请一个callee_info的数组,保证最大的申请空间MAX_CALLSITE,用来存储被调用函数的信息。
(1)初始化context_sensitivity_info,设置一个整形变量callee_func_num用来存储调用图cg_iter中的被调用点的个数,针对获取到的被调用点的个数,本发明设置了嵌套循环用来获取源代码调用图中函数的上下文敏感的调用信息;
(2)使用IPA_NODE初始化的node来存储遍历图中当前的调用点,初始化调用边callsite_list,该调用边用来保存当前调用点与被调用函数的关系信息,也就是当前函数都调用了哪些子函数;初始化另外一个调用边ipa_edge_iter,调用边ipa_edge_iter是为了获取到callsite_list中所有的边,同时调用边ipa_edge_iter也用来控制循环内部的循环;
(3)对于每一个调用边ipa_edge_iter,结构体数组context_sensitivity_info中的调用点总数都增加1,根据当前结构体中的敏感性信息,计算出被调用者callee_info的信息,内部循环结束;
(4)对每个callsite_list的边都执行内部循环操作,结束后跳出外部循环,此时所有的循环操作都执行完毕,调用图cg_iter中的敏感性信息都存储在结构体数组context_sensitivity_info中,对其中的不敏感信息以及其他概率关系进行计算并打印输出。算法复杂度为O(n2),算法伪代码如下:
procedure Context_Sensitivity_Analysis(File*fp,TRAVERSAL_ORDER order=PREORDER)
(1)IPA_NODE_ITER cg_iter=Initial_IPA_Node_iter(IPA_CALL_GRAPH,order);
(2)CONTEXT_SENSITIVITY_INFO context_sensitivity_info;
(3)CALLEE_INFO callee_info[MAX_CALLSITES];
(4)Initial_context_sensitivity_info(context_sensitivity_info);
(5)int callee_func_num=Stat_Callee_func_Num(cg_iter);
(6)for eachcg_iter do
(7)IPA_NODE*node=cg_iter.Current();
(8)vector<IPA_EDGE_INDEX>callsite_list;
(9)callsite_list=Get_Sorted_Callsite_List(node,IPA_CALL_GRAPH);
(10)vector<IPA_EDGE_INDEX>ipa_edge_iter=Initial_IPA_Edge_iter(callsite_list);
(12)for each ipa_edge_iter do
(13)context_sensitivity_info.totol_call_site_num++;
(14)Accumulate_Callee_Info(callee_info);
(15)context_sensitive_info.insen_max_deep=Calculate_Insen_Max_Deep(callee_info,IPA_CALL_GRAPH);
(16)endfor
(17)endfor
(18)Calculate_Insen_Callee_Info(context_sensitivity_info,callee_info);
(19)Calculate_Other_Probability_Info(context_sensitivity_info);
(20)Fprint_Vobose(fp,context_sensitivity_info);
end。
Claims (5)
1.一种源代码级的上下文敏感性检测方法,其特征是:对源程序中函数调用的上下文敏感性进行统计,通过遍历函数调用图对每一个函数结点的调用和被调用关系进行梳理,统计出调用图深度、调用点个数、上下文不敏感调用点个数、不敏感率这些信息,用以判断函数被调用的情况,以便进行精确的软件行为建模;
如果一个函数在不同位置被不同调用多次,那么这个函数就是上下文不敏感的;
函数调用图为过程间分析获取到的;采用所述遍历的方法对函数调用图进行分析的具体方法如下:
首先,获得结点main的相关信息,结点main为程序的入口点,结点main没有父结点,检测到main函数的调用深度为1,main函数中调用了子函数,按照遍历的方法获得深度为2的子函数结点,对于获得到的每个结点,在敏感性信息统计结构体和调用点结构体中记录函数的相关信息;
接着,对深度为2的子函数按照同样的遍历方法进行遍历获得到深度为3的被调用子函数结点的信息,此时,有些深度为3的子函数在函数main和深度为2的子函数中都被调用,就会在上下文敏感信息结构体统计信息中加入该不敏感函数调用点,即深度为3的子函数,不敏感调用点个数增加1,即总的不敏感调用点个数增加1;按照相同的方法遍历剩余的子函数,从而获得上下文敏感性相关的信息。
2.根据权利要求1所述的源代码级的上下文敏感性检测方法,其特征是:所述函数调用图由Open64编译器的过程间分析生成,Open64编译器的过程间分析有三部分:
A.过程间本地分析,收集所有程序的汇总信息;
B.过程间分析,将过程间本地分析得到的汇总信息建立过程调用图,进行其他分析;过程间分析不检查中间表示,而是工作在汇总信息上,包括过程间常量传播、内联替换以及别名分析;
C.过程间优化,主要根据过程间分析的结果获取中间表示,对源代码进行变换;
Open64编译器的过程间分析框架使用四种技术:过程调用图构建、内联替换、别名分析和过程克隆。
3.根据权利要求2所述的源代码级的上下文敏感性检测方法,其特征是:所述Open64编译器在过程间分析时生成的函数调用图是扩展调用图。
4.根据权利要求2所述的源代码级的上下文敏感性检测方法,其特征是:所述Open64编译器通过检查程序中的每个函数的函数体,为其中每个函数调用点加入一条从调用函数到被调用函数的边,以这样的方式遍历整个程序的源代码,获取所有函数之间调用和被调用的关系,生成含有结点和边信息的函数调用图。
5.根据权利要求1所述的源代码级的上下文敏感性检测方法,其特征是:所述敏感性信息统计结构体用以存储和统计函数上下文敏感性的相关信息,这些信息包括函数调用深度、被调用函数的个数、不敏感函数个数和概率、不敏感的被调用函数个数和均值以及不敏感的最大深度;调用点结构体用来统计调用点深度、调用点名称、被调用点深度和被调用点名称。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510526528.7A CN105159828B (zh) | 2015-08-25 | 2015-08-25 | 源代码级的上下文敏感性检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510526528.7A CN105159828B (zh) | 2015-08-25 | 2015-08-25 | 源代码级的上下文敏感性检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105159828A CN105159828A (zh) | 2015-12-16 |
CN105159828B true CN105159828B (zh) | 2018-02-02 |
Family
ID=54800690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510526528.7A Active CN105159828B (zh) | 2015-08-25 | 2015-08-25 | 源代码级的上下文敏感性检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159828B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105528295B (zh) * | 2016-01-04 | 2018-12-14 | 北京航空航天大学 | 移动应用程序异常行为检测方法及装置 |
CN106874764B (zh) * | 2017-01-16 | 2019-10-29 | 南开大学 | 一种基于回调函数建模自动生成Android应用回调序列的方法 |
CN109784048B (zh) * | 2018-12-12 | 2023-12-01 | 天航长鹰(江苏)科技有限公司 | 一种基于程序图的栈缓冲区溢出脆弱性检测方法 |
CN109858204B (zh) * | 2019-01-03 | 2021-01-15 | 武汉极意网络科技有限公司 | 一种基于llvm的程序代码保护方法及装置 |
CN109710538B (zh) * | 2019-01-17 | 2021-05-28 | 南京大学 | 一种用于大规模系统中状态相关缺陷的静态检测方法 |
CN111143858B (zh) * | 2019-12-31 | 2022-04-15 | 中国联合网络通信集团有限公司 | 数据检查方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
CN104751052A (zh) * | 2013-12-30 | 2015-07-01 | 南京理工大学常熟研究院有限公司 | 基于svm算法的移动智能终端软件的动态行为分析方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7689410B2 (en) * | 2004-04-23 | 2010-03-30 | Microsoft Corporation | Lexical semantic structure |
-
2015
- 2015-08-25 CN CN201510526528.7A patent/CN105159828B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
CN104751052A (zh) * | 2013-12-30 | 2015-07-01 | 南京理工大学常熟研究院有限公司 | 基于svm算法的移动智能终端软件的动态行为分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105159828A (zh) | 2015-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159828B (zh) | 源代码级的上下文敏感性检测方法 | |
Ding et al. | Autotuning algorithmic choice for input sensitivity | |
CN104636256B (zh) | 一种内存访问异常的检测方法及装置 | |
CN107229563B (zh) | 一种跨架构的二进制程序漏洞函数关联方法 | |
CN116049831A (zh) | 一种基于静态分析和动态分析的软件漏洞检测方法 | |
CN106471476A (zh) | 用于对经优化代码的编辑并继续以及增强的经优化调试的技术 | |
WO2019201225A1 (en) | Deep learning for software defect identification | |
CN111045670B (zh) | 一种二进制代码与源代码间复用关系的识别方法与装置 | |
CN107085533B (zh) | 一种指针修改影响的分析方法和系统 | |
CN115146279A (zh) | 程序漏洞检测方法、终端设备及存储介质 | |
CN107247668A (zh) | 代码自动检测和校正方法 | |
CN116150757A (zh) | 一种基于cnn-lstm多分类模型的智能合约未知漏洞检测方法 | |
Quante et al. | Dynamic protocol recovery | |
US12093399B1 (en) | Vulnerability detection method and device for smart contract, and storage medium | |
CN103455417B (zh) | 一种基于马尔可夫模型的软件错误定位系统及错误定位方法 | |
CN106919576A (zh) | 利用二级类目下的关键词库搜索应用程序的方法及装置 | |
Liu et al. | Automatic performance debugging of SPMD-style parallel programs | |
CN108563561A (zh) | 一种程序隐性约束提取方法及系统 | |
Saumya et al. | Xstressor: Automatic generation of large-scale worst-case test inputs by inferring path conditions | |
Zhou et al. | Deeptle: Learning code-level features to predict code performance before it runs | |
CN107168881A (zh) | 代码异常定位与处理方法 | |
Kempka et al. | A theoretical runtime and empirical analysis of different alternating variable searches for search-based testing | |
Yang et al. | A method-level defect prediction approach based on structural features of method-calling network | |
CN104408023B (zh) | 一种指标计算的方法及指标计算器 | |
Morgachev et al. | Detection of variable misuse using static analysis combined with machine learning |
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 |