一种数组越界访问的检测方法、装置及设备制造方法及图纸

技术编号:23085319 阅读:50 留言:0更新日期:2020-01-11 01:14
本说明书实施例公开了一种数组越界访问的检测方法、装置及设备,所述方法包括:获取待检测的程序代码中包含的函数,以及所述函数之间的调用关系信息;如果所述函数之间的调用关系信息中包括未被访问的目标程序语句,则检测所述目标程序语句是否需要访问数组;如果所述目标程序语句需要访问数组,则获取所述目标程序语句访问的数组的预定变量在所述数组对应的程序区域内的值范围;基于所述目标程序语句访问的数组的预定变量在所述数组对应的程序区域内的值范围,对所述程序代码中是否包含数组越界访问进行检测。

A detection method, device and equipment for array access beyond bounds

【技术实现步骤摘要】
一种数组越界访问的检测方法、装置及设备
本文件涉及计算机
,尤其涉及一种数组越界访问的检测方法、装置及设备。
技术介绍
数组越界访问是一种常见的程序编码缺陷,数组越界访问会导致程序运行过程中崩溃或程序运行结果不正确等,而且,它还会导致严重的系统安全问题,攻击者可以利用该缺陷提升攻击者自身的权限,从而读取或修改用户的敏感数据。目前,找出程序中数组越界访问的方法通常可以是基于黑盒测试或白盒测试的方法,即通过构造测试用例来测试执行程序,并观察程序执行中是否存在数组越界访问。在上述数组越界访问检测的方法中,对于黑盒测试或白盒测试的方法,无法构造足够的测试用例来覆盖该程序代码的所有执行路径,因此,该方法的检测准确性低、而且检测效率低。为此,需要提供一种能够检测跨函数或跨文件的数组越界访问机制,并且该机制的检测速度可以更快、检测准确度更高,能够在更大的范围内检测程序代码中的数组越界访问缺陷。
技术实现思路
本说明书实施例的目的是提供一种数组越界访问的检测方法、装置及设备,以提供一种能够检测跨函数或跨文件的数组越界访问机制,本文档来自技高网...

【技术保护点】
1.一种数组越界访问的检测方法,所述方法包括:/n获取待检测的程序代码中包含的函数,以及所述函数之间的调用关系信息;/n如果所述函数之间的调用关系信息中包括未被访问的目标程序语句,则检测所述目标程序语句是否需要访问数组;/n如果所述目标程序语句需要访问数组,则获取所述目标程序语句访问的数组的预定变量在所述数组对应的程序区域内的值范围;/n基于所述目标程序语句访问的数组的预定变量在所述数组对应的程序区域内的值范围,对所述程序代码中是否包含数组越界访问进行检测。/n

【技术特征摘要】
1.一种数组越界访问的检测方法,所述方法包括:
获取待检测的程序代码中包含的函数,以及所述函数之间的调用关系信息;
如果所述函数之间的调用关系信息中包括未被访问的目标程序语句,则检测所述目标程序语句是否需要访问数组;
如果所述目标程序语句需要访问数组,则获取所述目标程序语句访问的数组的预定变量在所述数组对应的程序区域内的值范围;
基于所述目标程序语句访问的数组的预定变量在所述数组对应的程序区域内的值范围,对所述程序代码中是否包含数组越界访问进行检测。


2.根据权利要求1所述的方法,所述获取待检测的程序代码中包含的函数,以及所述函数之间的调用关系信息之后,所述方法还包括:
检测所述函数之间的调用关系信息中是否包括未被访问的函数;
如果所述函数之间的调用关系信息中包括未被访问的函数,则将所述未被访问的函数中的程序语句作为所述目标程序语句;
如果所述函数之间的调用关系信息中不包括未被访问的函数,则检测所述函数之间的调用关系信息中是否包括未被访问的目标程序语句。


3.根据权利要求1所述的方法,所述方法还包括:
将所述待检测的程序代码转换为预定表达形式的程序代码;
所述获取待检测的程序代码中包含的函数,以及所述函数之间的调用关系信息,包括:
获取转换为预定表达形式的程序代码中包含的函数,以及所述函数之间的调用关系信息。


4.根据权利要求3所述的方法,所述方法还包括:
对转换后的程序代码中包含的函数的程序语句的结构进行识别,得到识别结果;
如果所述识别结果指示所述函数的程序语句为循环语句,则获取所述函数的程序语句对应的循环归纳变量和循环体;
确定所述循环归纳变量在所述循环体内的值范围。


5.根据权利要求4所述的方法,所述方法还包括:
如果所述识别结果指示所述函数的程序语句为IF分支语句,则获取所述函数的程序语句对应的THEN语句块、ELSE语句块和条件判断变量;
分别确定所述条件判断变量在所述THEN语句块内的值范围和在所述ELSE语句块内的值范围。


6.根据权利要求4所述的方法,所述方法还包括:
如果所述识别结果指示所述函数的程序语句为SWITCH选择语句,则获取所述函数的程序语句对应的CASE语句值及其对应的CASE语句块、DEFAULT语句块和选择变量;
确定所述选择变量在每个CASE语句块内的值范围和在所述DEFAULT语句块内的值范围。


7.根据权利要求1所述的方法,所述获取所述函数之间的调用关系信息,包括:
对所述函数之间的调用关系进行分析,得到函数调用图谱,所述函数调用图谱中包括多个函数和所述多个函数之间的连接线;
将所述函数调用图谱中的函数的形式参数与所述函数在所述函数调用图谱中的实际参数相连接,得到参数连接信息;
获取预定的全局变量在所述函数调用图谱中各个函数之间的使用和定义关系,得到全局变量使用定义连接信息。


8.根据权利要求1所述的方法,所述如果所述目标程序语句需要访问数组,则获取所述目标程序语句访问的数组的预定变量在所述数组对应的程序区域内的值范围,包括:
如果所述目标程序语句需要访问数组,则根据预定的使用定义关系信息,确定所述目标程序语句访问的数组的定义;
根据预定的使用定义关系信息和所述目标程序语句访问的数组的定义对应的记录信息,查询所述目标程序语句访问的数组中每一维预定变量在所述数组对应的程序区域内的值范围。


9.一种数组越界访问的检测装置,所述装置包括:
信息获取模块,用于获取待检测的程序代码中包含的函数,以及所述函数之间的调用关系信息;
数组访问检测模块,用于如果所述函数之间的调用关系信息中包括未被访问的目标程序语句,则检测所述目标程序语句是否需要访问数组;
值范围获取模块,用于如果所述目标程序语句需要访问数组,则获取所述目标程序语句访问的数组的预定变量在所述数组对应的程...

【专利技术属性】
技术研发人员:赖建新李隆
申请(专利权)人:XC五香港有限公司
类型:发明
国别省市:中国香港;81

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1