一种支持自动化检测程序缺陷的方法和系统与流程

文档序号:28867236发布日期:2022-02-12 10:09阅读:来源:国知局

技术特征:
1.一种支持自动化检测程序缺陷的方法,其特征在于,所述方法包括以下步骤:步骤s100:获取待测试程序,按照预设的程序完备配置原则给所述待测试程序配置信息得到完备后的待测试程序;步骤s200:分析所述完备后的待测试程序,解析并提取待测函数和待测函数信息,并将所述完备后的待测试程序编译成llvm中间码;步骤s300:分析所述llvm中间码得到中间码指令上的附带信息,根据所述附带信息和所述待测函数信息对所述待测函数进行代码插桩,生成符号执行驱动程序;步骤s400:通过执行分析技术分析所述符号执行驱动程序,生成待测试程序的触发缺陷测试数据;步骤s500:解释器实际执行所述缺陷测试数据,输出执行结果得到待测试程序的缺陷测试结果。2.根据权利要求1所述的方法,其特征在于,步骤s200中的所述待测函数信息至少包括待测函数的函数名、代码行数统计信息、分支统计信息、圈复杂度、控制流信息、影响待测函数行为的函数参数、全局变量和局部静态变量。3.根据权利要求2所述的方法,其特征在于,步骤s200包括:步骤s210:分析所述完备后的待测试程序获取所述完备后的待测试程序中的关键字;步骤s220:当根据所述关键字判断对应的语言不在预设的编译环境的方言范围内时,采用拓展开源框架clang的方式对所述待测试程序进行兼容后,解析并提取待测函数和待测函数信息,并将所述完备后的待测试程序编译成llvm中间码;当根据所述关键字判断对应的语言在预设的编译环境的方言范围内时,解析并提取待测函数和待测函数信息,并将所述完备后的待测试程序编译成llvm中间码。4.根据权利要求3所述的方法,其特征在于,步骤s300包括:步骤s310:分析所述llvm中间码得到中间码指令上的附带信息;步骤s320:根据所述影响待测函数行为的函数参数、所述全局变量和所述局部静态变量进行代码插桩,插桩的过程中,将影响函数行为的变量的名称和类型添加到所述附带信息中进行标记,生成调用待测函数的符号执行驱动函数。5.根据权利要求4所述的方法,其特征在于,步骤s400包括:步骤s410:将标记的变量进行符号化,没有标记的变量给予其在待测函数中初始化时的真实值,得到符号化后的驱动函数;步骤s420:利用符号执行引擎解释执行符号化后的驱动函数,并记录路径所探索过的分支,每解释一条指令都对分支进行排序,以获得当前状态下探索分支数量最多的路径,且继续解释该路径,直到该路径走到函数的跳出语句,在探索分支过程中,对预先设置的可触发漏洞的指令添加漏洞触发的约束,将其加入到路径约束组中进行求解以判定当前的路径条件是否会触发漏洞,若求解成功则可以得到漏洞触发的输入,将所述漏洞触发的输入作为缺陷测试用例数据。6.根据权利要求5所述的方法,其特征在于,步骤s500包括:将所述缺陷测试用例数据封装成测试驱动程序,通过在解释器中将预设定义的程序声明作为解释器内嵌函数,解释执行相应的测试驱动程序,在解释执行的过程中收集执行指令的信息并导出到输出文件中,得到缺陷测试结果。
7.根据权利要求6所述的方法,其特征在于,所述执行指令的信息包括指令的行数、调用指令调用的次数和是否引发缺陷。8.一种支持自动化检测程序缺陷的系统,其特征在于,包括:程序配置模块,用于获取待测试程序,按照预设的程序完备配置原则给所述待测试程序配置信息得到完备后的待测试程序;编译模块,用于分析所述完备后的待测试程序,解析并提取待测函数和待测函数信息,并将所述完备后的待测试程序编译成llvm中间码;代码插桩模块,用于分析所述llvm中间码得到中间码指令上的附带信息,根据所述附带信息和所述待测函数信息对所述待测函数进行代码插桩,生成符号执行驱动程序;触发缺陷测试数据生成模块,用于通过执行分析技术分析所述符号执行驱动程序,生成待测试程序的触发缺陷测试数据;缺陷验证模块,用于解释器实际执行所述缺陷测试数据,输出执行结果得到待测试程序的缺陷测试结果。

技术总结
本发明公开了一种支持自动化检测程序缺陷的方法和系统,包括获取待测试程序,按照预设的程序完备配置原则给待测试程序配置信息得到完备后的待测试程序;分析完备后的待测试程序,解析并提取待测函数和待测函数信息,并将完备后的待测试程序编译成LLVM中间码;分析LLVM中间码得到中间码指令上的附带信息,根据附带信息和待测函数信息对待测函数进行代码插桩,生成符号执行驱动程序;通过执行分析技术分析符号执行驱动程序,生成待测试程序的触发缺陷测试数据;解释器实际执行缺陷测试数据,输出执行结果得到待测试程序的缺陷测试结果。无需任何人工干预,大大减少了缺陷测试的工作量,保证系统在进行测试时的通用性和自动化程度。化程度。化程度。


技术研发人员:任飞 孙文川 肖剑明
受保护的技术使用者:湖南泛联新安信息科技有限公司
技术研发日:2022.01.06
技术公布日:2022/2/11
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1