【技术实现步骤摘要】
程序崩溃原因确定方法及装置
[0001]本专利技术涉及安全防护
,尤其涉及一种程序崩溃原因确定方法及装置。
技术介绍
[0002]在使用模糊测试(Fuzzing)方法对程序进行测试时,会产生大量的崩溃(crash)信息。崩溃信息给出了崩溃程序完整的调用栈,方便开发者进行崩溃原因的排查以及漏洞的及时修复。
[0003]相关技术中,通常基于对控制流偏差的对比来确定崩溃原因,具体为:由系统产生两种输入:确保其中一种输入必定产生崩溃,另一种输入不会产生崩溃。收集所有不会产生崩溃的第一测试用例,并收集产生崩溃的第二测试用例,基于收集的第一测试用例构建第一控制流程图,基于收集的第二测试用例构建第二控制流程图,将每个第一控制流程图和第二控制流程图进行对比,找出与第二控制流程图相似性最高的控制流程图,将相似性最高的控制流程图与第二控制流程图产生偏差的地方确定为崩溃原因所在的位置。
[0004]但上述方法需要动态产生大量的测试用例,会消耗大量的时间和内存,从而降低了程序崩溃原因的确定效率。
技术实现思路
...
【技术保护点】
【技术特征摘要】
1.一种程序崩溃原因确定方法,其特征在于,包括:在崩溃信息文件中提取崩溃产生点的目标信息;所述目标信息包括第一变量信息;所述崩溃信息文件是对目标程序进行模糊测试时产生的文件;基于所述第一变量信息对所述目标程序转换得到的第一指令集进行反向数据流分析,得到与所述第一变量信息相关的代码集和第二指令集;对所述第二指令集中的每个指令进行插桩,将插桩后的第二指令集编译为可执行文件,并运行所述可执行文件,得到所述第二指令集中每个所述指令对应的动态值;基于所述代码集和每个所述指令对应的动态值确定所述目标程序的崩溃原因。2.根据权利要求1所述的程序崩溃原因确定方法,其特征在于,所述第一指令集包括LLVMIR指令集。3.根据权利要求2所述的程序崩溃原因确定方法,其特征在于,所述第一变量信息包括崩溃产生点的位置信息,所述目标信息还包括崩溃栈;所述基于所述第一变量信息对所述目标程序转换得到的第一指令集进行反向数据流分析,得到与所述第一变量信息相关的代码集和第二指令集,包括:基于所述崩溃栈构建所述目标程序的调用关系图;基于所述崩溃产生点的位置信息确定所述LLVM IR指令集中的分析起始位置;从所述分析起始位置开始,对所述调用关系图进行反向的过程间数据流分析,得到与所述第一变量信息相关的所述代码集和所述第二指令集。4.根据权利要求3所述的程序崩溃原因确定方法,其特征在于,所述第二指令集中包括至少一个LLVMIR指令;所述对所述第二指令集中的每个指令进行插桩,将插桩后的第二指令集编译为可执行文件,并运行所述可执行文件,得到所述第二指令集中每个所述指令对应的动态值,包括:在所述第二指令集中每个所述LLVM IR指令之前进行插桩,将插桩后的第二指令集编译为可执行文件,并基于目标测试用例运行所述可执行文件,得到所述第二指令集中每个所述LLVM IR指令对应的动态值;所述目标测试用例为对所述目标程序进行模糊测试时使用的用例。5.根据权利要求1
‑
4任一项所述的程序崩溃原因确定方法,其特征在于,所述基于所述代码集和每个所述指令对应的动态值确定所述目标程序的崩溃原因,包括:将所述代码集和每个所述指令对应的动态值与数据库中预先存储的每个崩溃特征进行匹配,得到匹配结果;所述崩溃特征为基于测试用例样本对程序样本进行模糊测试时,所述程序样本发生崩溃对应的崩溃特征;所述崩溃特征包括所述程序样本中的代码集样本和每个指...
【专利技术属性】
技术研发人员:张政,应凌云,
申请(专利权)人:奇安信科技集团股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。