[发明专利]一种函数调用的方法、装置及终端有效
申请号: | 201810575335.4 | 申请日: | 2018-06-06 |
公开(公告)号: | CN108920220B | 公开(公告)日: | 2021-11-30 |
发明(设计)人: | 易新 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F9/455 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 王玉双 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 函数 调用 方法 装置 终端 | ||
本发明公开了提供一种函数调用的方法、装置及终端,所述方法包括:获取校验函数的名称,所述校验函数用于校验系统虚拟机中待调用函数对应的结构体的访问标志位,所述待调用函数为所述系统本身的应用程序接口API函数;基于所述校验函数的名称确定所述校验函数的实际地址;基于所述校验函数的实际地址,利用内联挂钩函数对所述校验函数进行修改,使得所述校验函数对所述访问标志位进行校验后,能够允许应用程序访问并调用所述待调用函数;如此,利用内联挂钩函数对所述校验函数进行修改后,当应用程序访问并调用系统API函数时,使得校验函数对访问标志位进行校验后,能够允许应用程序调用相关的API函数,确保了应用程序的功能正常。
技术领域
本发明属于应用开发技术领域,尤其涉及一种函数调用的方法、装置及终端。
背景技术
随着科学技术的不断发展,电子技术也得到了飞速的发展,终端的操作系统也在不断发展、改进。
以安卓操作系统android p为例,为了提高操作系统的稳定性,引入了新的机制,即应用程序引用非SDK接口时受限,非SDK接口对应的应用程序接口(API,ApplicationProgramming Interface)函数是系统的私有API,一般不允许或者禁止开发者调用,进而影响了绝大部分的应用程序的功能。
发明内容
鉴于上述问题,本发明提出了一种函数调用的方法、装置及系统,用于解决现有技术中在android p操作系统中应用程序在调用非SDK接口时受限,导致应用程序功能受到影响的技术问题。
本发明的第一方面,提供了一种函数调用的方法,所述方法包括:
获取校验函数的名称,所述校验函数用于校验系统虚拟机中待调用函数对应的结构体的访问标志位,所述待调用函数为所述系统本身的应用程序接口API函数;
基于所述校验函数的名称确定所述校验函数的实际地址;
基于所述校验函数的实际地址,利用内联挂钩函数对所述校验函数进行修改,使得所述校验函数对所述访问标志位进行校验后,能够允许应用程序访问并调用所述待调用函数。
可选的,所述基于所述校验函数的名称确定所述校验函数的实际地址,包括:
基于所述校验函数的名称,在虚拟机本地库libart.so中查找所述校验函数的符号名称;
根据所述符号名称确定所述校验函数的虚拟地址;
获取所述虚拟机本地库libart.so的基址;
根据所述校验函数的虚拟地址及所述虚拟机本地库libart.so的基址确定所述校验函数的实际地址。
可选的,所述根据所述符号名称确定所述校验函数的虚拟地址,包括:
对所述虚拟机本地库libart.so中校验函数的文件格式进行解析,获取所述虚拟机本地库libart.so的符号表;
在所述符号表中,根据所述符号名称查找所述校验函数的虚拟地址。
可选的,所述基于所述校验函数的实际地址,利用内联挂钩函数对所述校验函数进行修改,包括:
基于所述校验函数的地址,利用所述内联挂钩函数将所述校验函数的调用函数Method替换成自定义调用函数;以及,
利用所述内联挂钩函数将所述校验函数的反射函数Field替换成自定义反射函数,当执行所述校验函数时,使得所述校验函数的校验返回值为预设的返回值。
可选的,所述利用所述内联挂钩函数将所述校验函数的调用函数Method替换成自定义调用函数,包括:
确定所述调用函数Method在所述校验函数中的第一起始地址;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810575335.4/2.html,转载请声明来源钻瓜专利网。