[发明专利]过程间的空指针解引用检测方法、系统、设备以及介质有效
申请号: | 201811014686.4 | 申请日: | 2018-08-31 |
公开(公告)号: | CN109426615B | 公开(公告)日: | 2022-01-28 |
发明(设计)人: | 肖枭;时清凯;周金果;范刚 | 申请(专利权)人: | 深圳市源伞新科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 林祥 |
地址: | 518055 广东省深圳市南山区西丽街道*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 过程 指针 引用 检测 方法 系统 设备 以及 介质 | ||
本发明公开了一种过程间的空指针解引用检测方法、系统、设备以及介质,包括以下步骤:对待检测程序进行预处理;生成所述待检测程序中的主调函数和被调函数的符号表达式图,根据所述被调函数的符号表达式图对所述被调函数进行过程内分析,以检测所述被调函数中的空指针以及生成所述被调函数的函数摘要;将所述被调函数的所述函数摘要嵌入所述主调函数;根据所述主调函数的符号表达式图对所述主调函数进行过程内分析,以检测所述主调函数中的空指针解引用。
技术领域
本发明涉及的是程序检测领域,更具体的说,涉及一种过程间的空指针解引用检测方法、系统、设备以及介质。
背景技术
寻找空指针解引用问题有动态分析和静态分析两种方式。
动态分析通过使用预定或者随机输入多次执行程序看程序是否有运行异常,例如fuzzing技术。这类方法的问题在于是否能找到空指针问题取决于测试数据是否能触发错误,对程序执行的需求使得对于对执行环境难以模拟的程序,比如嵌入式系统程序很难实施。另外找到的错误需要进一步调试才能在代码中定位,从而修复问题。
静态分析技术直接分析程序源代码,可以全面分析程序,避开由于测试数据不完善导致的遗漏。静态程序分析不需要执行程序,所以适用性比动态程序分析广泛一些。但是静态分析由于程序复杂度问题,比如大量函数调用以及路径条件等,很难同时做到精确和高效。然而真实生产环境需要低误报以及高分析效率可以分析百万量级的代码,使得静态程序分析技术很难满足现实工业需求。静态分析技术主要有以下几类,基于模式匹配,比如Findbugs,这类技术只能找到浅层的问题,很难深入挖掘复杂的空指针错误。基于数据流的技术和符号执行的技术,比如Clang Static Analyzer很难处理复杂的程序调用关系,因为会触发路径爆炸问题,导致性能极其低下。
函数调用在现代程序设计中非常普遍,过程间分析能够找到过程内分析所忽略的信息,从而在静态分析中挖掘到更多的漏洞即空指针解引用。但是基于函数内联的过程间分析存在很多无用分析,分析效率低下,因此函数摘要被越来越多的用到过程间分析之中。在遇到函数调用时,对被调用函数进行分析提取其函数摘要,然后在调用点应用该函数摘要,以后每次遇到关于该函数的调用,都可以使用函数摘要代替其函数体。
发明内容
针对现有技术存在的问题,本发明的目的在于提供一种过程间的空指针解引用检测方法、系统、设备以及介质,能够通过符号表达式图分析程序中的主调函数和被调函数中的空指针解引用错误,提高了检测空指针解引用的效率,并且能够生成被调函数的摘要而后将被调函数的摘要嵌入主调函数从而进一步提高了程序中的空指针解引用的效率。
根据本发明的一个方面,提供一种过程间的空指针解引用检测方法,包括:
a.对待检测程序进行预处理;
b.生成所述待检测程序中的主调函数和被调函数的符号表达式图,所述符号表达式图包括值节点、运算符节点,以及连接节点的数据依赖性边和控制依赖性边,其中,值节点包括终端值节点和非终端值节点,终端值节点表示当前函数外生成的未知的值或常量,非终端值节点表示当前函数内生成的值,并且每个非终端值与一个唯一的内存地址相关联,所述数据依赖性边是将节点连接到与其有直接数据依赖关系的值节点的有向边,所述控制依赖性边是当存在限定变量的条件时将变量连接到条件的有向边;
c.根据所述被调函数的符号表达式图对所述被调函数进行过程内分析,以检测所述被调函数中的空指针以及生成所述被调函数的函数摘要;
d.将所述被调函数的所述函数摘要嵌入所述主调函数;
e.根据所述主调函数的符号表达式图对所述主调函数进行过程内分析,以检测所述主调函数中的空指针解引用。
优选的,所述函数摘要包括符号摘要、输入摘要以及输出摘要;
通过被嵌入后的所述输入摘要获得所述被调函数中的空指针解引用并生成第一错误报告;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市源伞新科技有限公司,未经深圳市源伞新科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811014686.4/2.html,转载请声明来源钻瓜专利网。