[发明专利]获取实际地址的方法、装置、介质和电子设备有效
| 申请号: | 202010007148.3 | 申请日: | 2020-01-03 |
| 公开(公告)号: | CN111209225B | 公开(公告)日: | 2022-04-22 |
| 发明(设计)人: | 朴英敏 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
| 主分类号: | G06F12/02 | 分类号: | G06F12/02 |
| 代理公司: | 北京睿驰通程知识产权代理事务所(普通合伙) 11604 | 代理人: | 唐华;张文平 |
| 地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 获取 实际 地址 方法 装置 介质 电子设备 | ||
本公开提供了一种获取实际地址的方法、装置、介质和电子设备。通过在第一对象代码中设置第一标记的方法获取第一标记的第一实际地址,通过保存在第一配置数据集中的第一相对偏移量与第一实际地址的和,获取第一对象子代码在内存中的第二实际地址。本公开提供的获取实际地址的方法,将过去耗时在12ms左右,减少为小于1ms,几乎忽略不计。从而提高了系统的性能。
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种获取实际地址的方法、装置、介质和电子设备。
背景技术
安卓(英文全称Android)是一种基于Linux的自由且开放源代码的操作系统,主要使用于移动终端。
从安卓4到现在的安卓10,每个版本上都会针对虚拟机做大量性能和异常相关的优化。而获取实际地址需要更新具有只读属性的内存信息。而该内存信息的特性是一旦储存到内存中应用程序只能读取该内存信息不能改变或删除。因此,在安卓终端上市后很难进行虚拟机的升级。这导致低版本安卓系统的终端存在大量的虚拟机问题,从而影响到终端软件的性能和稳定性。
在计算机技术领域,钩子(Hook)技术通常是指在原有执行流程中插入Hook代码拦截执行流程,使其跳转并执行自定义的桩代码,以达到控制执行流程的目的。
所以,终端软件工程师会采用Hook技术动态修改内存中的虚拟机指令,以达到优化升级的目的。从而提高了系统稳定性和系统性能。在Android系统中,通常方法是:通过“/proc/pid/maps”读取内存映射表,找到需设置桩代码的动态库在内存中的实际地址;然后,通过该实际地址,解析ELF符号表找到动态库中被修改函数的相对偏移量;进而获取被修改函数的实际地址。
但是,当前在Android系统中获取被修改函数的实际地址的平均耗时为12ms左右。当同时存在多个被修改函数的实际地址时,将严重影响系统的性能。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
本公开的目的在于提供一种获取实际地址的方法、装置、介质和电子设备,能够解决上述提到的至少一个技术问题。具体方案如下:
根据本公开的具体实施方式,第一方面,本公开提供一种获取实际地址的方法,包括:
从第一对象代码的第一内存对象中获取第一标记在内存中的第一实际地址;
获取第一配置数据集,并从所述第一配置数据集中读取第一相对偏移量;
计算所述第一实际地址与所述第一相对偏移量的和,获取第一对象子代码在内存中的第二实际地址;其中,所述第一对象代码中包括所述第一对象子代码。
根据本公开的具体实施方式,第二方面,本公开提供一种获取实际地址的装置,包括:
获取第一实际地址单元,用于从第一对象代码的第一内存对象中获取第一标记在内存中的第一实际地址;
读取第一相对偏移量单元,用于获取第一配置数据集,并从所述第一配置数据集中读取第一相对偏移量;
获取第二实际地址单元,用于计算所述第一实际地址与所述第一相对偏移量的和,获取第一对象子代码在内存中的第二实际地址;其中,所述第一对象代码中包括所述第一对象子代码。
根据本公开的具体实施方式,第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面任一项所述获取实际地址的方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010007148.3/2.html,转载请声明来源钻瓜专利网。





