[发明专利]一种函数调用的方法、装置及终端有效
申请号: | 201810575335.4 | 申请日: | 2018-06-06 |
公开(公告)号: | CN108920220B | 公开(公告)日: | 2021-11-30 |
发明(设计)人: | 易新 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F9/455 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 王玉双 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 函数 调用 方法 装置 终端 | ||
1.一种函数调用的方法,其特征在于,所述方法包括:
获取校验函数的名称,所述校验函数用于校验系统虚拟机中待调用函数对应的结构体的访问标志位,所述待调用函数为所述系统本身的应用程序接口API函数;
基于所述校验函数的名称确定所述校验函数的实际地址;
基于所述校验函数的实际地址,利用内联挂钩函数对所述校验函数进行修改,使得所述校验函数对所述访问标志位进行校验后,能够允许应用程序访问并调用所述待调用函数;
所述基于所述校验函数的实际地址,利用内联挂钩函数对所述校验函数进行修改,包括:
基于所述校验函数的地址,利用所述内联挂钩函数将所述校验函数的调用函数Method替换成自定义调用函数;以及,
利用所述内联挂钩函数将所述校验函数的反射函数Field替换成自定义反射函数,当执行所述校验函数时,使得所述校验函数的校验返回值为预设的返回值。
2.如权利要求1所述的方法,其特征在于,所述基于所述校验函数的名称确定所述校验函数的实际地址,包括:
基于所述校验函数的名称,在虚拟机本地库libart.so中查找所述校验函数的符号名称;
根据所述符号名称确定所述校验函数的虚拟地址;
获取所述虚拟机本地库libart.so的基址;
根据所述校验函数的虚拟地址及所述虚拟机本地库libart.so的基址确定所述校验函数的实际地址。
3.如权利要求2所述的方法,其特征在于,所述根据所述符号名称确定所述校验函数的虚拟地址,包括:
对所述虚拟机本地库libart.so中校验函数的文件格式进行解析,获取所述虚拟机本地库libart.so的符号表;
在所述符号表中,根据所述符号名称查找所述校验函数的虚拟地址。
4.如权利要求1所述的方法,其特征在于,所述利用所述内联挂钩函数将所述校验函数的调用函数Method替换成自定义调用函数,包括:
确定所述调用函数Method在所述校验函数中的第一起始地址;
利用所述内联挂钩函数在所述第一起始地址的头字节中配置用于进行跳转的第一jmp指令;
当执行所述调用函数Method时,基于所述第一jmp指令,跳转至所述自定义调用函数。
5.如权利要求1所述的方法,其特征在于,利用所述内联挂钩函数将所述校验函数的反射函数Field替换成自定义反射函数,包括:
确定所述反射函数Field在所述校验函数中的第二起始地址;
利用所述内联挂钩函数在所述第二起始地址的头字节中配置用于进行跳转的第二jmp指令;
当执行所述反射函数Field时,基于所述第二jmp指令,跳转至所述自定义反射函数。
6.一种函数调用的装置,其特征在于,所述装置包括:
获取单元,用于获取校验函数的名称,所述校验函数用于校验系统虚拟机中待调用函数对应的结构体的访问标志位,所述待调用函数为所述系统本身的应用程序接口API函数;
确定单元,用于基于所述校验函数的名称确定所述校验函数的实际地址;
修改单元,用于基于所述校验函数的实际地址,利用内联挂钩函数对所述校验函数进行修改,使得所述校验函数对所述访问标志位进行校验后,能够允许应用程序访问并调用所述待调用函数;
所述修改单元具体用于:
基于所述校验函数的地址,利用所述内联挂钩函数将所述校验函数的调用函数Method替换成自定义调用函数;以及,
利用所述内联挂钩函数将所述校验函数的反射函数Field替换成自定义反射函数,当执行所述校验函数时,使得所述校验函数的校验返回值为预设的返回值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810575335.4/1.html,转载请声明来源钻瓜专利网。