数据的处理方法和装置、存储介质及电子设备与流程

文档序号:40351582发布日期:2024-12-18 13:29阅读:11来源:国知局
数据的处理方法和装置、存储介质及电子设备与流程

本技术涉及计算机领域,具体而言,涉及一种数据的处理方法和装置、存储介质及电子设备。


背景技术:

1、目前,在现有的动态链接库中,线程局部存储变量通常通过全局偏移表来进行重定位,当动态链接库被加载到内存中时,线程局部存储变量的地址会被填充到全局偏移表中,程序在运行时通过全局偏移表来访问线程局部存储变量。

2、然而,当动态链接库中的补丁函数使用常规动态模式寻址线程局部存储变量,而线程局部存储变量在可执行文件中以局部可执行模式寻址时,由于局部可执行模式缺少重定位信息,使得补丁函数加载失败,也即,相关技术中存在着由于常规动态模式与局部可执行模式下的线程局部存储变量的寻址方式不同,导致补丁函数加载失败的技术问题。

3、针对上述的问题,目前尚未提出有效的解决方案。


技术实现思路

1、本技术实施例提供了一种数据的处理方法和装置、存储介质及电子设备,以至少解决由于常规动态模式与局部可执行模式下的线程局部存储变量的寻址方式不同,导致补丁函数加载失败的技术问题。

2、根据本技术实施例的一个方面,提供了一种数据的处理方法,包括:在目标进程需要加载动态链接库的情况下,根据补丁函数关联的代码片段确定所述补丁函数需要访问的目标线程局部存储变量对应的变量标识和对应的汇编代码的起始位置,其中,所述动态链接库包括所述补丁函数;查找可执行文件中是否存在具有所述变量标识的目标重定位信息,在未查找到所述目标重定位信息的情况下,确定所述目标线程局部存储变量的访问方式为局部可执行模式;在所述目标线程局部存储变量的访问方式为所述局部可执行模式的情况下,根据所述变量标识在所述可执行文件中确定具有所述变量标识的同名线程局部存储变量,以及所述同名线程局部存储变量的目标偏移;根据所述目标偏移修改所述同名线程局部存储变量对应的汇编代码,得到目标汇编代码;使用所述目标汇编代码替换所述起始位置对应的初始汇编代码,并将所述目标线程局部存储变量的重定位类型修改为禁止重定位,更新并加载所述动态链接库。

3、根据本技术实施例的另一方面,还提供了一种数据的处理装置,包括:确定模块,用于在目标进程需要加载动态链接库的情况下,根据补丁函数关联的代码片段确定所述补丁函数需要访问的目标线程局部存储变量对应的变量标识和对应的汇编代码的起始位置,其中,所述动态链接库包括所述补丁函数;查找模块,用于查找可执行文件中是否存在具有所述变量标识的目标重定位信息,在未查找到所述目标重定位信息的情况下,确定所述目标线程局部存储变量的访问方式为局部可执行模式;执行模块,用于在所述目标线程局部存储变量的访问方式为所述局部可执行模式的情况下,根据所述变量标识在所述可执行文件中确定具有所述变量标识的同名线程局部存储变量,以及所述同名线程局部存储变量的目标偏移;修改模块,用于根据所述目标偏移修改所述同名线程局部存储变量对应的汇编代码,得到目标汇编代码;替换模块,用于使用所述目标汇编代码替换所述起始位置对应的初始汇编代码,并将所述目标线程局部存储变量的重定位类型修改为禁止重定位,更新并加载所述动态链接库。

4、可选地,所述装置用于通过如下方式根据所述补丁函数关联的代码片段确定所述补丁函数需要访问的目标线程局部存储变量对应的变量标识和对应的汇编代码的起始位置:遍历所述动态链接库对应的内存,查找所述代码片段,其中,所述代码片段的第一部分字节为预设格式,所述代码片段包括所述第一部分字节;基于所述代码片段和所述动态链接库对应的重定位表确定所述变量标识和所述起始位置。

5、可选地,所述装置用于通过如下方式基于所述代码片段和所述动态链接库对应的重定位表确定所述变量标识和所述起始位置,包括:根据所述代码片段的第二部分字节确定与寄存器之间的第一偏移值,其中,所述代码片段包括所述第二部分字节;获取所述寄存器的下一条操作指令的地址;根据所述第一偏移值与所述地址的和值在所述重定位表中确定所述变量标识和所述起始位置。

6、可选地,所述装置用于通过如下方式查找可执行文件中是否存在具有所述变量标识的目标重定位信息,在未查找到所述目标重定位信息的情况下,确定所述目标线程局部存储变量的访问方式为局部可执行模式:获取所述可执行文件的符号信息;在所述符号信息为预设类型的情况下,确定所述可执行文件包括所述目标线程局部存储变量;在所述可执行文件中查找是否存在具有所述变量标识的所述目标重定位信息;在未查找到所述目标重定位信息的情况下,确定所述目标线程局部存储变量的访问方式为所述局部可执行模式。

7、可选地,所述装置用于通过如下方式在所述目标线程局部存储变量的访问方式为所述局部可执行模式的情况下,根据所述变量标识在所述可执行文件中确定具有所述变量标识的同名线程局部存储变量,以及所述同名线程局部存储变量的目标偏移:在所述目标线程局部存储变量的访问方式为所述局部可执行模式的情况下,根据所述变量标识在所述可执行文件中确定具有所述变量标识的同名线程局部存储变量;获取所述同名线程局部存储变量在线程局部存储空间的第二偏移以及所述线程局部存储空间的对齐尺寸;根据所述第二偏移和所述对齐尺寸确定所述目标偏移。

8、可选地,所述装置用于通过如下方式根据所述第二偏移和所述对齐尺寸确定所述目标偏移:确定所述线程局部存储空间中的最后一个线程局部存储变量对应的第三偏移;将所述第三偏移与所述对齐尺寸之和确定为指针偏移;将所述第二偏移与所述指针偏移之差确定为所述目标偏移。

9、可选地,所述装置用于根据所述目标偏移修改所述同名线程局部存储变量对应的汇编代码,得到目标汇编代码:获取所述同名线程局部存储变量对应的汇编代码,其中,所述同名线程局部存储变量对应的汇编代码至少包括4个字节;根据所述目标偏移对所述同名线程局部存储变量对应的汇编代码的最后4个字节进行修改,得到所述目标汇编代码。

10、根据本技术实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述数据的处理方法。

11、根据本技术实施例的又一方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上数据的处理方法。

12、根据本技术实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的数据的处理方法。

13、在本技术实施例中,采用在目标进程需要加载动态链接库的情况下,根据补丁函数关联的代码片段确定补丁函数需要访问的目标线程局部存储变量对应的变量标识和对应的汇编代码的起始位置,其中,动态链接库包括补丁函数;查找可执行文件中是否存在具有变量标识的目标重定位信息,在未查找到目标重定位信息的情况下,确定目标线程局部存储变量的访问方式为局部可执行模式;在目标线程局部存储变量的访问方式为局部可执行模式的情况下,根据变量标识在可执行文件中确定具有变量标识的同名线程局部存储变量,以及同名线程局部存储变量的目标偏移;根据目标偏移修改同名线程局部存储变量对应的汇编代码,得到目标汇编代码;使用目标汇编代码替换起始位置对应的初始汇编代码,并将目标线程局部存储变量的重定位类型修改为禁止重定位,更新并加载动态链接库的方式,从而,解除补丁函数里使用目标线程局部存储变量的重定位依赖,使得补丁函数得以被成功加载,进一步地,解决了由于常规动态模式与局部可执行模式下的线程局部存储变量的寻址方式不同,导致补丁函数加载失败的技术问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1