一种漏洞检测方法及终端、存储介质技术

技术编号:19934748 阅读:20 留言:0更新日期:2018-12-29 04:44
本发明专利技术实施例公开了一种漏洞检测方法及终端、存储介质,该方法包括:获取应用安装包文件对应的函数调用图,并根据预存源方法以及函数调用图,确定调用方法和调用方法对应的目标数据;根据预存漏洞检测原理和预设检测策略,对目标数据进行数据流分析检测,得到目标数据对应的漏洞检测结果;其中,预存漏洞检测原理用于确定目标数据的数据流分析方法;数据流分析方法包括数据流前向分析和数据流后向分析。

【技术实现步骤摘要】
一种漏洞检测方法及终端、存储介质
本专利技术涉及终端技术,尤其涉及一种漏洞检测方法及终端、存储介质。
技术介绍
随着终端技术的飞速发展,Android操作系统已成为市场占有率最高的终端操作系统,基于Android操作系统开发的应用的数量也越来越庞大,然而,由于Android应用的质量参差不齐,用户在使用Android终端上安装的存在漏洞的应用程序时,就会存在照片、联系人、银行卡账号等保存在终端上的个人信息被窃取的风险,导致用户隐私泄露和财产损失。因此,开发者应该在发布Android应用之前先对其进行漏洞检测及分析,并根据检测结果对漏洞进行修复。目前对Android应用分析的方法主要分为静态分析和动态分析,其中,静态分析通过逆向工程来获取程序特征,并通过对权限信息、组件信息、函数调用图、数据流等程序特征进行分析,查找应用程序中存在的漏洞,其不需要实际运行应用程序,具有快速高效、代码覆盖率高等特点。基于数据流的分析方法是对Android应用静态分析中检测精度最高的方法,但是,当前常见的对Android应用进行静态分析的手段中,利用flowdroid工具对应用进行静态分析虽然在理论上的检测精度比较高,然而flowdroid工具进行静态分析的分析结构较为复杂,因此在对应用进行漏洞检测时,对检测配置要求高且检测效率较低,并不适合实际应用。由此可见,现有的对Android应用静态分析的漏洞检测方法,并不能有效地基于数据流进行漏洞检测,从而造成在漏洞检测时检测效率比较低的缺陷。
技术实现思路
本专利技术实施例提供一种漏洞检测方法及终端、存储介质,对应用的安装包文件进行基于数据流分析的漏洞检测,快速准确且全面的检测到应用中存在的漏洞,有效地提高了漏洞检测的检测效率,保证了应用的安全性。为达到上述目的,本专利技术实施例的技术方案是这样实现的:本专利技术实施例提供了一种漏洞检测方法,包括:获取应用安装包文件对应的函数调用图,并根据预存源方法以及所述函数调用图,确定调用方法和所述调用方法对应的目标数据;根据预存漏洞检测原理和预设检测策略,对所述目标数据进行数据流分析检测,得到所述目标数据对应的漏洞检测结果;其中,所述预存漏洞检测原理用于确定所述目标数据的数据流分析方法;所述数据流分析方法包括数据流前向分析和数据流后向分析。在上述方案中,所述根据预存漏洞检测原理和预设检测策略,对所述目标数据进行数据流分析检测,包括:根据预设配置文件确定所述预存漏洞检测原理对应的检测脚本;当所述预存漏洞检测原理对应的所述数据流分析方法为所述数据流前向分析时,按照所述检测脚本对所述目标数据进行数据流前向分析检测;当所述预存漏洞检测原理对应的所述数据流分析方法为所述数据流后向分析时,按照所述检测脚本对所述目标数据进行数据流后向分析检测。在上述方案中,所述按照所述检测脚本对所述目标数据进行数据流前向分析检测,包括:按照所述检测脚本对所述目标数据进行方法内前向分析检测;根据所述方法内前向分析检测对应的检测结果,对所述目标数据进行方法间前向分析检测。在上述方案中,所述按照所述检测脚本对所述目标数据进行方法内前向分析检测,包括:当未完成对所述目标数据执行所述调用方法时,判断所述调用方法中的第i指令对应的下级方法是否为陷入方法;其中,所述第i指令为所述调用方法中的全部指令中的一个指令,i为大于或者等于1的自然数;当所述下级方法不为陷入方法、所述第i指令为调用指令,且完成对所述目标数据执行所述下级方法时,获取所述下级方法对应的第一运行数据,并将所述下级方法和所述第一运行数据存储至预设前向方法队列;当所述下级方法不为陷入方法,且所述第i指令不为调用指令时,判断所述目标数据对应的寄存器是否被重新赋值;当所述寄存器被重新赋值时,结束此次方法内前向分析检测;当所述寄存器未被重新赋值时,继续对第i+1指令进行所述方法内前向分析检测,直到遍历完所述调用方法对应的全部指令。在上述方案中,所述判断所述调用方法中的第i指令对应的下级方法是否为陷入方法之后,所述方法还包括:当所述下级方法为陷入方法时,确定存在漏洞,并结束漏洞检测。在上述方案中,所述根据所述方法内前向分析检测对应的检测结果,对所述目标数据进行方法间前向分析检测,包括:提取所述预设前向方法队列中的所述下级方法和所述第一运行数据;将所述下级方法确定为所述调用方法、将所述第一运行数据确定为所述目标数据,进行所述方法内前向分析检测,直到将所述预设前向方法队列中的所述下级方法和所述第一运行数据处理完毕。在上述方案中,所述按照所述检测脚本对所述目标数据进行数据流后向分析检测,包括:按照所述检测脚本对所述目标数据进行方法内后向分析检测;根据所述方法内后向分析检测对应的检测结果,对所述目标数据进行方法间后向分析检测。在上述方案中,所述按照所述检测脚本对所述目标数据进行方法内后向分析检测,包括:当未完成对所述目标数据执行所述调用方法时,获取所述调用方法对应的上级方法;其中,所述上级方法为调用所述调用方法的方法;判断所述上级方法中的第j指令对应的同级方法是否为陷入方法;其中,所述第j指令为所述上述方法中的全部指令中的一个指令,j为大于或者等于1的自然数;所述同级方法为所述上级方法通过所述第j指令调用的全部方法中的一个方法;当所述同级方法不为陷入方法、所述第j指令为调用指令,且完成对所述目标数据执行所述同级方法时,获取所述同级方法对应的第二运行数据,并将所述同级方法和所述第二运行数据存储至预设前向方法队列;当所述同级方法不为陷入方法,且所述第j指令不为调用指令时,判断所述目标数据对应的寄存器是否被重新赋值;当所述寄存器被重新赋值时,结束此次方法内后向分析检测;当所述寄存器未被重新赋值时,继续对第j+1指令进行所述方法内后向分析检测,直到遍历完所述上级方法对应的全部指令。在上述方案中,所述判断所述上级方法中的第j指令对应的同级方法是否为陷入方法之后,所述方法还包括:当所述同级方法为陷入方法时,确定存在漏洞,并结束漏洞检测。在上述方案中,所述将所述同级方法和所述第二运行数据存储至预设前向方法队列之后,所述方法还包括:提取所述预设前向方法队列中的所述同级方法和所述第二运行数据;将所述同级方法确定为所述调用方法、将所述第二运行数据确定为所述目标数据,进行所述方法内后向分析检测,直到将所述预设前向方法队列中的所述同方法和所述第二运行数据处理完毕。在上述方案中,所述继续对第j+1指令进行所述方法内后向分析检测,直到遍历完所述上级方法对应的全部指令之后,所述方法还包括:当所述上级方法中的全部指令对应的全部同级方法都不为所述陷入方法时,获取所述上级方法对应的第三运行数据,并将所述上级方法和所述第三运行数据存储至预设后向方法队列。在上述方案中,所述根据所述方法内后向分析检测对应的检测结果,对所述目标数据进行方法间后向分析检测,包括:提取所述预设后向方法队列中的所述上级方法和所述第三运行数据;将所述上级方法确定为所述调用方法、将所述第三运行数据确定为所述目标数据,进行所述方法内后向分析检测,直到将所述预设后向方法队列中的所述上级方法和所述第三运行数据处理完毕。在上述方案中,所述获取应用安装包文件对应的函数调用图之前,所述方法还包括:获取所述应用安装包文件,并通本文档来自技高网...

【技术保护点】
1.一种漏洞检测方法,其特征在于,所述方法包括:获取应用安装包文件对应的函数调用图,并根据预存源方法以及所述函数调用图,确定调用方法和所述调用方法对应的目标数据;根据预存漏洞检测原理和预设检测策略,对所述目标数据进行数据流分析检测,得到所述目标数据对应的漏洞检测结果;其中,所述预存漏洞检测原理用于确定所述目标数据的数据流分析方法;所述数据流分析方法包括数据流前向分析和数据流后向分析。

【技术特征摘要】
1.一种漏洞检测方法,其特征在于,所述方法包括:获取应用安装包文件对应的函数调用图,并根据预存源方法以及所述函数调用图,确定调用方法和所述调用方法对应的目标数据;根据预存漏洞检测原理和预设检测策略,对所述目标数据进行数据流分析检测,得到所述目标数据对应的漏洞检测结果;其中,所述预存漏洞检测原理用于确定所述目标数据的数据流分析方法;所述数据流分析方法包括数据流前向分析和数据流后向分析。2.根据权利要求1所述的方法,其特征在于,所述根据预存漏洞检测原理和预设检测策略,对所述目标数据进行数据流分析检测,包括:根据预设配置文件确定所述预存漏洞检测原理对应的检测脚本;当所述预存漏洞检测原理对应的所述数据流分析方法为所述数据流前向分析时,按照所述检测脚本对所述目标数据进行数据流前向分析检测;当所述预存漏洞检测原理对应的所述数据流分析方法为所述数据流后向分析时,按照所述检测脚本对所述目标数据进行数据流后向分析检测。3.根据权利要求2所述的方法,其特征在于,所述按照所述检测脚本对所述目标数据进行数据流前向分析检测,包括:按照所述检测脚本对所述目标数据进行方法内前向分析检测;根据所述方法内前向分析检测对应的检测结果,对所述目标数据进行方法间前向分析检测。4.根据权利要求3所述的方法,其特征在于,所述按照所述检测脚本对所述目标数据进行方法内前向分析检测,包括:当未完成对所述目标数据执行所述调用方法时,判断所述调用方法中的第i指令对应的下级方法是否为陷入方法;其中,所述第i指令为所述调用方法中的全部指令中的一个指令,i为大于或者等于1的自然数;当所述下级方法不为陷入方法、所述第i指令为调用指令,且完成对所述目标数据执行所述下级方法时,获取所述下级方法对应的第一运行数据,并将所述下级方法和所述第一运行数据存储至预设前向方法队列;当所述下级方法不为陷入方法,且所述第i指令不为调用指令时,判断所述目标数据对应的寄存器是否被重新赋值;当所述寄存器被重新赋值时,结束此次方法内前向分析检测;当所述寄存器未被重新赋值时,继续对第i+1指令进行所述方法内前向分析检测,直到遍历完所述调用方法对应的全部指令。5.根据权利要求4所述的方法,其特征在于,所述判断所述调用方法中的第i指令对应的下级方法是否为陷入方法之后,所述方法还包括:当所述下级方法为陷入方法时,确定存在漏洞,并结束漏洞检测。6.根据权利要求4所述的方法,其特征在于,所述根据所述方法内前向分析检测对应的检测结果,对所述目标数据进行方法间前向分析检测,包括:提取所述预设前向方法队列中的所述下级方法和所述第一运行数据;将所述下级方法确定为所述调用方法、将所述第一运行数据确定为所述目标数据,进行所述方法内前向分析检测,直到将所述预设前向方法队列中的所述下级方法和所述第一运行数据处理完毕。7.根据权利要求2所述的方法,其特征在于,所述按照所述检测脚本对所述目标数据进行数据流后向分析检测,包括:按照所述检测脚本对所述目标数据进行方法内后向分析检测;根据所述方法内后向分析检测对应的检测结果,对所述目标数据进行方法间后向分析检测。8.根据权利要求7所述的方法,其特征在于,所述按照所述检测脚本对所述目标数据进行方法内后向分析检测,包括:当未完成对所述目标数据执行所述调用方法时,获取所述调用方法对应的上级方法;其中,所述上级方法为调用所述调用方法的方法;判断所述上级方法中的第j指令对应的同级方法是否为陷入方法;其中,所述第j指令为所述上述方法中的全部指令中的一个指令,j为大于或者等于1的自然数;所述同级方法为所述上级方法通过所述第j指令调用的全部方法中的一个方法;当所述同级方法不为陷入方法、所述第j指令为调用指令,且完成对所述目标数据执行所述同级方法时,获取所述同级方法对应的第二运行数据,并将所述同级方法和所述第二运行数据存储至预设前向方法队列;当所述同级方法不为陷入方法,且所述第j指令不为调用指令时,判断所述目标数据对应的寄存器是否被重新赋值;当所述寄存器被重新赋值时,结束此次方法内后向分析检测;当所述寄存器未被重新赋值时,继续对第j+1指令进行所述方法内后向分析检测,直到遍历完所述上级方法对应的全部指令。9.根据权利要求8所述的方法,其特征在于,所述判断所述上级方法中的第j指令对应的同级方法是否为陷入方法之后,所述方法还包括:当所述同级方法为陷入方法时,确定存在漏洞,并结束漏洞检测。10.根据权利要求8所述的方法,其特征在于,所述将所述同级方法和所述第二运行数据存储至预设前向方法队列之后,所述方法还包括:提取所述预设前向方法队列中的所述同级方法和所述第二运行数据;将所述同级方法确定为所述调用方法、将所述第二运行数据确定为所述目标数据,进行所述方法内后向分析检测,直到将所述预设前向方法队列中的所述同方法和所述第二运行数据处理完毕。11.根据权利要求8所述的方法,其特征在于,所述继续对第j+1指令进行所述方法内后向分析检测,直到遍历完所述上级方法对应的全部指令之后,所述方法还包括:当所述上级方法中的全部指令对应的全部同级方法都不为所述陷入方法时,获取所述上级方法对应的第三运行数据,并将所述上级方法和所述第三运行数据存储至预设后向方法队列。12.根据权利要求11所述的方法,其特征在于,所述根据所述方法内后向分析检测对应的检测结果,对所述目标数据进行方法间后向分析检测,包括:提取所述预设后向方法队列中的所述上级方法和所述第三运行数据;将所述上级方法确定为所述调用方法、将所述第三运行数据确定为所述目标数据,进行所述方法内后向分析检测,直到将所述预设后向方法队列中的所述上级方法和所述第三运行数据处理完毕。13.根据权利要求1所述的方法,其特征在于,所述获取应用安装包文件对应的函数调用图之前,所述方法还包括:获取所述应用安装包文件,并通过解析所述应用安装包文件获得文件信息;根据所述文件信息建立所述函数调用图。14.根据权利要求2所述的方法,其特征在于,所述根据预设配置文件确定所述预存漏洞检测原理对应的检测脚本,包括:通过解析所述预设配置文件获取配置内容;根据所述配置内容设置检测参数;根据所述检测参数加载所述预存漏洞检测原理对应的检测脚本。15.一种终端,其特征在于,所述终端包括:获取单元,确定单元以及检测单元,所述获取单元,用于获取应用安装包文件对应的函数调用图;所述确定单元,用于根据预存源...

【专利技术属性】
技术研发人员:靖二霞应凌云苏璞睿王静田甜王继刚
申请(专利权)人:中兴通讯股份有限公司北京工业大学
类型:发明
国别省市:广东,44

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

1