[发明专利]一种基于动态符号执行的软件缺陷检测方法有效
申请号: | 201610709221.5 | 申请日: | 2016-08-23 |
公开(公告)号: | CN106354630B | 公开(公告)日: | 2018-11-13 |
发明(设计)人: | 郭文生;杨霞;汪勇;张少鑫;刘维飞;武琼;袁艺;杨姗;刘小平;包灵;廖士钞;杨拯 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 电子科技大学专利中心 51203 | 代理人: | 周刘英 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于动态符号执行的软件缺陷检测方法。其包括下列步骤:对待检测的软件的源程序中的变量添加符号化标识,然后对源程序进行编译处理得到底层虚拟机LLVM中间码;根据指令类型,对LLVM中间码进行分类插桩处理,插入符号执行和缺陷检测指令;将插桩处理后的LLVM中间码编译生成可执行文件;基于生成的可执行文件,进行动态符号执行与缺陷检测:基于动态符号执行对源程序的各个分支进行软件缺陷检测。本发明的实施,能全面地检测程序中各个分支中潜在的缺陷,且缺陷检测效率高。 | ||
搜索关键词: | 一种 基于 动态 符号 执行 软件 缺陷 检测 方法 | ||
【主权项】:
1.一种基于动态符号执行的软件缺陷检测方法,其特征在于,包括下列步骤:步骤1:对待检测的软件的源程序中的变量添加符号化标识,然后对源程序进行编译处理得到底层虚拟机LLVM中间码;步骤2:根据指令类型,对LLVM中间码进行分类插桩处理,插入符号执行和缺陷检测指令;步骤3:将插桩处理后的LLVM中间码编译生成可执行文件;步骤4:基于生成的可执行文件,进行动态符号执行与缺陷检测:401:基于测试案例运行可执行文件,生成符号执行约束条件表达式集合,或符号执行约束条件表达式集合和缺陷检测条件表达式集合,其中测试案例的初始值为随机输入;若存在缺陷检测条件表达式集合,则将当前生成的符号执行约束条件表达式集合和缺陷检测条件表达式集合作为一个队列元素存入预设队列L中;402:判断所有生成的符号执行约束条件表达式是否均已取非,若是,则测试案例生成结束,并设置软件检测结束标识;否则,将其中一个符号执行约束条件表达式取非并通过第一约束求解器进行测试案例求解,若有解,则将当前求解结果作为测试案例并执行步骤401;若无解,则继续执行步骤402;403:判断队列L是否为空,若为空,则检测是否存在软件检测结束标识,若是,则结束软件缺陷检测;若否,则继续执行步骤403;若队列L不为空,则从队列L中取出一个队列元素A并执行步骤404,其中队列元素A包括符号执行约束条件表达式集合S和缺陷条件表达式集合R;步骤404:从集合R中取出一个未被求解的缺陷条件表达式r,将r与集合S合并得到新的条件表达式集合并通过第二约束求解器进行缺陷判定求解,若有解,则显示对应r的缺陷类型;若无解,则判断集合R是否为空,若是,则执行步骤403;否则,执行步骤404。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610709221.5/,转载请声明来源钻瓜专利网。