[发明专利]一种静态检测安卓代码中的资源回收漏洞的方法和装置有效
申请号: | 201611111681.4 | 申请日: | 2016-12-06 |
公开(公告)号: | CN108153666B | 公开(公告)日: | 2023-05-26 |
发明(设计)人: | 袁伟;刘俊 | 申请(专利权)人: | 三六零科技集团有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京恒博知识产权代理有限公司 11528 | 代理人: | 范胜祥 |
地址: | 300450 天津市滨海新区华苑产*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 静态 检测 代码 中的 资源 回收 漏洞 方法 装置 | ||
1.一种静态检测安卓代码中的资源回收漏洞的方法,其中,该方法包括:
读取待检测的安卓应用的源代码到内存中;
检测所述源代码中是否包含有创建占用资源的待回收对象的操作指令;
如果有,进一步检测所述源代码中是否包含有与所述占用资源的待回收对象对应的资源回收指令;如果没有对应的资源回收指令,则确定所述源代码中存在资源回收漏洞;
其中,所述检测所述源代码中是否包含有创建占用资源的待回收对象的操作指令包括:
调用所述源代码的解析器解析所述源代码,得到所述源代码的抽象语法树;
对所述抽象语法树中的各节点进行分类,将类型相同的节点保存到对应的同一个节点集合中,得到类型不同的多个节点集合;
确定创建占用资源的待回收对象的指令的多个属性,根据该多个属性从所述多个节点集合中查找与创建占用资源的待回收对象的指令对应的节点;
检测该节点下是否包含有创建占用资源的待回收对象的操作指令。
2.如权利要求1所述的方法,其中,所述读取待检测的安卓应用的源代码到内存中包括:
获取所述源代码的路径信息;
根据所述源代码的路径信息,以多线程方式读取该路径下的所有代码文件到内存中。
3.如权利要求1所述的方法,其中,所述确定创建占用资源的待回收对象的指令的多个属性包括:
确定指定内容的分类属性;所述指定内容为所述创建占用资源的待回收对象的指令;
以及确定所述指定内容的一个或多个其他属性。
4.如权利要求3所述的方法,其中,所述根据该多个属性从所述多个节点集合中查找与所述指定内容对应的节点包括:
先根据所述指定内容的分类属性,确定与该分类属性对应的一个节点集合;
从所述其他属性中选择一个属性,从所确定的节点集合中查找出与该属性匹配的节点;
判断所述一个或多个其他属性中是否存在未被选择的属性,如果存在则从查找的节点中进一步选出与该属性匹配的节点,直到所述的其他属性均被选择过一次。
5.如权利要求1所述的方法,其中,所述创建占用资源的待回收对象的操作指令为:数据库操作函数。
6.如权利要求1所述的方法,其中,所述创建占用资源的待回收对象的操作指令为:读/写数据流函数。
7.如权利要求1所述的方法,其中,所述创建占用资源的待回收对象的操作指令为:数据库连接函数。
8.如权利要求1所述的方法,其中,所述资源回收指令为:try catch函数。
9.如权利要求1所述的方法,其中,该方法进一步包括:
如果有对应的资源回收指令,进一步检测该资源回收指令是否包含在特定语句结构中;如果不包含在特定语句结构中,则确定所述源代码中存在资源回收漏洞。
10.如权利要求9所述的方法,其中,所述特定语句结构为finally语句结构。
11.一种静态检测安卓代码中的资源回收漏洞的装置,其中,该装置包括:
读取单元,适于读取待检测的安卓应用的源代码到内存中;
检测单元,适于检测所述源代码中是否包含有创建占用资源的待回收对象的操作指令;如果有,进一步检测所述源代码中是否包含有与所述占用资源的待回收对象对应的资源回收指令;如果没有对应的资源回收指令,则确定所述源代码中存在资源回收漏洞;
其中,所述检测单元,适于调用所述源代码的解析器解析所述源代码,得到所述源代码的抽象语法树;对所述抽象语法树中的各节点进行分类,将类型相同的节点保存到对应的同一个节点集合中,得到类型不同的多个节点集合;确定创建占用资源的待回收对象的指令的多个属性,根据该多个属性从所述多个节点集合中查找与创建占用资源的待回收对象的指令对应的节点;检测该节点下是否包含有创建占用资源的待回收对象的操作指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于三六零科技集团有限公司,未经三六零科技集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611111681.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:数据测试方法及装置
- 下一篇:应用的调试方法、装置及系统