一种指针偏移获取方法技术

技术编号:39590064 阅读:7 留言:0更新日期:2023-12-03 19:42
本申请实施例公开了一种指针偏移获取方法

【技术实现步骤摘要】
一种指针偏移获取方法、系统、设备及存储介质


[0001]本申请实施例涉及计算机
,尤其涉及一种指针偏移获取方法

系统

设备及存储介质


技术介绍

[0002]目前,在进行安卓客户端进行性能优化过程中,经常涉及系统底层的改动

通过修改系统内存布局中相应类对象的成员变量,以实现给类对象的优化

其中,在进行类对象的成员变量调整时,会根据类对象的指针结合固定偏移以实现该成员变量的修改

[0003]但是,采用固定偏移修改类对象成员变量的方式,其指针偏移的获取过程难以适配不同的版本

机型和系统,其适配工作量相对较大

容易影响系统性能,导致性能优化结果较差


技术实现思路

[0004]本申请实施例提供一种指针偏移获取方法

系统

设备及存储介质,能够提升指针偏移获取的通用性和灵活性,减少系统开销,解决指针偏移获取工作量较大的技术问题

[0005]在第一方面,本申请实施例提供了一种指针偏移获取方法,包括:
[0006]获取待调整类对象的对象指针,基于待调整对象的目标变量确定关联变量,构建关联变量的结构体;
[0007]基于对象指针搜索结构体的特征码,并确定特征码对应的第一偏移信息;
[0008]以第一偏移信息作为目标变量的指针偏移,以根据对象指针和指针偏移调整目标变量/>。
[0009]在第二方面,本申请实施例提供了一种指针偏移获取系统,包括:
[0010]构建模块,配置为获取待调整类对象的对象指针,基于待调整对象的目标变量确定关联变量,构建关联变量的结构体;
[0011]搜索模块,配置为基于对象指针搜索结构体的特征码,并确定特征码对应的第一偏移信息;
[0012]获取模块,配置为以第一偏移信息作为目标变量的指针偏移,以根据对象指针和指针偏移调整目标变量

[0013]在第三方面,本申请实施例提供了一种指针偏移获取设备,包括:
[0014]存储器以及一个或多个处理器;
[0015]所述存储器,配置为存储一个或多个程序;
[0016]当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的指针偏移获取方法

[0017]在第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在由计算机处理器执行时配置为执行如第一方面所述的指针偏移获取方法

[0018]在第五方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品中包含有指令,当指令在计算机或处理器上运行时,使得计算机或处理器执行如第一方面所述的指针偏移获取方法

[0019]本申请实施例通过获取待调整类对象的对象指针,基于待调整对象的目标变量确定关联变量,构建关联变量的结构体;基于对象指针搜索结构体的特征码,并确定特征码对应的第一偏移信息;以第一偏移信息作为目标变量的指针偏移,以根据对象指针和指针偏移调整目标变量

采用上述技术手段,通过根据目标变量的关联变量进行特征码搜索,并以得到的偏移信息作为目标变量的指针偏移,以此通过关联变量的偏移信息可以高效

灵活地确定目标变量的指针偏移,无需针对不同的版本

机型和系统进行适配,降低偏移获取的工作量,进而降低系统开销,优化系统性能

附图说明
[0020]图1是本申请实施例提供的一种指针偏移获取方法的流程图;
[0021]图2是本申请实施例中指针偏移的获取流程图;
[0022]图3是本申请实施例中机械码解析的流程图;
[0023]图4是本申请实施例提供的一种指针偏移获取系统的结构示意图;
[0024]图5是本申请实施例提供的一种指针偏移获取设备的结构示意图

具体实施方式
[0025]为了使本申请的目的

技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述

可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定

另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法

虽然流程图将各项操作
(
或步骤
)
描述成顺序的处理,但是其中的许多操作可以被并行地

并发地或者同时实施

此外,各项操作的顺序可以被重新安排

当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤

所述处理可以对应于方法

函数

规程

子例程

子程序等等

[0026]本申请提供的指针偏移获取方法,旨在根据目标变量的关联变量进行特征码搜索,并以得到的偏移信息作为目标变量的指针偏移,以此通过关联变量的偏移信息可以高效

灵活地确定目标变量的指针偏移

[0027]其中,在安卓系统中,
libart.so
是安卓系统中的一个重要的系统库,是安卓运行环境
(ART

Android Runtime
,应用运行时可实现预编译过程的运行环境
)
的核心库之一

它是
ART
虚拟机的实现,主要负责将
Java(
计算机编程语言
)
代码转换为本地机器代码,并执行该代码

它的主要作用包括:将
Java
字节码转换为本地机器码;管理内存
,
实现内存分配回收等;实现线程管理和调度;提供
JNI(Java Native Interface

Java
本地接口
)
支持等

总之,
libart.so

Android
系统中一个非常重要的系统库,它是
ART
虚拟机的核心实现

[0028]安卓系统的垃圾回收
(Garbage Collection

GC)
是指一种自动化的内存管理机制,用于回收不再使用的内存空间,避免内存泄漏和内存溢出等问题

在安卓应用程序中,垃圾回收机制由
Android Ru本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种指针偏移获取方法,其特征在于,包括:获取待调整类对象的对象指针,基于所述待调整对象的目标变量确定关联变量,构建所述关联变量的结构体;基于所述对象指针搜索所述结构体的特征码,并确定所述特征码对应的第一偏移信息;以所述第一偏移信息作为所述目标变量的指针偏移,以根据所述对象指针和所述指针偏移调整所述目标变量
。2.
根据权利要求1所述的指针偏移获取方法,其特征在于,在所述基于所述待调整对象的目标变量确定关联变量之前,还包括:检测所述待调整类对象的适配特征码信息;对应地,在所述待调整类对象包含适配特征码信息的情况下,基于所述待调整对象的目标变量确定关联变量,以基于所述关联变量确定所述指针偏移;在所述待调整对象未包含配特征码信息的情况下,对所述待调整类对象进行机器码解析,基于机器码解析结果确定所述指针偏移
。3.
根据权利要求2所述的指针偏移获取方法,其特征在于,所述对所述待调整类对象进行机器码解析,包括:选择所述待调整类对象的解析方法,获取所述解析方法的函数指针;基于所述函数指针解析所述待调整类对象的机器码解析结果
。4.
根据权利要求3所述的指针偏移获取方法,其特征在于,所述获取所述解析方法的函数指针,包括:获取所述待调整类对象的调用方法,确定所述解析方法在所述调用方法的第二偏移信息,以所述第二偏移信息作为所述解析方法的函数指针
。5.
根据权利要求1所述的指针偏移获取方法,其特征在于,在确定所述特征码对应的第一偏移信息之后,还包括:对所述第一偏移信息进行偏移验证,在所述第一偏移信息未验证通过的情况下,基于所述对象指针调整搜索位置并重新搜索所述结构体的特征码,并基于重新搜索到的所述特征码确定新的所述第一偏移信息
。6.
根...

【专利技术属性】
技术研发人员:姜雷杨良剑
申请(专利权)人:广州市百果园信息技术有限公司
类型:发明
国别省市:

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

1