CN108121561B - 应用程序修复方法、装置和系统 - Google Patents

应用程序修复方法、装置和系统 Download PDF

Info

Publication number
CN108121561B
CN108121561B CN201611070213.7A CN201611070213A CN108121561B CN 108121561 B CN108121561 B CN 108121561B CN 201611070213 A CN201611070213 A CN 201611070213A CN 108121561 B CN108121561 B CN 108121561B
Authority
CN
China
Prior art keywords
resource
target
application program
repaired
repair
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611070213.7A
Other languages
English (en)
Other versions
CN108121561A (zh
Inventor
曹昕
王淮庆
徐少朋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201611070213.7A priority Critical patent/CN108121561B/zh
Publication of CN108121561A publication Critical patent/CN108121561A/zh
Application granted granted Critical
Publication of CN108121561B publication Critical patent/CN108121561B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring

Abstract

本发明提出一种应用程序修复方法、装置和系统,其中,方法包括:通过启动应用程序,并将资源文件的列表加载至内存中,进而在根据所加载的资源文件的列表,对资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法,当应用程序执行到目标方法时,利用从服务器端所获取到的目标资源替换该待修复资源,以实现对应用程序的修复。可见,在修复过程中精确到方法级别进行修复,同时,无需采用新的应用程序版本,解决了现有技术中应用程序修复成本较高的技术问题。

Description

应用程序修复方法、装置和系统
技术领域
本发明涉及信息维护技术领域,尤其涉及一种应用程序修复方法、装置和系统。
背景技术
随着智能移动终端技术的不断发展,目前基于安卓系统的机型越来越丰富,使得安卓机型体现出了严重的碎片化。对于在移动终端上所安装的应用程序来说,由于这种机型的碎片化,需要提供更多样化的能够与机型适配的应用程序版本,但这种多样化极易导致应用程序运行中出现文案、图片上的错误。
在现有技术中,若需要对这种应用程序中的错误进行修复,程序员可以采用下发新的应用程序版本的方式。但在实际操作上,由于提供应用程序的应用市场较多,需要在每一个应用市场进行这种版本更新,操作繁琐而且成本较大。尤其是在所需修复的错误往往仅仅是一句文案或者一个按钮颜色这种小错误时,这种成本就显得更加高昂。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种应用程序修复方法,以实现在安卓系统中进行应用程序修复时,避免采用下发新的应用程序版本的方式,以节省成本。
本发明的第二个目的在于提出一种应用程序修复装置。
本发明的第三个目的在于提出另一种应用程序修复装置。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
本发明的第五个目的在于提出一种计算机程序产品。
本发明的第六个目的在于提出一种应用程序修复系统。
为达上述目的,本发明第一方面实施例提出了一种应用程序修复方法,包括:
启动应用程序,并将资源文件的列表加载至内存中;
在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获目标方法;其中,所述目标方法用于对服务器端所指示的待修复资源进行处理;
当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
本发明实施例的应用程序修复方法,通过启动应用程序,并将资源文件的列表加载至内存中,进而在根据所加载的资源文件的列表,对资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法,当应用程序执行到目标方法时,利用从服务器端所获取到的目标资源替换该待修复资源,以实现对应用程序的修复。可见,在修复过程中精确到方法级别进行修复,同时,无需采用新的应用程序版本,解决了现有技术中应用程序修复成本较高的技术问题。
为达上述目的,本发明第二方面实施例提出了一种应用程序修复装置,包括:
加载模块,用于启动应用程序,并将资源文件的列表加载至内存中;
截获模块,用于在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获目标方法;其中,所述目标方法用于对服务器端所指示的待修复资源进行处理;
替换模块,用于当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
本发明实施例的应用程序修复装置,通过加载模块在将资源文件的列表加载至内存中之后,进而在根据所加载的资源文件的列表,对资源文件执行预设处理流程时,截获模块通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法,当应用程序执行到目标方法时,替换模块利用从服务器端所获取到的目标资源替换该待修复资源,以实现对应用程序的修复。可见,在修复过程中精确到方法级别进行修复,同时,无需采用新的应用程序版本,解决了现有技术中应用程序修复成本较高的技术问题。
为达上述目的,本发明第三方面实施例提出了另一种装置,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为:启动应用程序,并将资源文件的列表加载至内存中;在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法;当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
为了实现上述目的,本发明第四方面实施例提出了一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器被执行时,使得终端能够执行一种应用程序修复方法,所述方法包括:启动应用程序,并将资源文件的列表加载至内存中;在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法;当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
为了实现上述目的,本发明第五方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行一种应用程序修复方法,所述方法包括:启动应用程序,并将资源文件的列表加载至内存中;在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法;当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
为了实现上述目的,本发明第六方面实施例提出了一种应用程序修复系统,包括:服务器端和运行有应用程序的终端;
所述服务器端,用于推送修复信息,所述修复信息包括待修复资源的标识和目标资源;
所述终端,用于启动所述应用程序,并将资源文件的列表加载至内存中;在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获对所述服务器端所指示的待修复资源进行处理的目标方法;当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种应用程序修复方法的流程示意图;
图2为应用程序修复系统的结构示意图;
图3为终端22执行应用程序修复方法的流程示意图;
图4为本发明实施例提供的一种应用程序修复装置的结构示意图;以及
图5为本发明实施例所提供的又一种应用程序修复装置的流程示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的应用程序修复方法、装置和系统。
图1为本发明实施例所提供的一种应用程序修复方法的流程示意图。
目前基于安卓系统的机型越来越丰富,使得安卓机型体现出了严重的碎片化。对于在移动终端上所安装的应用程序来说,由于这种机型的碎片化,需要提供更多样化的能够与机型适配的应用程序版本,但这种多样化极易导致应用程序运行中出现文案、图片上的错误。在对这种错误进行修改时,往往采用下发补丁包或者是下发新版本的方式,但这些方式在针对文案、图片这类错误来说,相对成本较高。
针对这一问题,本发明实施例提供了一种应用程序修复方法,以实现在应用程序不间断运行时,进需要对应用程序推送较少的信息,便可以实现对应用程序的修复,不会对应用程序使用者的使用过程造成影响,从而在节省了应用程序修复成本的同时提高了应用程序使用者的体验,如图1所示,该应用程序修复方法包括以下步骤:
步骤101,启动应用程序,并将资源文件的列表加载至内存中。
具体地,当应用程序中存在文案或者图片的资源配置上的不恰当或者需要进行改动时,服务器端在查询到需要进行修复的待修复资源的标识之后,配备修复后的目标资源,生成修复信息。进而通过推送(Push)的方式将修复信息下发至终端的应用程序。从而终端在启动应用程序之后,可以通过服务器端与终端之间接口获取到该修复信息,若确定运行所述应用程序的终端未存储有所述目标资源,则在所述目标资源通过校验后存储于所述终端的内存中。其中,修复信息包括待修复资源的标识和目标资源。
终端启动应用程序之后,通过反射获取到终端本地的R.string,R.drawable等资源文件列表,并将获取到的资源文件列表加载到内存中。
步骤102,在根据所加载的资源文件的列表,对资源文件执行预设处理流程时,通过钩子机制截获目标方法。
其中,所述目标方法用于对服务器端所指示的待修复资源进行处理;预设处理流程可以包括对资源文件进行设置和/或获取。
通过钩子(hooker)截获对待修复资源进行处理的目标类的目标方法,将所截获的目标类的目标方法传入钩子对象。具体地,可以通过Dexposed框架下,DexposedBridge类的findAndHookMethod方法作为钩子截获目标类的目标方法,这里所截获的目标方法可以是某个类的单一函数,也可以是系统函数。将函数传入钩子对象,钩子对象可以通过XC_MethodHook或者XC_MethodReplacement构造。对于单一函数或系统函数而言,有三个注入点可供选择:函数执行前注入(before),函数执行后注入(after)以及替换函数执行的代码段(replace)。这三个注入点分别对应于抽象类XC_MethodHook及其子类XC_MethodReplacement中的函数。
步骤103,当应用程序执行到目标方法时,利用从服务器端所获取到的目标资源替换待修复资源,以实现对应用程序的修复。
具体地,当所述应用程序执行到所述目标类的目标方法时,根据所述服务器端所指示的注入点,对传入所述钩子对象的目标类的目标方法注入所述目标资源。在具体利用目标资源进行替换时,若通过钩子机制所截获的目标方法为单一函数,利用目标资源替换单一函数所处理的待修复资源;若通过钩子机制所截获的目标方法为系统函数,例如:TypedArray类的getText()和getString(),则需要遍历资源文件R.sring中的字符串查询待修复资源,利用目标资源替换所查询到的待修复资源。并在替换完成后,释放掉不相关的资源索引。
本实施例中,通过启动应用程序,并将资源文件的列表加载至内存中,进而在根据所加载的资源文件的列表,对资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法,当应用程序执行到目标方法时,利用从服务器端所获取到的目标资源替换该待修复资源,以实现对应用程序的修复。可见,在修复过程中精确到方法级别进行修复,同时,无需采用新的应用程序版本,解决了现有技术中应用程序修复成本较高的技术问题。
为了清楚说明上一实施例,本实施例提供了一种应用程序修复系统,图2为应用程序修复系统的结构示意图,如图2所示,包括服务器端21和运行有应用程序的终端22。
服务器端21,用于推送修复信息,所述修复信息包括待修复资源的标识和目标资源。
具体地,当应用程序中存在文案或者图片的资源配置上的不恰当或者需要进行改动时,服务器端21在查询到需要进行修复的待修复资源的标识之后,配备修复后的目标资源,生成修复信息。进而通过推送的方式将修复信息下发至终端22的应用程序。从而终端在启动应用程序之后,可以通过服务器端21与终端22之间接口获取到该修复信息,若确定运行所述应用程序的终端22未存储有所述目标资源,则在所述目标资源通过校验后存储于所述终端的内存中。其中,修复信息包括待修复资源的标识和目标资源。
为了清楚说明终端22的执行过程,图3为终端22执行应用程序修复方法的流程示意图,如图3所示,方法包括:
步骤301,终端22启动应用程序(App),并将资源文件的列表加载至内存中。
步骤302,对资源文件执行包括资源设置或获取方法在内的预设处理流程过程中,根据资源修复列表,通过钩子机制截获需要加载待修复资源的目标方法。
其中,资源修复列表中记录有服务器端21所指示的待修复资源。
步骤303,判断所截获的目标方法是否需要进行修复,若是执行步骤304,否则执行步骤305。
当应用程序执行到目标方法时,判断所截获的目标方法是否需要进行修复,若待修复资源影响了目标方法的实现则一般情况下需要进行修复,利用从服务器端21所获取到的目标资源替换待修复资源。
步骤304,加载目标资源。
步骤305,加载该目标方法原有的资源。
本实施例中,通过启动应用程序,并将资源文件的列表加载至内存中,进而在根据所加载的资源文件的列表,对资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法,当应用程序执行到目标方法时,利用从服务器端所获取到的目标资源替换该待修复资源,以实现对应用程序的修复。可见,在修复过程中精确到方法级别进行修复,同时,无需采用新的应用程序版本,解决了现有技术中应用程序修复成本较高的技术问题。
在本实施例中,应用程序集成了Dexposed框架,Dexposed框架是一种无侵入运行期面向切面编程(Aspect Oriented Programming,AOP)框架,可以实现AOP编程、插桩、热补丁、软件开发工具包(software development kit,SDK)钩子等功能。由于Dexposed的AOP实现是完全非侵入式的,没有使用任何注解处理器,编织器或者字节码重写器,从而应用程序集成Dexposed框架很简单,只需要在应用程序的初始化阶段加载一个很小的JNI库就可以,这个加载操作已经封装在DexposedBridge函数库里面的canDexposed函数中。本实施例中的应用程序集成了Dexposed框架之后,钩子机制可以实现方法级粒度的截获,因此,在进行修复时,也相应可以实现方法级粒度的修复,相较于其他现有技术中的方案,无需补丁包或新版本,更加轻量简单。
为了实现上述实施例,本发明还提出一种应用程序修复装置。
图4为本发明实施例提供的一种应用程序修复装置的结构示意图。
如图4所示,该应用程序修复装置包括:加载模块41、截获模块42和替换模块43。
加载模块41,用于启动应用程序,并将资源文件的列表加载至内存中。
具体地,加载模块41,具体用于启动所述应用程序时,通过反射方式获取到运行所述应用程序的终端所存储资源文件的列表;将所获取到的资源文件的列表加载至内存中。
截获模块42,用于在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获目标方法。
其中,目标方法用于对服务器端所指示的待修复资源进行处理。
替换模块43,用于当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
进一步地,在本发明实施例的一种可能的实现方式中,截获模块42,具体用于通过钩子截获对所述待修复资源进行处理的目标类的目标方法;将所截获的目标类的目标方法传入钩子对象。
基于此,替换模块43,具体用于当所述应用程序执行到所述目标类的目标方法时,根据所述服务器端所指示的注入点,对传入所述钩子对象的目标类的目标方法注入所述目标资源。
其中,注入点包括:函数执行前注入、函数执行后注入和替换函数执行的代码段中的一个。
需要说明的是,前述对应用程序修复方法实施例的解释说明也适用于该实施例的应用程序修复装置,此处不再赘述。
基于上述实施例,本发明实施例还提供了又一种应用程序修复装置的可能的实现方式,图5为本发明实施例所提供的又一种应用程序修复装置的流程示意图,在上一实施例的基础上,应用程序修复装置还包括:接收模块44。
接收模块44,用于在所述应用程序启动时,通过接口获取所述服务器端推送的修复信息;所述修复信息包括所述待修复资源的标识和所述目标资源;若确定运行所述应用程序的终端未存储有所述目标资源,则在所述目标资源通过校验后存储于所述终端的内存中。
进一步地,在本发明实施例的一种可能的实现方式中,替换模块43,包括:第一替换单元431和第二替换单元432。
第一替换单元431,用于若通过钩子机制所截获的目标方法为单一函数,利用所述目标资源替换所述单一函数所处理的待修复资源。
第二替换单元432,用于若通过钩子机制所截获的目标方法为系统函数,遍历资源文件中的字符串查询所述待修复资源,利用所述目标资源替换所查询到的待修复资源。
本发明实施例中,通过启动应用程序,并将资源文件的列表加载至内存中,进而在根据所加载的资源文件的列表,对资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法,当应用程序执行到目标方法时,利用从服务器端所获取到的目标资源替换该待修复资源,以实现对应用程序的修复。可见,在修复过程中精确到方法级别进行修复,同时,无需采用新的应用程序版本,解决了现有技术中应用程序修复成本较高的技术问题。
为了实现上述实施例,本发明还提出另一种应用程序修复装置,包括:处理器,以及用于存储所述处理器可执行指令的存储器。
其中,处理器被配置为:启动应用程序,并将资源文件的列表加载至内存中;在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法;当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器被执行时,使得终端能够执行一种方法,所述方法包括:启动应用程序,并将资源文件的列表加载至内存中;在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法;当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
为了实现上述实施例,本发明还提出一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行一种应用程序修复方法,所述方法包括:启动应用程序,并将资源文件的列表加载至内存中;在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获对服务器端所指示的待修复资源进行处理的目标方法;当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (15)

1.一种应用程序修复方法,其特征在于,包括以下步骤:
启动应用程序,并将资源文件的列表加载至内存中;
在所述应用程序启动时,通过接口获取服务器端推送的修复信息;所述修复信息包括待修复资源的标识和目标资源;
在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获目标方法;其中,所述目标方法用于对服务器端所指示的待修复资源进行处理;
当所述应用程序执行到所述目标方法时,根据所述目标方法的类型,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
2.根据权利要求1所述的应用程序修复方法,其特征在于,所述通过钩子机制截获目标方法之前,还包括:
若确定运行所述应用程序的终端未存储有所述目标资源,则在所述目标资源通过校验后存储于所述终端的内存中。
3.根据权利要求1所述的应用程序修复方法,其特征在于,所述通过钩子机制截获目标方法,包括:
通过钩子截获对所述待修复资源进行处理的目标类的目标方法;
将所截获的目标类的目标方法传入钩子对象。
4.根据权利要求3所述的应用程序修复方法,其特征在于,所述当所述应用程序执行到所述目标方法时,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复,包括:
当所述应用程序执行到所述目标类的目标方法时,根据所述服务器端所指示的注入点,对传入所述钩子对象的目标类的目标方法注入所述目标资源。
5.根据权利要求4所述的应用程序修复方法,其特征在于,所述注入点包括:函数执行前注入、函数执行后注入和替换函数执行的代码段中的一个。
6.根据权利要求1-5任一项所述的应用程序修复方法,其特征在于,所述利用从所述服务器端所获取到的目标资源替换所述待修复资源,包括:
若通过钩子机制所截获的目标方法为单一函数,利用所述目标资源替换所述单一函数所处理的待修复资源;
若通过钩子机制所截获的目标方法为系统函数,遍历资源文件中的字符串查询所述待修复资源,利用所述目标资源替换所查询到的待修复资源。
7.根据权利要求1-5任一项所述的应用程序修复方法,其特征在于,所述启动应用程序,并将资源文件的列表加载至内存中,包括:
启动所述应用程序时,通过反射方式获取到运行所述应用程序的终端所存储资源文件的列表;
将所获取到的资源文件的列表加载至内存中。
8.一种应用程序修复装置,其特征在于,包括:
加载模块,用于启动应用程序,并将资源文件的列表加载至内存中;
接收模块,用于在所述应用程序启动时,通过接口获取服务器端推送的修复信息;所述修复信息包括待修复资源的标识和目标资源;
截获模块,用于在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获目标方法;其中,所述目标方法用于对服务器端所指示的待修复资源进行处理;
替换模块,用于当所述应用程序执行到所述目标方法时,根据所述目标方法的类型,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
9.根据权利要求8所述的应用程序修复装置,其特征在于,所述装置,还包括:
接收模块,用于若确定运行所述应用程序的终端未存储有所述目标资源,则在所述目标资源通过校验后存储于所述终端的内存中。
10.根据权利要求8所述的应用程序修复装置,其特征在于,
所述截获模块,具体用于通过钩子截获对所述待修复资源进行处理的目标类的目标方法;将所截获的目标类的目标方法传入钩子对象。
11.根据权利要求10所述的应用程序修复装置,其特征在于,
所述替换模块,具体用于当所述应用程序执行到所述目标类的目标方法时,根据所述服务器端所指示的注入点,对传入所述钩子对象的目标类的目标方法注入所述目标资源。
12.根据权利要求11所述的应用程序修复装置,其特征在于,所述注入点包括:函数执行前注入、函数执行后注入和替换函数执行的代码段中的一个。
13.根据权利要求8-12任一项所述的应用程序修复装置,其特征在于,所述替换模块,包括:
第一替换单元,用于若通过钩子机制所截获的目标方法为单一函数,利用所述目标资源替换所述单一函数所处理的待修复资源;
第二替换单元,用于若通过钩子机制所截获的目标方法为系统函数,遍历资源文件中的字符串查询所述待修复资源,利用所述目标资源替换所查询到的待修复资源。
14.根据权利要求8-12任一项所述的应用程序修复装置,其特征在于,
所述加载模块,具体用于启动所述应用程序时,通过反射方式获取到运行所述应用程序的终端所存储资源文件的列表;将所获取到的资源文件的列表加载至内存中。
15.一种应用程序修复系统,其特征在于,包括:服务器端和运行有应用程序的终端;
所述服务器端,用于推送修复信息,所述修复信息包括待修复资源的标识和目标资源;
所述终端,用于启动所述应用程序,在所述应用程序启动时,通过接口获取所述服务器端推送的修复信息;所述修复信息包括所述待修复资源的标识和所述目标资源;并将资源文件的列表加载至内存中;在根据所加载的资源文件的列表,对所述资源文件执行预设处理流程时,通过钩子机制截获对所述服务器端所指示的待修复资源进行处理的目标方法;当所述应用程序执行到所述目标方法时,根据所述目标方法的类型,利用从所述服务器端所获取到的目标资源替换所述待修复资源,以实现对所述应用程序的修复。
CN201611070213.7A 2016-11-28 2016-11-28 应用程序修复方法、装置和系统 Active CN108121561B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611070213.7A CN108121561B (zh) 2016-11-28 2016-11-28 应用程序修复方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611070213.7A CN108121561B (zh) 2016-11-28 2016-11-28 应用程序修复方法、装置和系统

Publications (2)

Publication Number Publication Date
CN108121561A CN108121561A (zh) 2018-06-05
CN108121561B true CN108121561B (zh) 2021-08-17

Family

ID=62224217

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611070213.7A Active CN108121561B (zh) 2016-11-28 2016-11-28 应用程序修复方法、装置和系统

Country Status (1)

Country Link
CN (1) CN108121561B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109409096B (zh) * 2018-11-15 2021-02-26 百度在线网络技术(北京)有限公司 内核漏洞修复方法、装置、服务器及系统
CN111522676B (zh) * 2020-04-01 2021-10-01 五八有限公司 一种应用程序的修复方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105589701A (zh) * 2014-10-21 2016-05-18 阿里巴巴集团控股有限公司 一种客户端应用程序局部更新方法及装置
CN105867988A (zh) * 2016-06-24 2016-08-17 深圳云之家网络有限公司 一种基于Hook技术的Android App热更新的方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336027B2 (en) * 2010-12-17 2016-05-10 Sap Se System and method for modular business applications
TWI518595B (zh) * 2014-03-17 2016-01-21 廣達電腦股份有限公司 軟體更新方法及系統以及行動裝置
US10146669B2 (en) * 2014-07-25 2018-12-04 International Business Machines Corporation Indicating a readiness of a change for implementation into a computer program
CN105975333B (zh) * 2015-12-24 2019-05-31 北京奇虎科技有限公司 应用程序运行控制的方法及装置
CN106021373A (zh) * 2016-05-11 2016-10-12 北京神州绿盟信息安全科技股份有限公司 一种文件更新方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105589701A (zh) * 2014-10-21 2016-05-18 阿里巴巴集团控股有限公司 一种客户端应用程序局部更新方法及装置
CN105867988A (zh) * 2016-06-24 2016-08-17 深圳云之家网络有限公司 一种基于Hook技术的Android App热更新的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Android平台免Root无侵入AOP框架Dexposed使用详解;asce1885;《https://www.jianshu.com/p/14edcb444c51》;20150804;1-7 *

Also Published As

Publication number Publication date
CN108121561A (zh) 2018-06-05

Similar Documents

Publication Publication Date Title
US10019256B2 (en) Systems and methods for incremental software development
CN109117169B (zh) 用于修复内核漏洞的方法和装置
CN103955363B (zh) 一种程序升级安装包的制作方法
US9355017B2 (en) Automated error checking system for a software application and method therefor
US9594551B2 (en) Method and device for updating software executed from non-volatile memory
CN102902556B (zh) 一种嵌入式设备的多级引导加载方法
WO2016000544A1 (zh) 处理app的cpu占用率异常的方法、装置及移动终端
US9672029B2 (en) Determining test case priorities based on tagged execution paths
US10223080B2 (en) Method and system for automated, static instrumentation for applications designed for execution in environments with restricted resources
US9348582B2 (en) Systems and methods for software dependency management
WO2016101503A1 (zh) 一种热补丁的实现方法和装置
JP2021002317A (ja) アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
CN104407973A (zh) 一种自动化单元测试的实现方法及装置
US11748245B2 (en) Object-oriented regression-candidate filter
CN105573755A (zh) 一种应用Activity渲染时间获取方法和装置
CN105446769A (zh) 镜像文件升级处理方法、装置和终端设备
CN104216719A (zh) 一种android系统的升级方法和装置
WO2020215686A1 (zh) spring框架泛型依赖注入方法、装置及计算机设备、存储介质
CN103559065A (zh) 一种ota升级的方法和系统
CN108121561B (zh) 应用程序修复方法、装置和系统
CN108650507B (zh) 终端设备的测试方法、装置、终端设备和存储介质
CN108694049B (zh) 一种更新软件的方法和设备
WO2016082450A1 (zh) 一种用户终端的升级方法和用户终端
CN105468420B (zh) 操作系统升级方法和装置
CN111142922A (zh) 应用程序更新方法、装置、终端及服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant