CN111858358A - 一种面向二进制代码的导向型模糊测试方法 - Google Patents

一种面向二进制代码的导向型模糊测试方法 Download PDF

Info

Publication number
CN111858358A
CN111858358A CN202010717878.2A CN202010717878A CN111858358A CN 111858358 A CN111858358 A CN 111858358A CN 202010717878 A CN202010717878 A CN 202010717878A CN 111858358 A CN111858358 A CN 111858358A
Authority
CN
China
Prior art keywords
address
target
execution
current
node
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
CN202010717878.2A
Other languages
English (en)
Other versions
CN111858358B (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202010717878.2A priority Critical patent/CN111858358B/zh
Publication of CN111858358A publication Critical patent/CN111858358A/zh
Application granted granted Critical
Publication of CN111858358B publication Critical patent/CN111858358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种面向二进制代码的导向型模糊测试方法,其步骤为:步骤S1:分析目标程序并标记目标基本块地址;步骤S2:载入二进制程序并获取程序地址信息,并将二进制代码进行反汇编得到汇编代码,构建程序控制流图;步骤S3:在程序执行时记录分支跳转情况,并在执行结束后进行解码,导出执行路径,构建并完善控制流图,更新分支执行的统计数据;步骤S4:基于当前的执行路径、结合分支的执行统计数据,计算当前路径与目标的距离;步骤S5:用计算的目标距离作为反馈,引导下一轮种子的选取和测试。本发明具有原理简单、易实现、能够提高精度等优点。

Description

一种面向二进制代码的导向型模糊测试方法
技术领域
本发明主要涉及到软件检测技术领域,特指一种面向二进制代码的导向型模糊测试方法。
背景技术
模糊测试技术是通过随机构造目标程序的输入来触发程序中未知的错误。目前,模糊测试主要包括黑盒测试和灰盒测试,黑盒测试是使用完全随机构造的输入来测试程序;而灰盒测试是通过反馈来引导模糊测试,一般包括以下步骤:构造输入、执行程序、结果反馈、选取种子、种子变异等。目前的模糊测试,多是基于覆盖率反馈引导的,其方法的核心是将种子变异结果中能够触发新的执行路径的样本作为下一轮的种子继续进行变异。
导向型模糊测试是通过在代码中设定目标点,引导模糊测试重点测试目标代码片区,主要应用在脆弱性分析、补丁测试,缺陷复现等场景。它方法的核心是计算当前执行路径与目标点之间的距离,并将此距离作为反馈来驱动测试。目前导向型模糊测试的工作有两个,都是通过源代码插桩来设定目标地址和记录程序执行信息,因而依赖源代码,且软件层面的插桩引入了较大的运行时开销;基于静态分析构建的控制流图不完整、不精确,缺少间接跳转等指令,不能感知执行路径在指令级的差异,导致后续分析不精确。此外,目标距离的计算都只基于分支跳转数目进行计算,忽略了不同分支跳转概率存在差异,因而造成计算的距离不准确,导向性效果差。
如图1所示,为其执行路径的简图,假定x是取值范围为0到9的整数,则从节点A到节点C的概率为0.1,到节点B的概率为0.9,以此类推,B到D,B到E,D到F,D到G的概率分别为0.7,0.3,0.5,0.5。按照目前仅依靠跳转次数计算距离的算法,A到C的距离要比A到G的距离近,因为A到C只要1次跳转,而A到G有3跳。但是当将每一跳的跳转概率也考虑在内的话,A到C的概率为0.1,而A到G的概率为0.9×0.7×0.5≈0.3,比A到C的概率还要高。因此,在导向模糊测试中,A到G的“距离”比A到C要更近,将分支的跳转概率考虑在内更合理。
控制流图:由程序的跳转指令地址和跳转目标地址组成的拓扑图,用来展示程序可能的执行路径。
基本块:程序的汇编代码中,从一个跳转指令到另一个跳转指令之间的连续的指令序列称为一个基本块。基本块中的指令执行是确定的,按照由前往后,逐条执行。控制流图中的一个节点通常代表一个基本块。
能量:模糊测试中,能量用来衡量一个种子变异后生成的测试用例的多少。为一个种子分配的能量越大,则基于该种子变异出的测试用例越多,测试的次数也越多。
现有技术存在的技术问题就在于:
1、未插桩的二进制代码执行过程中难以捕获执行信息。
2、静态构建的控制流图不完整,缺少间接跳转指令的目标地址。
3、控制流图对指令级的执行路径差异不敏感。
4、不同分支的跳转概率难以衡量。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、易实现、能够提高精度的面向二进制代码的导向型模糊测试方法。
为解决上述技术问题,本发明采用以下技术方案:
一种面向二进制代码的导向型模糊测试方法,其步骤为:
步骤S1:分析目标程序并标记目标基本块地址;
步骤S2:载入二进制程序并获取程序地址信息,并将二进制代码进行反汇编得到汇编代码,构建程序控制流图;
步骤S3:在程序执行时记录分支跳转情况,并在执行结束后进行解码,导出执行路径,构建并完善控制流图,更新分支执行的统计数据;
步骤S4:基于当前的执行路径、结合分支的执行统计数据,计算当前路径与目标的距离;
步骤S5:用计算的目标距离作为反馈,引导下一轮种子的选取和测试。
作为本发明方法的进一步改进:所述步骤S1中,对于目标地址的选取分为两种:
(a)选择某个特定的基本块为目标,只要一个基本块被选中,则基本块内的指令都会被逐一执行;
(b)选择某个函数的调用地址,即call指令的地址;该地址也是一个间接跳转指令的地址;通过IDA载入二进制代码,直接读取目标基本块或者目标函数调用的地址。
作为本发明方法的进一步改进:所述步骤S2中,通过Python CLE载入二进制程序,读取程序的地址区间和入口地址;然后使用capstone将二进制代码反汇编,得到汇编代码每条指令对应的地址。
作为本发明方法的进一步改进:所述步骤S3中,所述控制流图的节点node=(cur,prev,next,count,in_cur_trace,is_cofi_node),其中,cur为当前节点的地址,prev为前一节点的地址,next为后一节点的地址,count为当前节点执行数目的统计,in_cur_trace标记该节点是否在当前执行路径中,is_cofi_node标识该节点是否为跳转指令。
作为本发明方法的进一步改进:所述步骤S3中,利用PT通过TNT包记录直接跳转指令是否跳转,通过TIP包记录间接跳转指令实际的跳转地址;通过动态执行目标程序并解码PT记录的数据包,得出由跳转指令地址和实际跳转地址组成的执行trace,还原程序实际的执行路径。
作为本发明方法的进一步改进:所述基于PT数据包解码得到的实际执行路径,包括:
(1)通过实际执行中的跳转,填补控制流图中缺失的间接跳转,使静态构建的控制流图在动态执行中趋向完整;
(2)对控制流图中不同分支跳转的次数进行统计,计算各分支跳转的概率;同一跳转指令在不同输入的多次执行中反映出的统计特征,间接反映出变异生成的输入数据满足该分支的难易程度,用于预测在下一轮执行中该分支的跳转概率;
(3)在控制流图上标出实际执行的节点,用于后续与目标节点距离的计算。
作为本发明方法的进一步改进:所述步骤S4中,基于构建的控制流图,对当前执行路径和目标地址进行分析,如果当前执行路径经过目标地址,则当前的测试样本输入满足导向性要求,结束搜索;如果当前执行路径未经过目标地址,则从目标地址开始,沿着控制流图反向搜索,直到某个节点属于当前的执行路径,记录此节点到目标地址的跳转路径,即为当前执行路径到目标地址的跳转路径;如果搜索结束时最后的节点不是属于当前执行路径上的节点,则不能通过反向搜索将目标节点与当前执行路径连接,说明当前控制流图还不完整。
作为本发明方法的进一步改进:所述步骤S5中,对种子能量进行再分配,即基于当前执行路径到目标地址的跳转路径,结合跳转路径上各个分支的跳转概率,对当前的测试样本输入进行打分,并将分数反馈给AFL模糊测试框架;
作为本发明方法的进一步改进:基于反馈的分数,为当前种子在后续测试中分配更能量;分数取值范围为0到1,如果分数为1,说明当前输入对应的执行路径正好经过目标地址,接下来的模糊测试给其分配最高能量;如果分数介于0和1之间,说明当前输入对应的执行路径经过有限次跳转之后,可达目标路径,且分数越高,到达目标地址的可能性越高;分数越高,分配能量越多。
与现有技术相比,本发明的优点在于:
1、本发明的面向二进制代码的导向型模糊测试方法,是针对二进制代码的导向型模糊测试方法,其为一种首创的测试方法。
2.本发明的面向二进制代码的导向型模糊测试方法,能够提升测试精度,本发明针对目前导向型模糊测试方法中目标距离的计算只基于分支跳转数目,忽略了不同分支跳转的概率差异,因而导向精度差的问题,将分支跳转的数目和概率相结合来计算目标距离,有效提高了导向精度。本发明进一步使用的精细化控制流图,通过引入非跳转指令节点,将跳转的目标地址也作为节点补充到控制流图中,可区分不同执行路径在指令级的细微差别,提高路径区分精度。
3.本发明的面向二进制代码的导向型模糊测试方法,自动化程度高,其实现了自动化导向型模糊测试系统,只需要提供二进制目标程序和目标代码地址,就可以自动完成导向型模糊测试过程。
附图说明
图1是分支跳转概率作用示意图。
图2是本发明在具体应用实例中的流程示意图。
图3是本发明在具体应用实例中精细化控制原理示意图。
图4是本发明在具体应用实例中当前执行路径到目标节点跳转路径的反向搜索算法的示意图。
图5是本发明在具体应用实例中基于跳转路径和跳转概率的打分算法的示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图2所示,本发明的一种面向二进制代码的导向型模糊测试方法,其步骤包括:
步骤S1:标记目标地址。
在具体应用实例中,对于目标地址的选取分为两种:
(a)选择某个特定的基本块为目标,如选取基本块的第一条指令的地址为基本块地址,只要一个基本块被选中,则基本块内的指令都会被逐一执行。
(b)选择某个函数的调用地址,即call指令的地址;该地址也是一个间接跳转指令的地址。通过IDA载入二进制代码,可以直接读取目标基本块或者目标函数调用的地址。
步骤S2:载入二进制程序。
通过Python CLE载入二进制程序,读取程序的地址区间和入口地址;然后使用capstone将二进制代码反汇编,得到汇编代码每条指令对应的地址。
其中Python CLE为Python的CLE模块,它能够加载二进制程序和其相关的库并解析,然后提供与操作系统加载后的进程内存相同的抽象信息,辅助程序分析。
其中Capstone,是一款跨平台的,支持多种语言的反汇编引擎,能够将二进制代码反汇编为汇编代码。
步骤S3:构建程序控制流图。
基于汇编代码,本发明进一步可以构建静态的控制流图。
所述控制流图的节点node=(cur,prev,next,count,in_cur_trace,is_cofi_node),其中,cur为当前节点的地址,prev为前一节点的地址,next为后一节点的地址,count为当前节点执行数目的统计,in_cur_trace标记该节点是否在当前执行路径中,is_cofi_node标识该节点是否为跳转指令。
传统控制流图仅包含cofi node,即跳转指令节点,而每个基本块都包含一个跳转指令,因此,传统的控制流图只能精确到基本块级别,不能区分执行路径在指令级的细微差别。如图3所示,当相邻的两个基本块之间出现跳转时,在传统的控制流图中,无论在400657地址出是否跳转,控制流图都只有一条路径400657->400671,无法区分是否跳转。
而本发明使用的精细化控制流图,通过引入非跳转指令节点,将跳转的目标地址也作为节点补充到控制流图中,可区分不同执行路径在指令级的细微差别,提高路径敏感性。如图3所示,跳转的路径可标识为400657->400666->400671,非跳转路径可标识为400657->40065d->400671。
静态的控制流图只能包含条件直接跳转指令和无条件直接跳转指令,暂时不能包含间接跳转指令,因此,现阶段构建的控制流图还不完整,需要在后续测试中不断捕获间接跳转的目标地址并完善控制流图。
步骤S4:通过Intel PT记录程序执行信息;
所述Intel PT(Processor Trace)是Intel处理器支持的一项附加功能,用来辅助程序分析。该功能存在于i5 5000以上处理器中,能够在程序运行时记录程序的实际执行相关的信息,包括分支的实际跳转,以及间接跳转的实际目标地址等。
本发明利用PT通过TNT包记录直接跳转指令是否跳转,通过TIP包记录间接跳转指令实际的跳转地址。通过动态执行目标程序并解码PT记录的数据包,可以得出由跳转指令地址和实际跳转地址组成的执行trace,从而可以完整还原程序实际的执行路径。
步骤S5:实际执行路径信息反馈;
基于PT数据包解码得到的实际执行路径,可以达到三个目的。
(1)完善控制流图:通过实际执行中的跳转,填补控制流图中缺失的间接跳转,使静态构建的控制流图在动态执行中趋向完整。
(2)对控制流图中不同分支跳转的次数进行统计,从而计算各分支跳转的概率。同一跳转指令在不同输入的多次执行中反映出的统计特征,可以间接反映出变异生成的输入数据满足该分支的难易程度,从而可以用于预测在下一轮执行中该分支的跳转概率。
(3)在控制流图上标出实际执行的节点,便于后续与目标节点距离的计算。
其中,(1)和(2)的信息随着执行次数的增加会越来越完善,而(3)的信息每次执行后都会改变。
步骤S6:目标距离计算;
基于构建的控制流图,对当前执行路径和目标地址进行分析。
在具体应用实例中,如果当前执行路径经过目标地址,则当前的测试样本输入满足导向性要求,结束搜索;如果当前执行路径未经过目标地址,则从目标地址开始,沿着控制流图反向搜索,直到某个节点属于当前的执行路径,记录此节点到目标地址的跳转路径,即为当前执行路径到目标地址的跳转路径;如果搜索结束时最后的节点不是属于当前执行路径上的节点,则不能通过反向搜索将目标节点与当前执行路径连接,说明当前控制流图还不完整,理论上,在完整的控制流图上一定能通过反向搜索连接,最坏情况,会反向搜索到第一个基本块(包含入口地址)。具体算法如图4所示。
步骤S7:种子能量再分配;
基于当前执行路径到目标地址的跳转路径,结合跳转路径上各个分支的跳转概率,按照如图5所示的算法对当前的测试样本输入进行打分,并将分数反馈给AFL模糊测试框架。
基于反馈的分数,为当前种子在后续测试中分配更能量。分数取值范围为0到1,如果分数为1,说明当前输入对应的执行路径正好经过目标地址,接下来的模糊测试给其分配最高能量;如果分数介于0和1之间,说明当前输入对应的执行路径经过有限次跳转之后,可达目标路径,且分数越高,到达目标地址的可能性越高,越容易成功,因此,分数越高,分配能量越多;如果分数为0,说明当前控制流图还不够完整,不能计算出合理的跳转路径到达目标地址,此时应该将更多能量分配给可以发现新路径的种子,优先快速完善控制流图。
本发明在具体应用过程中,具体可以按照以下流程进行操作:
S1、环境准备:
S 1.1使用Ubuntu 16.04AMD64操作系统(kernel>=4.10);
S 1.2Intel CPU i5/6/7-x000,x>=5;
S 1.3安装Python-cle;
S 1.4安装libcapstone;
S 1.5安装IDA;
S 1.6安装AFL(American Fuzzing Lop);
S2、标记目标地址:通过IDA工具读取目标地址。
S3、载入二进制程序:通过Python-CLE在途二进制程序,并通过Capstone反汇编得到汇编代码。
S4、构建程序控制流图:基于汇编代码构建程序的静态控制流图。
S5、通过Intel PT记录程序执行信息:运行程序并通过PT记录程序执行信息,解码PT数据包,得到程序实际执行路径。
S6、实际执行路径信息反馈:完善控制流图;更新分支不同跳转的数目统计;在控制流图上标记实际执行路径。
S7、目标距离计算:结合跳转次数和跳转概率计算实际执行路径到目标的距离。
S8、种子能量再分配:结合当前执行路径到目标距离,基于AFL框架,为模糊测试的种子分配能量。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

Claims (9)

1.一种面向二进制代码的导向型模糊测试方法,其特征在于,步骤为:
步骤S1:分析目标程序并标记目标基本块地址;
步骤S2:载入二进制程序并获取程序地址信息,并将二进制代码进行反汇编得到汇编代码,构建程序控制流图;
步骤S3:在程序执行时记录分支跳转情况,并在执行结束后进行解码,导出执行路径,构建并完善控制流图,更新分支执行的统计数据;
步骤S4:基于当前的执行路径、结合分支的执行统计数据,计算当前路径与目标的距离;
步骤S5:用计算的目标距离作为反馈,引导下一轮种子的选取和测试。
2.根据权利要求1所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S1中,对于目标地址的选取分为两种:
(a)选择某个特定的基本块为目标,只要一个基本块被选中,则基本块内的指令都会被逐一执行;
(b)选择某个函数的调用地址,即call指令的地址;该地址也是一个间接跳转指令的地址;通过IDA载入二进制代码,直接读取目标基本块或者目标函数调用的地址。
3.根据权利要求1所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S2中,通过Python CLE载入二进制程序,读取程序的地址区间和入口地址;然后使用capstone将二进制代码反汇编,得到汇编代码每条指令对应的地址。
4.根据权利要求1所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S3中,所述控制流图的节点node=(cur,prev,next,count,in_cur_trace,is_cofi_node),其中,cur为当前节点的地址,prev为前一节点的地址,next为后一节点的地址,count为当前节点执行数目的统计,in_cur_trace标记该节点是否在当前执行路径中,is_cofi_node标识该节点是否为跳转指令。
5.根据权利要求1所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S3中,利用PT通过TNT包记录直接跳转指令是否跳转,通过TIP包记录间接跳转指令实际的跳转地址;通过动态执行目标程序并解码PT记录的数据包,得出由跳转指令地址和实际跳转地址组成的执行trace,还原程序实际的执行路径。
6.根据权利要求5所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述基于PT数据包解码得到的实际执行路径,包括:
(1)通过实际执行中的跳转,填补控制流图中缺失的间接跳转,使静态构建的控制流图在动态执行中趋向完整;
(2)对控制流图中不同分支跳转的次数进行统计,计算各分支跳转的概率;同一跳转指令在不同输入的多次执行中反映出的统计特征,间接反映出变异生成的输入数据满足该分支的难易程度,用于预测在下一轮执行中该分支的跳转概率;
(3)在控制流图上标出实际执行的节点,用于后续与目标节点距离的计算。
7.根据权利要求1-6中任意一项所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S4中,基于构建的控制流图,对当前执行路径和目标地址进行分析,如果当前执行路径经过目标地址,则当前的测试样本输入满足导向性要求,结束搜索;如果当前执行路径未经过目标地址,则从目标地址开始,沿着控制流图反向搜索,直到某个节点属于当前的执行路径,记录此节点到目标地址的跳转路径,即为当前执行路径到目标地址的跳转路径;如果搜索结束时最后的节点不是属于当前执行路径上的节点,则不能通过反向搜索将目标节点与当前执行路径连接,说明当前控制流图还不完整。
8.根据权利要求1-6中任意一项所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S5中,对种子能量进行再分配,即基于当前执行路径到目标地址的跳转路径,结合跳转路径上各个分支的跳转概率,对当前的测试样本输入进行打分,并将分数反馈给AFL模糊测试框架。
9.根据权利要求8所述的面向二进制代码的导向型模糊测试方法,其特征在于,基于反馈的分数,为当前种子在后续测试中分配更能量;分数取值范围为0到1,如果分数为1,说明当前输入对应的执行路径正好经过目标地址,接下来的模糊测试给其分配最高能量;如果分数介于0和1之间,说明当前输入对应的执行路径经过有限次跳转之后,可达目标路径,且分数越高,到达目标地址的可能性越高;分数越高,分配能量越多。
CN202010717878.2A 2020-07-23 2020-07-23 一种面向二进制代码的导向型模糊测试方法 Active CN111858358B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010717878.2A CN111858358B (zh) 2020-07-23 2020-07-23 一种面向二进制代码的导向型模糊测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010717878.2A CN111858358B (zh) 2020-07-23 2020-07-23 一种面向二进制代码的导向型模糊测试方法

Publications (2)

Publication Number Publication Date
CN111858358A true CN111858358A (zh) 2020-10-30
CN111858358B CN111858358B (zh) 2023-07-25

Family

ID=72950766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010717878.2A Active CN111858358B (zh) 2020-07-23 2020-07-23 一种面向二进制代码的导向型模糊测试方法

Country Status (1)

Country Link
CN (1) CN111858358B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112328505A (zh) * 2021-01-04 2021-02-05 中国人民解放军国防科技大学 一种用于提升模糊测试的覆盖率的方法和系统
CN112506564A (zh) * 2021-02-04 2021-03-16 中国人民解放军国防科技大学 一种用于建立控制流图的方法、系统和介质
CN114417348A (zh) * 2021-12-15 2022-04-29 北京邮电大学 多目标导向模糊测试方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106775913A (zh) * 2016-12-16 2017-05-31 华东师范大学 一种目标代码控制流图生成方法
CN108647520A (zh) * 2018-05-15 2018-10-12 浙江大学 一种基于脆弱性学习的智能模糊测试方法与系统
CN108845944A (zh) * 2018-06-28 2018-11-20 中国人民解放军国防科技大学 一种结合符号执行提高软件模糊测试效率的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106775913A (zh) * 2016-12-16 2017-05-31 华东师范大学 一种目标代码控制流图生成方法
CN108647520A (zh) * 2018-05-15 2018-10-12 浙江大学 一种基于脆弱性学习的智能模糊测试方法与系统
CN108845944A (zh) * 2018-06-28 2018-11-20 中国人民解放军国防科技大学 一种结合符号执行提高软件模糊测试效率的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112328505A (zh) * 2021-01-04 2021-02-05 中国人民解放军国防科技大学 一种用于提升模糊测试的覆盖率的方法和系统
CN112328505B (zh) * 2021-01-04 2021-04-02 中国人民解放军国防科技大学 一种用于提升模糊测试的覆盖率的方法和系统
CN112506564A (zh) * 2021-02-04 2021-03-16 中国人民解放军国防科技大学 一种用于建立控制流图的方法、系统和介质
CN114417348A (zh) * 2021-12-15 2022-04-29 北京邮电大学 多目标导向模糊测试方法及系统

Also Published As

Publication number Publication date
CN111858358B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
CN111858358B (zh) 一种面向二进制代码的导向型模糊测试方法
CN109739755B (zh) 一种基于程序追踪和混合执行的模糊测试系统
US9317400B2 (en) Code coverage rate determination method and system
US8572581B2 (en) Measurement and reporting of performance event rates
US8904351B2 (en) Maintenance of a subroutine repository for an application under test based on subroutine usage information
CN105279084A (zh) 软件集成测试中的缺陷定位
US10902130B2 (en) Guiding automated testing of binary programs
CN105868626B (zh) 基于控制流粗粒度完整性的监控软件业务行为的方法
CN104021072A (zh) 用于评估失效的软件程序的机器和方法
CN111104335A (zh) 一种基于多层次分析的c语言缺陷检测方法及装置
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
CN110347570B (zh) 一种ide环境下代码自动生成工具分析方法
Kolesnikov et al. Predicting quality attributes of software product lines using software and network measures and sampling
CN109101355B (zh) 一种提取错误现场特征测试激励的处理器调试方法
Chamoli et al. Analysing software metrics for accurate dynamic defect prediction models
CN108469997B (zh) 一种基于动态特征的自定义堆管理函数的自动识别方法
CN115309661A (zh) 一种应用测试方法、装置、电子设备及可读存储介质
CN109002716A (zh) 一种移动应用的恶意代码入侵检测与防范方法
CN110457046B (zh) 混合指令集程序的反汇编方法、装置、存储介质及终端
Zhang et al. INSTRCR: Lightweight instrumentation optimization based on coverage-guided fuzz testing
CN110209593B (zh) 一种面向偏好设置的安卓应用测试方法
WO2021104027A1 (zh) 代码性能检测方法、装置、设备及存储介质
CN108763092B (zh) 一种基于交叉验证的代码缺陷检测方法及装置
JP7190246B2 (ja) ソフトウェア不具合予測装置
US7203707B2 (en) System and method for knowledge asset acquisition and management

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant