[发明专利]隐藏API调用的检测方法、装置及计算机存储介质在审
| 申请号: | 201811638267.8 | 申请日: | 2018-12-29 |
| 公开(公告)号: | CN109739509A | 公开(公告)日: | 2019-05-10 |
| 发明(设计)人: | 甘甜 | 申请(专利权)人: | 北京奇虎科技有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 北京华沛德权律师事务所 11302 | 代理人: | 房德权 |
| 地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 目标应用程序 调用信息 计算机存储介质 抽象语法树 调用 语法树分析 安卓系统 程序代码 运行过程 检测 转化 开发 | ||
本发明实施例公开一种隐藏API调用的检测方法、装置及计算机存储介质,在目标应用程序启动之前就可以获得目标应用程序对隐藏API的调用信息,开发人员可通过该调用信息及时对目标应用程序调用的隐藏API进行调整,能有效避免目标应用程序在启动或运行过程中因调用隐藏API而出现异常的问题。该方法包括:获得安卓系统的隐藏API列表;将目标应用程序的程序代码转化为抽象语法树;基于所述隐藏API列表,对所述抽象语法树进行语法树分析,获得所述目标应用程序对隐藏API的调用信息。
技术领域
本发明涉及电子技术领域,尤其涉及一种隐藏API调用的检测方法、装置及计算机存储介质。
背景技术
Android(安卓)是一种基于Linux的自由及开放源代码的操作系统,由Google公司和开放手机联盟领导及开发。主要使用于移动设备,如智能手机和平板电脑,Android系统在移动设备中被广泛应用。Google在2018年的I/O大会上发布了Android P(安卓开发预览版),其中还说明了在以后的Android P上,将对隐藏API(Application ProgrammingInterface,应用程序编程接口)调用进行限制。由于Android系统是开源的,所以开发者对隐藏API的调用十分混乱,此举是为了进一步防止碎片化,规范开发者的API调用使用行为。在Android P系统中,如果开发者设计的应用程序调用了隐藏API,在应用程序启动后会造成一些功能异常。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的隐藏API调用的检测方法、装置及计算机存储介质。
第一方面,本实施例提供一种隐藏API调用的检测方法,包括:
获得安卓系统的隐藏API列表;
将目标应用程序的程序代码转化为抽象语法树,其中,所述目标应用程序安装在所述安卓系统中;
基于所述隐藏API列表,对所述抽象语法树进行语法树分析,获得所述目标应用程序对隐藏API的调用信息。
可选的,所述基于所述隐藏API列表,对所述抽象语法树进行语法树分析,获得所述目标应用程序对隐藏API的调用信息,包括:对所述抽象语法树的节点进行扫描,获得每个节点调用的方法名称;
基于所述每个节点调用的方法名称,确定所述目标应用程序采用直接调用方式调用隐藏API的第一信息,以及确定所述目标应用程序采用反射调用方式调用隐藏API的第二信息;
将所述第一信息和所述第二信息作为所述调用信息。
可选的,所述确定所述目标应用程序采用直接调用方式调用隐藏API的第一信息,包括:
如果扫描到的节点调用的方法名称与预设直接调用方法名称匹配,确定该节点采用直接调用方式调用隐藏API;
获得所述抽象语法树中采用直接调用方式调用隐藏API的节点个数;
将所述抽象语法树中采用直接调用方式调用隐藏API的节点个数作为所述目标应用程序采用直接调用方式调用隐藏API的次数;
确定所述第一信息包括所述目标应用程序采用直接调用方式调用隐藏API的次数。
可选的,确定所述目标应用程序采用反射调用方式调用隐藏API的第二信息,包括:
如果扫描到的节点调用的方法名称与预设反射调用方法名称匹配,且该节点调用的方法中传入的字符与所述API列表中的预设字符匹配,确定该节点采用反射调用方式调用隐藏API;
获得所述抽象语法树中采用反射调用方式调用隐藏API的节点个数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811638267.8/2.html,转载请声明来源钻瓜专利网。





