【技术实现步骤摘要】
本专利技术属于计算机领域,具体涉及一种基于动态符号执行的软件缺陷检测方法。
技术介绍
源程序经过编译器clang编译可以生成LLVM(底层虚拟机)中间码,根据不同的LLVM中间码指令类型进行分类插桩,插桩操作需要使用LLVM官方源码的API接口。其中,插桩即利用LLVM官方源码的API接口在源程序编译得到的LLVM中间码中插入预设指令,通常包括符号执行和缺陷提取指令等。符号执行技术包括传统符号执行、选择性符号执行和动态符号执行。传统的符号执行技术通过使用符号变量代替真实变量模拟程序的执行,目标程序并不真实运行,因此符号执行得到的程序中的约束条件信息不够精确;选择性符号执行可以只对程序员感兴趣的代码进行符号执行,其它地方都使用真实值执行,因此选择性符号执行具有更高的灵活性;动态符号执行技术与前两者都有所不同,动态符号执行是在程序真实执行的过程中同时进行符号执行,符号执行是在插桩后的桩函数内执行完成,即在真实执行的过程中通过桩函数收集约束相关信息生成路径约束条件,然后通过约束求解器(如SMT(SatisfiabilityModuloTheories)求解器)对其中一 ...
【技术保护点】
一种基于动态符号执行的软件缺陷检测方法,其特征在于,包括下列步骤:步骤1:对待检测的软件的源程序中的变量添加符号化标识,然后对源程序进行编译处理得到底层虚拟机LLVM中间码;步骤2:根据指令类型,对LLVM中间码进行分类插桩处理,插入符号执行和缺陷检测指令;步骤3:将插桩处理后的LLVM中间码编译生成可执行文件;步骤4:基于生成的可执行文件,进行动态符号执行与缺陷检测:401:基于测试案例运行可执行文件,生成符号执行约束条件表达式集合,或符号执行约束条件表达式集合和缺陷检测条件表达式集合,其中测试案例的初始值为随机输入;若存在缺陷检测条件表达式集合,则将当前生成的符号执行约 ...
【技术特征摘要】
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。2...
【专利技术属性】
技术研发人员:郭文生,杨霞,汪勇,张少鑫,刘维飞,武琼,袁艺,杨姗,刘小平,包灵,廖士钞,杨拯,
申请(专利权)人:电子科技大学,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。