[发明专利]一种函数挂钩实现方法、装置和存储介质有效
申请号: | 201810041219.4 | 申请日: | 2018-01-16 |
公开(公告)号: | CN110046497B | 公开(公告)日: | 2023-06-20 |
发明(设计)人: | 刘华星 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F21/54 | 分类号: | G06F21/54 |
代理公司: | 深圳翼盛智成知识产权事务所(普通合伙) 44300 | 代理人: | 黄威 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 函数 挂钩 实现 方法 装置 存储 介质 | ||
本发明实施例公开了一种函数挂钩实现方法、装置和存储介质;本发明实施例采用在ART系统中创建空的方法对象,并将被挂钩函数的函数信息备份至方法对象中,函数信息包括被挂钩函数的头两条指令;将被挂钩函数中的头两条指令修改为跳转指令,跳转指令用于指示跳转至执行自定义挂钩函数;在方法对象中设置回调指令,回调指令位于头两条指令之后,用于指示跳转执行被挂钩函数中头两条指令的后续指令;当调用被挂钩函数时,根据跳转指令跳转至执行自定义挂钩函数;在自定义挂钩函数执行完成时,跳转至执行方法对象中的头两条指令,并根据回调指令跳转至执行被挂钩函数中的后续指令。该方案可以提高终端系统的安全性。
技术领域
本发明涉及计算机技术领域,具体涉及一种函数挂钩实现方法、装置和存储介质。
背景技术
ART模式英文全称为Android runtime,是谷歌Android 4.4系统新增的一种应用运行模式。ART模式中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。
目前,android(安卓)系统在ART模式下的函数替换操作方案即hook(挂钩)方案主要包括以xpose为代表的方案。xpose方案虽然能够比较好的hook以及回调到原函数,但是在实际操作中需要使用xpose提供的libart.so文件替换系统已有的libart.so文件,这样就需要对终端进行root,使得用户获取系统的超级用户权限。然而,对终端进行root,会降低终端系统的安全性。
发明内容
本发明实施例提供一种函数挂钩实现方法、装置和存储介质,可以提高终端系统的安全性。
本发明实施例提供一种函数挂钩实现方法,包括:
在ART系统中创建空的方法对象,并将被挂钩函数的函数信息备份至所述方法对象中,所述函数信息包括所述被挂钩函数的头两条指令;
将所述被挂钩函数中的头两条指令修改为跳转指令,所述跳转指令用于指示跳转至执行自定义挂钩函数;
在所述方法对象中设置回调指令,所述回调指令位于所述头两条指令之后,用于指示跳转执行所述被挂钩函数中所述头两条指令的后续指令;
当调用所述被挂钩函数时,根据所述跳转指令跳转至执行所述自定义挂钩函数;
在所述自定义挂钩函数执行完成时,跳转至执行所述方法对象中的所述头两条指令,并根据所述回调指令跳转至执行所述被挂钩函数中的所述后续指令。
相应的,本发明实施例还提供了一种函数挂钩实现装置,包括:
备份单元,用于在ART系统中创建空的方法对象,并将被挂钩函数的函数信息备份至所述方法对象中,所述函数信息包括所述被挂钩函数的头两条指令;
修改单元,用于将所述被挂钩函数中的头两条指令修改为跳转指令,所述跳转指令用于指示跳转至执行自定义挂钩函数;
回调设置单元,用于在所述方法对象中设置回调指令,所述回调指令位于所述头两条指令之后,用于指示跳转执行所述被挂钩函数中所述头两条指令的后续指令;
函数调用单元,用于当调用所述被挂钩函数时,根据所述跳转指令跳转至执行所述自定义挂钩函数;
函数回调单元,用于在所述自定义挂钩函数执行完成时,跳转至执行所述方法对象中的所述头两条指令,并根据所述回调指令跳转至执行所述被挂钩函数中的所述后续指令。
相应的,本发明实施例还提供一种存储介质,所述存储介质存储有指令,所述指令被处理器执行时实现本发明实施例任一提供的函数挂钩实现方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810041219.4/2.html,转载请声明来源钻瓜专利网。