一种函数调用的方法、装置及终端制造方法及图纸

技术编号:19592840 阅读:16 留言:0更新日期:2018-11-28 04:42
本发明专利技术实施例提供一种函数调用的方法、装置及终端,方法包括:获取系统应用层中设置的运行时结构体标记;校验所述运行时结构体标记是否存在标记值;若存在,则调用修改函数将运行时结构体中目标成员变量的属性值修改为预设的值,以使得用于限制目标应用程序访问非SDK接口的机制处于关闭状态,从而允许所述目标应用程序访问所述非SDK接口,以调用系统的私有应用程序接口API函数;如此,对目标成员变量的属性值进行修改后,可以关闭用于限制目标应用程序访问非SDK接口的机制,允许目标应用程序调用系统的私有API函数。

【技术实现步骤摘要】
一种函数调用的方法、装置及终端
本专利技术属于应用开发
,尤其涉及一种函数调用的方法、装置及终端。
技术介绍
随着科学技术的不断发展,电子技术也得到了飞速的发展,终端的操作系统也在不断发展、改进。以安卓操作系统androidp为例,为了提高操作系统的稳定性,引入了新的机制,即应用程序引用非SDK接口时受限,非SDK接口对应的应用程序接口(API,ApplicationProgrammingInterface)函数是系统的私有API,一般不允许或者禁止开发者调用,进而影响了绝大部分的应用程序的功能。
技术实现思路
鉴于上述问题,本专利技术提出了一种函数调用的方法、装置及系统,用于解决现有技术中在androidp操作系统中应用程序在调用非SDK接口时受限,不能调用系统的私有API函数,导致应用程序功能受到影响的技术问题。第一方面,本专利技术实施例提供一种函数调用的方法,所述方法包括:获取系统应用层中设置的运行时结构体标记;校验所述运行时结构体标记是否存在标记值;若存在,则调用修改函数将运行时结构体中目标成员变量的属性值修改为预设的值,以使得用于限制目标应用程序访问非SDK接口的机制处于关闭状态,从而允许所述目标应用程序访问所述非SDK接口,以调用系统的私有应用程序接口API函数;其中,所述目标成员变量的属性值用于控制所述系统是否开启限制所述目标应用程序访问非SDK接口的机制。可选的,在所述获取系统的应用层中设置的运行时结构体标记之前,还包括:在系统的应用层中设置所述运行时结构体标记;其中,所述在系统的应用层中设置所述运行时结构体标记,包括:为所述目标应用程序创建一个新进程;检测所述目标应用程序是否为非系统应用程序;若所述目标应用程序为非系统应用程序,则在为所述新进程布局参数环境时,在所述系统的应用层中设置所述运行时结构体标记。可选的,所述校验所述运行时结构体标记是否存在标记值,包括:将所述运行时结构体标记传送至所述系统的本地库层;在所述本地库层中校验所述运行时结构体标记是否存在标记值。可选的,所述调用修改函数将目标成员变量的属性值修改为预设的值,包括:确定所述运行时结构体中目标成员变量的实际地址;基于所述实际地址,调用修改函数将所述目标成员变量的属性值修改为预设的值。可选的,所述获取所述运行时结构体中目标成员变量的实际地址,包括:对所述系统的虚拟机本地库libart.so进行反汇编,根据目标桥梁函数的名称获取所述目标桥梁函数的反汇编代码;所述目标桥梁函数中包含有所述目标成员变量的初始化调用地址;基于所述目标成员变量的初始化调用地址,在所述目标桥梁函数的反汇编代码中查找所述目标成员变量的汇编代码;根据所述目标成员变量的汇编代码确定所述目标成员变量在所述libart.so中的偏移值;获取所述运行时结构体的对象值;基于所述目标成员变量在所述libart.so中的偏移值以及所述运行时结构体的对象值确定所述目标成员变量的实际地址。可选的,所述获取所述运行时结构体的对象值,包括:调用系统中的结构体对象值获取函数获取所述运行时结构体的对象值。可选的,所述获取所述运行时结构体的对象值,还包括:获取所述libart.so中的全局偏移表;从所述全局偏移表中确定所述运行时结构体的对象值。可选的,所述调用修改函数将所述运行时结构体的目标成员变量的属性值修改为预设的值,包括:基于所述目标成员变量的实际地址,查找到所述目标成员变量;将所述预设的值赋值给所述目标成员变量的属性值。第二方面,本专利技术实施例还提供一种函数调用的装置,所述装置包括:第一获取单元,用于获取系统应用层中设置的运行时结构体标记;第一校验单元,用于校验所述运行时结构体标记是否存在标记值;第一修改单元,用于存在所述标记值时,调用修改函数将运行时结构体中目标成员变量的属性值修改为预设的值,以使得用于限制目标应用程序访问非SDK接口的机制处于关闭状态,从而允许所述目标应用程序访问所述非SDK接口,以调用系统的私有应用程序接口API函数;其中,所述目标成员变量的属性值用于控制所述系统是否开启限制所述目标应用程序访问非SDK接口的机制。可选的,所述系统还包括:第一设置单元,在所述获取系统的应用层中设置的运行时结构体标记之前,所述第一设置单元用于在系统的应用层中设置所述运行时结构体标记;其中,所述第一设置单元包括:创建单元,用于为所述为目标应用程序创建一个新进程;检测单元,在为所述新进程布局参数环境时,用于检测所述目标应用程序是否为非系统应用程序;第二设置单元,用于在所述目标应用程序为非系统应用程序时,则在为所述新进程布局参数环境时,在所述系统的应用层中设置所述运行时结构体标记。可选的,所述第一校验单元包括:传送单元,用于将所述运行时结构体标记传送至所述系统的本地库层;第二校验单元,用于在所述本地库层中校验所述运行时结构体标记是否存在标记值。可选的,所述第一修改单元具体包括:第一确定单元,用于确定所述运行时结构体中目标成员变量的实际地址;第二修改单元,用于基于所述实际地址,调用修改函数将所述目标成员变量的属性值修改为预设的值。可选的,所述第一确定单元包括:反汇编单元,用于对虚拟机本地库libart.so进行反汇编,根据目标桥梁函数的名称获取所述目标桥梁函数的反汇编代码;所述目标桥梁函数中包含有所述目标成员变量的初始化调用地址;查找单元,基于所述目标成员变量的初始化调用地址,在所述目标桥梁函数的反汇编代码中查找所述目标成员变量的汇编代码;第二确定单元,用于根据所述目标成员变量的汇编代码确定所述目标成员变量在所述libart.so中的偏移值;第二获取单元,用于获取所述运行时结构体的对象值;第三确定单元,用于基于所述目标成员变量在所述libart.so中的偏移值以及所述运行时结构体的对象值确定所述目标成员变量的实际地址。可选的,所述第二获取单元具体用于:调用系统中的结构体对象值获取函数获取述运行时结构体的对象值。可选的,所述第二获取单元具体还用于:获取所述libart.so中全局偏移表;从所述全局偏移表中确定所述运行时结构体的对象值。可选的,所述第一修改单元具体用于:基于所述目标成员变量的实际地址,查找到所述目标成员变量;将所述预设的值赋值给所述目标成员变量的属性值。第三方面,本专利技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。第三方面,本专利技术实施例还提供一种函数调用的终端,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中,所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如上述任一项所述方法的步骤。本申请实施例中提供的技术方案,至少具有如下技术效果或优点:本专利技术实施例提供一种函数调用的方法、装置及终端,方法包括:获取系统应用层中设置的运行时结构体标记;校验所述运行时结构体标记是否存在标记值;若存在,则调用修改函数将运行时结构体中目标成员变量的属性值修改为预设的值,以使得用于限制目标应用程序访问非SDK接口的机制处于关闭状态,从而允许所述目标应用程序访问所述非SDK接口,以调用系统的私有应用程序接口API函数;如此,对目标成员变量的属性值进行修改后,可以关闭用于限制目标应本文档来自技高网...

【技术保护点】
1.一种函数调用的方法,其特征在于,所述方法包括:获取系统应用层中设置的运行时结构体标记;校验所述运行时结构体标记是否存在标记值;若存在,则调用修改函数将运行时结构体中目标成员变量的属性值修改为预设的值,以使得用于限制目标应用程序访问非SDK接口的机制处于关闭状态,从而允许所述目标应用程序访问所述非SDK接口,以调用系统的私有应用程序接口API函数;其中,所述目标成员变量的属性值用于控制所述系统是否开启限制所述目标应用程序访问非SDK接口的机制。

【技术特征摘要】
1.一种函数调用的方法,其特征在于,所述方法包括:获取系统应用层中设置的运行时结构体标记;校验所述运行时结构体标记是否存在标记值;若存在,则调用修改函数将运行时结构体中目标成员变量的属性值修改为预设的值,以使得用于限制目标应用程序访问非SDK接口的机制处于关闭状态,从而允许所述目标应用程序访问所述非SDK接口,以调用系统的私有应用程序接口API函数;其中,所述目标成员变量的属性值用于控制所述系统是否开启限制所述目标应用程序访问非SDK接口的机制。2.如权利要求1所述的方法,其特征在于,在所述获取系统的应用层中设置的运行时结构体标记之前,还包括:在系统的应用层中设置所述运行时结构体标记;其中,所述在系统的应用层中设置所述运行时结构体标记,包括:为所述目标应用程序创建一个新进程;检测所述目标应用程序是否为非系统应用程序;若所述目标应用程序为非系统应用程序,则在为所述新进程布局参数环境时,在所述系统的应用层中设置所述运行时结构体标记。3.如权利要求1所述的方法,其特征在于,所述校验所述运行时结构体标记是否存在标记值,包括:将所述运行时结构体标记传送至所述系统的本地库层;在所述本地库层中校验所述运行时结构体标记是否存在标记值。4.如权利要求1所述的方法,其特征在于,所述调用修改函数将目标成员变量的属性值修改为预设的值,包括:确定所述运行时结构体中目标成员变量的实际地址;基于所述实际地址,调用修改函数将所述目标成员变量的属性值修改为预设的值。5.一种函数调用的装置,其特征在于,所述装置包括:第一获取单元,用于获取系统应用层中设置的运行时结构体标记;第一校验单元,用于校验所述运行时结构体标记是否存在标记值;第一修改单元,用于存在所述标记值时,调用修改函数将运行时结构体中目标成员变量的属性值修改...

【专利技术属性】
技术研发人员:易新王浩
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京,11

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

1