获取实际地址的方法、装置、介质和电子设备制造方法及图纸

技术编号:24330972 阅读:22 留言:0更新日期:2020-05-29 19:35
本公开提供了一种获取实际地址的方法、装置、介质和电子设备。通过在第一对象代码中设置第一标记的方法获取第一标记的第一实际地址,通过保存在第一配置数据集中的第一相对偏移量与第一实际地址的和,获取第一对象子代码在内存中的第二实际地址。本公开提供的获取实际地址的方法,将过去耗时在12ms左右,减少为小于1ms,几乎忽略不计。从而提高了系统的性能。

Methods, devices, media, and electronic devices for obtaining physical addresses

【技术实现步骤摘要】
获取实际地址的方法、装置、介质和电子设备
本公开涉及计算机
,具体而言,涉及一种获取实际地址的方法、装置、介质和电子设备。
技术介绍
安卓(英文全称Android)是一种基于Linux的自由且开放源代码的操作系统,主要使用于移动终端。从安卓4到现在的安卓10,每个版本上都会针对虚拟机做大量性能和异常相关的优化。而获取实际地址需要更新具有只读属性的内存信息。而该内存信息的特性是一旦储存到内存中应用程序只能读取该内存信息不能改变或删除。因此,在安卓终端上市后很难进行虚拟机的升级。这导致低版本安卓系统的终端存在大量的虚拟机问题,从而影响到终端软件的性能和稳定性。在计算机
,钩子(Hook)技术通常是指在原有执行流程中插入Hook代码拦截执行流程,使其跳转并执行自定义的桩代码,以达到控制执行流程的目的。所以,终端软件工程师会采用Hook技术动态修改内存中的虚拟机指令,以达到优化升级的目的。从而提高了系统稳定性和系统性能。在Android系统中,通常方法是:通过“/proc/pid/maps”读取内存映射表,找到需设置桩代码的动态库在内存中的实际地址;然后,通过该实际地址,解析ELF符号表找到动态库中被修改函数的相对偏移量;进而获取被修改函数的实际地址。但是,当前在Android系统中获取被修改函数的实际地址的平均耗时为12ms左右。当同时存在多个被修改函数的实际地址时,将严重影响系统的性能。
技术实现思路
提供该
技术实现思路
部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该
技术实现思路
部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。本公开的目的在于提供一种获取实际地址的方法、装置、介质和电子设备,能够解决上述提到的至少一个技术问题。具体方案如下:根据本公开的具体实施方式,第一方面,本公开提供一种获取实际地址的方法,包括:从第一对象代码的第一内存对象中获取第一标记在内存中的第一实际地址;获取第一配置数据集,并从所述第一配置数据集中读取第一相对偏移量;计算所述第一实际地址与所述第一相对偏移量的和,获取第一对象子代码在内存中的第二实际地址;其中,所述第一对象代码中包括所述第一对象子代码。根据本公开的具体实施方式,第二方面,本公开提供一种获取实际地址的装置,包括:获取第一实际地址单元,用于从第一对象代码的第一内存对象中获取第一标记在内存中的第一实际地址;读取第一相对偏移量单元,用于获取第一配置数据集,并从所述第一配置数据集中读取第一相对偏移量;获取第二实际地址单元,用于计算所述第一实际地址与所述第一相对偏移量的和,获取第一对象子代码在内存中的第二实际地址;其中,所述第一对象代码中包括所述第一对象子代码。根据本公开的具体实施方式,第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面任一项所述获取实际地址的方法。根据本公开的具体实施方式,第四方面,本公开提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面任一项所述获取实际地址的方法。本公开实施例的上述方案与现有技术相比,至少具有以下有益效果:本公开提供了一种获取实际地址的方法、装置、介质和电子设备。通过在第一对象代码中设置第一标记的方法获取第一标记的第一实际地址,通过保存在第一配置数据集中的第一相对偏移量与第一实际地址的和,获取第一对象子代码在内存中的第二实际地址。本公开提供的获取实际地址的方法,将过去耗时在12ms左右,减少为小于1ms,几乎忽略不计。从而提高了系统的性能。附图说明结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:图1示出了根据本公开实施例的获取实际地址的方法的流程图;图2示出了根据本公开实施例的获取实际地址的方法的内存地址示意图;图3示出了根据本公开实施例的获取实际地址的方法的信号处理示意图;图4示出了根据本公开实施例的获取实际地址的装置的单元框图;图5示出了根据本公开的实施例的电子设备连接结构示意图。具体实施方式下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。下面结合附图详细说明本公开的可选实施例。对本公开提供的第一实施例,即一种获取实际地址的方法的实施例。下面结合图1、图2和图3对本公开实施例进行详细说明,其中,图1为本公开实施例提供的获取实际地址的方法的流程图;图2示出了根据本公开实施例的获取实际地址的方法的内存地址示意图;图3示出了根据本公开实施例的获取实际地址的方法的信号处理示意图。请参见图1和图2所示。步骤S101,从第一对象代码的第一内存对象中获取第一标记在内存中的第一实际地址。在第一内存对象是内存中的一块内存区域,在这个区域中保存着第一对象代码。例如,第一对象代码是一个动态链接库的代码;需要在该动态链接库中的一个指定的函数中设置Hook代码,并插入执行桩代码的跳转指令。第一标记是本公开实施例为了提高获取实际地址的效率而在第一对象代码中设置的一个特殊标记。通过该第一标记获取其在内存中的第一实际地址。第一标记可以设置在第一对象代码的任何位置。请参见图3本文档来自技高网
...

【技术保护点】
1.一种获取实际地址的方法,其特征在于,包括:/n从第一对象代码的第一内存对象中获取第一标记在内存中的第一实际地址;/n获取第一配置数据集,并从所述第一配置数据集中读取第一相对偏移量;/n计算所述第一实际地址与所述第一相对偏移量的和,获取第一对象子代码在内存中的第二实际地址;其中,所述第一对象代码中包括所述第一对象子代码。/n

【技术特征摘要】
1.一种获取实际地址的方法,其特征在于,包括:
从第一对象代码的第一内存对象中获取第一标记在内存中的第一实际地址;
获取第一配置数据集,并从所述第一配置数据集中读取第一相对偏移量;
计算所述第一实际地址与所述第一相对偏移量的和,获取第一对象子代码在内存中的第二实际地址;其中,所述第一对象代码中包括所述第一对象子代码。


2.根据权利要求1所述的方法,其特征在于,所述第一标记包括第一信号处理函数;
所述从第一对象代码的第一内存对象中获取第一标记在内存中的第一实际地址,包括:
捕获第一信号;其中,所述第一信号是在所述第一对象代码中注册的第一信号处理函数运行时发出的信号;
基于所述第一信号获取所述第一信号处理函数在内存中的第一实际地址。


3.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
当所述第一对象代码第一次运行时,获取第二内存映射表;
分析所述第二内存映射表,获取所述第一对象代码的第二内存对象的第三实际地址;
获取第二符号表;
从所述第三实际地址开始分析所述第一对象代码和所述第二符号表,获取第四实际地址;
捕获第二信号;其中,所述第二信号是所述第一对象代码中第一信号处理函数运行时发出的信号;
基于所述第二信号获取所述第一信号处理函数在内存中的第四实际地址;
计算所述第三实际地址与所述第四实际地址的差,获取第一相对偏移量;
将所述第一相对偏移量保存在所述第一配置数据集中。


4.根据权利要求1所述的方法,其特征在于,所述内存的属性为只读属性;
在所述获取第一对象子代码在内存中的第二实际地址后,还包括:
...

【专利技术属性】
技术研发人员:朴英敏
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:北京;11

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

1