一种热修复方法、装置、电子设备及存储介质制造方法及图纸

技术编号:38710819 阅读:11 留言:0更新日期:2023-09-08 14:53
本公开提供了一种热修复方法、装置、电子设备及存储介质,该方法为,获得所述应用程序的待修复SDK的补丁包,补丁包中包括目标修复对象的补丁包,目标修复对象为待修复SDK中需热修复的对象;确定所述目标修复对象是否已被加载到运行内存;在确定所述目标修复对象未被加载到运行内存的情况下,在所述应用程序运行过程中,拦截所述目标修复对象的加载流程,并将目标修复对象的加载路径修改为指向所述目标修复对象的补丁包所在的补丁位置路径,以使所述应用程序能够加载所述补丁位置路径下的所述目标修复对象,这样,针对未被加载的目标修复对象,拦截加载流程以指向补丁位置路径,实现目标修复对象的热修复立即生效,而不需要应用程序重启。应用程序重启。应用程序重启。

【技术实现步骤摘要】
一种热修复方法、装置、电子设备及存储介质


[0001]本公开涉及计算机
,具体而言,涉及一种热修复方法、装置、电子设备及存储介质。

技术介绍

[0002]热修复技术是一种快速高效的应用程序修复方式,可以对已安装的应用程序使用补丁进行修复,应用程序的热修复包括so库热修复,相关技术中,so库热修复方法主要是针对应用程序级别的,并且是应用程序重启后才会生效,降低了效率,并且会使得用户打开已启动应用程序中某功能时,热修复补丁不能及时生效而导致漏洞没有修复而出现问题,影响用户使用体验。

技术实现思路

[0003]本公开实施例至少提供一种热修复方法、装置、电子设备及存储介质。
[0004]第一方面,本公开实施例提供了一种热修复方法,包括:
[0005]获得所述应用程序的待修复SDK的补丁包,其中,所述补丁包中包括目标修复对象的补丁包,所述目标修复对象为所述待修复SDK中需热修复的对象;
[0006]确定所述目标修复对象是否已被加载到运行内存;
[0007]在确定所述目标修复对象未被加载到运行内存的情况下,在所述应用程序运行过程中,拦截所述目标修复对象的加载流程,并将所述目标修复对象的加载路径,修改为指向所述目标修复对象的补丁包所在的补丁位置路径,以使所述应用程序能够加载所述补丁位置路径下的所述目标修复对象。
[0008]第二方面,本公开实施例还提供一种热修复装置,包括:
[0009]获得模块,用于获得所述应用程序的待修复软件开发功能包SDK的补丁包,其中,所述补丁包中包括目标修复对象的补丁包,所述目标修复对象为所述待修复SDK中需热修复的对象;
[0010]确定模块,用于确定所述目标修复对象是否已被加载到运行内存;
[0011]第一处理模块,用于在确定所述目标修复对象未被加载到运行内存的情况下,在所述应用程序运行过程中,拦截所述目标修复对象的加载流程,并将所述目标修复对象的加载路径,修改为指向所述目标修复对象的补丁包所在的补丁位置路径,以使所述应用程序能够加载所述补丁位置路径下的所述目标修复对象。
[0012]第三方面,本公开可选实现方式还提供一种电子设备,包括处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
[0013]第四方面,本公开可选实现方式还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面,或第一方面中任一种可能
的实施方式中的步骤。
[0014]本公开实施例中,在应用程序运行情况下,获得所述应用程序的待修复SDK的补丁包,其中,所述补丁包中至少包括目标修复对象的补丁包;确定所述目标修复对象是否已被加载到运行内存;在确定所述目标修复对象未被加载到运行内存的情况下,在所述应用程序运行过程中,拦截所述目标修复对象的加载流程,并将目标修复对象的加载路径,修改为指向所述目标修复对象的补丁包所在的补丁位置路径,以使所述应用程序能够加载所述补丁位置路径下的所述目标修复对象,这样,针对SDK的目标修复对象,可以在未被加载到运行内存时,即进行拦截加载流程并指向补丁位置路径,可以使得不需要应用程序重启,就可以在调用目标修复对象时,加载补丁位置路径下的目标修复对象,实现目标修复对象的热修复立即生效。
[0015]关于上述热修复装置、电子设备、及计算机可读存储介质的效果描述参见上述热修复方法的说明,这里不再赘述。
[0016]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开的技术方案。
[0017]为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
[0018]为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0019]图1示出了本公开实施例所提供的热修复整体方案流程图;
[0020]图2示出了本公开实施例所提供的一种热修复方法的流程图;
[0021]图3示出了本公开实施例所提供的hook目标修复对象的补丁位置路径的原理示意图;
[0022]图4示出了本公开实施例所提供的另一种热修复方法的流程图;
[0023]图5示出了本公开实施例所提供的热修复方法中判断目标修复对象是否已被加载到运行内存的方法流程图;
[0024]图6示出了本公开实施例所提供的一种热修复装置的结构示意图;
[0025]图7示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
[0026]可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
[0027]为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅
是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0028]为便于对本公开技术方案的理解,首先对本公开实施例中的技术用语加以说明:
[0029]热修复:热修复是一种快速高效的修复应用程序(Application,App)缺陷或漏洞的方式,其不依赖于应用程序的版本更新来对应用程序的漏洞进行修复,可以理解为一种打补丁的方式,可以在用户无感知情况下对已安装的应用程序使用补丁进行修复,通常热修复包括类热修复、资源热修复和so热修复。
[0030]so热修复:so文件表示动态链接库,so库的修复本质是对native方法的修复和替换,和类加载方案类似,可以把补丁so库的路径插入到nativeLibraryDirectories数组的最前面,使得可以优先加载补丁so库而非原来so库以来达到修复目的。
[0031]钩子(hook):表示改变程序代码执行流程的一种方法,能够将某目标代码融入被勾住的应用程序的进程中,成为该进程的一个部分,使用技术手段在运行时动态的将该额外的目标代码依附现进程,从而实现替换现有处理逻辑或插入本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种热修复方法,其特征在于,包括:获得应用程序的待修复软件开发功能包SDK的补丁包,其中,所述补丁包中包括目标修复对象的补丁包,所述目标修复对象为所述待修复SDK中需热修复的对象;确定所述目标修复对象是否已被加载到运行内存;在确定所述目标修复对象未被加载到运行内存的情况下,在所述应用程序运行过程中,拦截所述目标修复对象的加载流程,并将所述目标修复对象的加载路径,修改为指向所述目标修复对象的补丁包所在的补丁位置路径,以使所述应用程序能够加载所述补丁位置路径下的所述目标修复对象。2.根据权利要求1所述的方法,其特征在于,所述确定所述目标修复对象是否已被加载到运行内存,包括:确定系统锁所在的锁位置路径,其中,所述系统锁为加载所述目标修复对象过程中所需使用的锁;基于所述锁位置路径加载所述系统锁,并在加载所述系统锁后,获取所述应用程序对应的已被加载到运行内存的各对象;根据获取的所述各对象和所述目标修复对象的比对,确定所述目标修复对象是否已被加载到运行内存。3.根据权利要求2所述的方法,其特征在于,所述确定系统锁所在的锁位置路径,包括:获取所述系统锁对应的系统文件;对所述系统文件进行解析,并根据所述系统锁的符号名,从解析后的所述系统文件中确定出所述系统锁所在的锁位置路径。4.根据权利要求2所述的方法,其特征在于,所述确定系统锁所在的锁位置路径,包括:执行调用加载操作或卸载操作;其中,在执行所述加载操作或所述卸载操作时会加载所述系统锁;遍历所述加载操作或卸载操作所对应的调用栈信息,确定所述系统锁所在的锁位置路径。5.根据权利要求2

4任一项所述的方法,其特征在于,所述获取所述应用程序对应的已被加载到运行内存的各对象,包括:通过预设目标接口,访问所述运行内存并在所述运行内存中,读取所述应用程序对应的已被加载到所述运行内存的各对象。6.根据权利要求2...

【专利技术属性】
技术研发人员:魏君成魏振果
申请(专利权)人:北京字跳网络技术有限公司
类型:发明
国别省市:

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

1