CN108089870A - 用于修复应用的方法和装置 - Google Patents
用于修复应用的方法和装置 Download PDFInfo
- Publication number
- CN108089870A CN108089870A CN201611047097.7A CN201611047097A CN108089870A CN 108089870 A CN108089870 A CN 108089870A CN 201611047097 A CN201611047097 A CN 201611047097A CN 108089870 A CN108089870 A CN 108089870A
- Authority
- CN
- China
- Prior art keywords
- function
- repaired
- application
- patch
- intended application
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Abstract
本申请公开了用于修复应用的方法和装置。该方法的一具体实施方式包括:接收目标应用的执行指令;执行目标应用的目标字节码,其中,目标应用的目标字节码是从所连接的第一服务器预先接收的,并且目标应用的目标字节码是第一服务器通过在对目标应用的代码编译所获取的字节码中的至少一个函数中添加条件分支语句所生成的;对于至少一个函数中的每一个函数,确定该函数中的条件分支语句中的条件是否成立,并且响应于确定该函数中的条件分支语句中的条件成立,执行预先生成的补丁中与该函数对应的已修复的函数;呈现目标应用的目标字节码的执行结果。该实施方式实现了对应用的快速修复。
Description
技术领域
本申请涉及计算机技术领域,具体涉及漏洞修复技术领域,尤其涉及用于修复应用的方法和装置。
背景技术
通常应用发布后,在使用过程中,经常会被发现存在各种漏洞。由于漏洞的存在,不仅会严重影响用户的体验,还会给用户带来极大的安全隐患。
目前,当已发布的应用出现漏洞时,通常需要应用厂商发布对漏洞修复后的新版本。已安装应用的客户端通过将应用升级成新版本的应用来克服漏洞。
然而,应用厂商发布新版本一般具有周期性,导致不能及时地对应用进行修复。
发明内容
本申请的目的在于提出一种改进的用于修复应用的方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种用于修复应用的方法,该方法包括:接收目标应用的执行指令;执行目标应用的目标字节码,其中,目标应用的目标字节码是从所连接的第一服务器预先接收的,并且目标应用的目标字节码是第一服务器通过在对目标应用的代码编译所获取的字节码中的至少一个函数中添加条件分支语句所生成的;对于至少一个函数中的每一个函数,确定该函数中的条件分支语句中的条件是否成立,并且响应于确定该函数中的条件分支语句中的条件成立,执行预先生成的补丁中与该函数对应的已修复的函数;呈现目标应用的目标字节码的执行结果。
在一些实施例中,接收目标应用的执行指令之前,还包括:从所连接的第二服务器接收预先生成的补丁文件,其中,预先生成的补丁文件是第二服务器通过如下步骤生成的:对应用的代码中的待修复的类进行修复,以获取已修复的类;对已修复的类进行编译,以获取已修复的类的字节码;对已修复的类的字节码进行优化,以生成补丁;将应用的代码中的待修复的类中的函数的信息写入配置文件中;将补丁和配置文件打包成补丁文件。
在一些实施例中,从所连接的第二服务器接收预先生成的补丁文件之后,还包括:读取配置文件中的函数的信息,从补丁中获取与配置文件中的函数的信息对应的已修复的函数,并存储在预设存储路径下。
在一些实施例中,确定该函数中的条件分支语句中的条件是否成立,包括:将该函数的信息与配置文件中的函数的信息进行匹配,若匹配成功,确定该函数中的条件分支语句中的条件成立。
在一些实施例中,执行预先生成的补丁中与该函数对应的已修复的函数,包括:执行预设存储路径下与匹配成功的配置文件中的函数的信息对应的已修复的函数。
第二方面,本申请提供了一种用于修复应用的装置,该装置包括:指令接收单元,配置用于接收目标应用的执行指令;目标字节码执行单元,配置用于执行目标应用的目标字节码,其中,目标应用的目标字节码是从所连接的第一服务器预先接收的,并且目标应用的目标字节码是第一服务器通过在对目标应用的代码编译所获取的字节码中的至少一个函数中添加条件分支语句所生成的;函数执行单元,配置用于对于至少一个函数中的每一个函数,确定该函数中的条件分支语句中的条件是否成立,并且响应于确定该函数中的条件分支语句中的条件成立,执行预先生成的补丁中与该函数对应的已修复的函数;结果呈现单元,配置用于呈现目标应用的目标字节码的执行结果。
在一些实施例中,该装置还包括:补丁文件接收单元,配置用于从所连接的第二服务器接收预先生成的补丁文件,其中,预先生成的补丁文件是第二服务器通过如下步骤生成的:对应用的代码中的待修复的类进行修复,以获取已修复的类;对已修复的类进行编译,以获取已修复的类的字节码;对已修复的类的字节码进行优化,以生成补丁;将应用的代码中的待修复的类中的函数的信息写入配置文件中将补丁和配置文件打包成补丁文件。
在一些实施例中,该装置还包括:函数存储单元,配置用于读取配置文件中的函数的信息,从补丁中获取与配置文件中的函数的信息对应的已修复的函数,并存储在预设存储路径下。
在一些实施例中,函数执行单元进一步配置用于:将该函数的信息与配置文件中的函数的信息进行匹配,若匹配成功,确定该函数中的条件分支语句中的条件成立。
在一些实施例中,函数执行单元进一步配置用于:执行预设存储路径下与匹配成功的配置文件中的函数的信息对应的已修复的函数。
本申请提供的用于修复应用的方法和装置,当接收到目标应用的执行指令时,执行目标应用的目标字节码;在执行目标应用的目标字节码的过程中,对于目标应用的目标字节码中被添加条件分支语句的函数,首先确定该函数中的条件分支语句中的条件是否成立;若成立,则执行预先生成的补丁中与该函数对应的已修复的函数;然后在目标应用的目标字节码执行完成后,呈现目标应用的目标字节码的执行结果,从而实现了在用户无感的情况下对应用快速地修复。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的用于修复应用的方法的一个实施例的流程图;
图3是根据本申请的用于修复应用的方法的又一个实施例的流程图;
图4是根据本申请的用于修复应用的装置的一个实施例的结构示意图;
图5是适于用来实现本申请实施例的终端设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于修复应用的方法或用于修复应用的装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101,网络102、103,第一服务器104和第二服务器105。网络102用以在终端设备101和第一服务器104之间提供通信链路的介质。网络103用以在终端设备101和第二服务器105之间提供通信链路的介质。网络102、103可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
终端设备101可以通过网络102从第一服务器104接收各种通讯客户端应用的安装包,并运行接收到的安装包以安装各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。终端设备101还可以通过网络103从第二服务器105接收各种通讯客户端应用的补丁,当终端设备101运行其上安装的通讯客户端应用时,采用相应的补丁以修复通讯客户端应用。
终端设备101可以包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
第一服务器104可以是提供各种服务的服务器,例如对终端设备101安装各种通讯客户端应用提供安装包的后台安装包服务器。后台安装包服务器可以对各种通讯客户端应用的代码进行编译,以获取通讯客户端应用的字节码,并在通讯客户端应用的字节码中的至少一个函数中添加条件分支语句,以生成通讯客户端应用的目标字节码,并将通讯客户端应用的目标字节码打包在该应用的安装包中发送给终端设备101。
第二服务器105也可以是提供各种服务的服务器,例如对终端设备101上安装的各种通讯客户端应用提供补丁的后台补丁服务器。后台补丁服务器可以生成各种通讯客户端应用的补丁,并将补丁发送给终端设备101。
需要说明的是,本申请实施例所提供的用于修复应用的方法一般由终端设备101执行,相应地,用于修复应用的装置一般设置于终端设备101中。
应该理解,图1中的终端设备、网络、第一服务器和第二服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络、第一服务器和第二服务器。并且,第一服务器和第二服务器也可以是同一台服务器。
继续参考图2,示出了根据本申请的用于修复应用的方法的一个实施例的流程200。该用于修复应用的方法,包括以下步骤:
步骤201,接收目标应用的执行指令。
在本实施例中,用于修复应用的方法运行于其上的电子设备(例如图1所示的终端设备101)可以接收目标应用的执行指令。其中,目标应用可以包括但不限于以下至少一项:网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件。目标应用的执行指令可以包括但不限于以下至少一项:打开目标应用的指令、关闭目标应用的指令、执行目标应用中的各种功能的指令。作为示例,在目标应用是购物类应用的情况下,目标应用中的各种功能可以包括但不限于以下至少一项:搜索功能、查看详情功能、加入购物车功能、结算功能。
在本实施例中,在电子设备的显示屏是触摸屏的情况下,目标应用的执行指令可以是通过检测用户作用于触摸屏的触摸动作信号来获取的。作为示例,电子设备可以检测用户手指在触摸屏上的点击动作,当用户点击电子设备触摸屏上的目标应用的图标时,即接收到打开该目标应用的指令。
步骤202,执行目标应用的目标字节码。
在本实施例中,基于步骤201中接收到目标应用的执行指令后,电子设备(例如图1所示的终端设备101)可以执行目标应用的目标字节码。其中,目标应用的目标字节码可以是从所连接的第一服务器预先接收的,并且目标应用的目标字节码可以是第一服务器通过在对该应用的代码编译所获取的字节码中的至少一个函数中添加条件分支语句所生成的。
在本实施例中,第一服务器可以将目标应用的代码编译成目标应用的字节码,其中,目标应用的字节码可以是一种包含执行程序,由一序列op代码/数据对组成的二进制文件。作为示例,在目标应用的代码是java代码的情况下,第一服务器可以通过javac编译器将目标应用的代码编译成目标应用的字节码。
在本实施例中,第一服务器还可以在目标应用的字节码中的至少一个函数中添加条件分支语句,以生成目标应用的目标字节码。其中,条件分支语句可以是if语句,并插入在函数的起始位置。作为示例,在目标应用的代码是java代码的情况下,第一服务器可以是利用javassist(一个开源的分析、编辑和创建java字节码的类库)在目标应用的字节码中的至少一个函数中添加条件分支语句。
在本实施例中,第一服务器还可以将目标应用的目标字节码打包在该目标应用的安装包中发送给电子设备。电子设备运行该安装包,以完成对该目标应用的安装。当安装有该目标应用的电子设备接收到该目标应用的执行指令时,就会运行该目标应用的目标字节码。
步骤203,对于至少一个函数中的每一个函数,确定该函数中的条件分支语句中的条件是否成立,响应于确定该函数中的条件分支语句中的条件成立,执行预先生成的补丁中与该函数对应的已修复的函数。
在本实施例中,在该目标应用的目标字节码的执行过程中,对于没有被添加条件分支语句中的每一个函数,电子设备(例如图1所示的终端设备101)可以直接执行该函数;对于被添加条件分支语句的每一个函数,电子设备(例如图1所示的终端设备101)需要首先确定该函数中的条件分支语句中的条件是否成立,如果条件分支语句中的条件成立,则执行电子设备预先接收的补丁中与该函数对应的已修复的函数。作为示例,在目标应用的目标字节码中的所有函数中都被在函数的起始位置添加了if语句,并且补丁已经被电子设备接收的情况下,电子设备在执行该目标应用的目标字节码的过程中,对于该目标应用的目标字节码中的每一个函数,电子设备都需要首先确定if语句中的条件是否成立,若成立,则执行补丁中与该函数对应的已修复的函数,若不成立,则执行else后面的该函数的函数体。
步骤204,呈现目标应用的目标字节码的执行结果。
在本实施例中,在该目标应用的目标字节码执行完成的情况下,电子设备(例如图1所示的终端设备101)的屏幕上呈现出相应的执行结果。作为示例,在目标应用是是网页浏览器应用的情况下,用户在输入框输入“无人驾驶汽车”,然后点击搜索按钮后,电子设备执行网页浏览器应用的目标字节码,在执行网页浏览器应用的目标字节码过程中,对相应的漏洞进行修复,对于漏洞的修复过程,用户是无感的,待网页浏览器应用的目标字节码执行完成,电子设备的屏幕上就显示出与“无人驾驶汽车”相关的网页信息。
本申请的实施例提供的方法,当接收到目标应用的执行指令时,执行目标应用的目标字节码;在执行目标应用的目标字节码的过程中,对于目标应用的目标字节码中被添加条件分支语句的函数,首先确定该函数中的条件分支语句中的条件是否成立;若成立,则执行预先生成的补丁中与该函数对应的已修复的函数;然后在目标应用的目标字节码执行完成后,呈现目标应用的目标字节码的执行结果,从而实现了在用户无感的情况下对应用快速地修复。
进一步参考图3,其示出了用于修复应用的方法的又一个实施例的流程300。该用于修复应用的方法的流程300,包括以下步骤:
步骤301,从所连接的第二服务器接收预先生成的补丁文件。
在本实施例中,用于修复应用的方法运行于其上的电子设备(例如图1所示的终端设备101)可以通过有线连接方式或者无线连接方式从第二服务器接收预先生成的补丁文件。其中,预先生成的补丁文件可以是第二服务器通过如下步骤生成的:
步骤一,对应用的代码中的待修复的类进行修复,以获取已修复的类。
在本实施例中,应用发布后,经常会被发现存在各种漏洞,为了修复漏洞,第二服务器可以定位应用的代码中的待修复的类,并对待修复的类进行修复。其中,应用可以包括目标应用。
步骤二,对已修复的类进行编译,以获取已修复的类的字节码。
在本实施例中,第二服务器可以将已修复的类编译成已修复的类的字节码。作为示例,在应用的代码是java代码的情况下,第二服务器可以通过javac编译器将已修复的类编译成已修复的类的字节码,并对已修复的类以原类名加上“_”重新命名。
步骤三,对已修复的类的字节码进行优化,以生成补丁。
在本实施例中,第二服务器可以对已修复的类的字节码进行优化,以生成补丁。其中,补丁可以是用于对应用中的漏洞进行修复的小程序。作为示例,在电子设备是安卓设备的情况下,电子设备(例如图1所示的终端设备101)不直接运行二进制文件格式的文件,而是运行dex文件格式的文件。因此,第二服务器需要通过优化工具将已修复的类的字节码转换为dex文件格式的补丁。
步骤四,将应用的代码中的待修复的类中的函数的信息写入配置文件中。
在本实施例中,第二服务器还可以将应用的代码中的待修复的类中的函数的信息写入配置文件中。其中,函数的信息可以包括但不限于以下至少一项:函数所归属的应用的应用名、函数所归属的类的类名、函数名等。配置文件可以是XML(Extensible MarkupLanguage,可扩展标记语言)文件。
步骤五,将补丁和配置文件打包成补丁文件。
在本实施例中,第二服务器还可以将补丁和配置文件打包成补丁文件。作为示例,第二服务器可以将补丁和配置文件打包成一个jar文件格式的压缩包,该压缩包即为补丁文件。
步骤302,读取配置文件中的函数的信息,从补丁中获取与配置文件中的函数的信息对应的已修复的函数,并存储在预设存储路径下。
在本实施例中,基于步骤301中接收到预先生成的补丁文件之后,电子设备(例如图1所示的终端设备101)首先可以读取配置文件中的函数的信息,然后从补丁中获取与配置文件中的函数的信息对应的已修复的函数,最后将其存储在预设的存储路径下。其中,预设存储路径可以是预先设置的电子设备的内存中用于存储该目标应用的补丁的存储位置的路径,也可以是PatchClassLoader(补丁加载器)中用于存储该目标应用的补丁的存储位置的路径。作为示例,电子设备可以首先读取出配置文件中的函数的信息为:“函数所归属的应用的应用名:app1、函数所归属的类的类名:class1、函数名:fun”,则补丁中与该函数信息对应的已修复的函数的信息可以为“函数所归属的应用的应用名:app1、函数所归属的类的类名:class1_、函数名:fun”,然后从补丁中获取“函数所归属的应用的应用名:app1、函数所归属的类的类名:class1_、函数名:fun”所指示的函数,并将该函数存储在预设存储路径下。
步骤303,接收目标应用的执行指令。
在本实施例中,用于修复应用的方法运行于其上的电子设备(例如图1所示的终端设备101)可以接收目标应用的执行指令。
步骤304,执行目标应用的目标字节码。
在本实施例中,基于步骤303中接收到目标应用的执行指令后,电子设备(例如图1所示的终端设备101)可以执行目标应用的目标字节码。其中,目标应用的目标字节码可以是从所连接的第一服务器预先接收的,并且目标应用的目标字节码可以是第一服务器通过在对该应用的代码编译所获取的字节码中的至少一个函数中添加条件分支语句所生成的。
步骤305,对于至少一个函数中的每一个函数,将该函数的信息与配置文件中的函数的信息进行匹配,若匹配成功,确定该函数中的条件分支语句中的条件成立,执行预设存储路径下与匹配成功的配置文件中的函数的信息对应的已修复的函数。
在本实施例中,在该目标应用的目标字节码的执行过程中,对于没有被添加条件分支语句中的每一个函数,电子设备(例如图1所示的终端设备101)可以直接执行该函数;对于被添加条件分支语句的每一个函数,电子设备(例如图1所示的终端设备101)可以首先将该函数的信息与配置文件中的函数的信息进行比较,若配置文件中存在与该函数的信息一致的函数的信息,则条件分支语句中的条件成立,并执行预设存储路径下与匹配成功的配置文件中的函数的信息对应的已修复的函数。作为示例,在目标应用的目标字节码中的函数A被在其起始位置添加了if语句,并且与配置文件中的函数的信息对应的已修复的函数已经存储在预设存储路径下的情况下,电子设备在执行函数A的过程中,需要首先获取函数A的信息:“函数A所归属的应用的应用名:app1、函数A所归属的类的类名:class1、函数名:fun”,并将“函数A所归属的应用的应用名:app1、函数A所归属的类的类名:class1、函数名:fun”与配置文件中的函数的信息进行比较,若配置文件中存在“函数所归属的应用的应用名:app1、函数所归属的类的类名:class1、函数名:fun”,则预设存储路径下存在与函数A对应的已修复的函数,并执行预设存储路径下的与函数A对应的已修复的函数。
步骤306,呈现目标应用的目标字节码的执行结果。
在本实施例中,在该目标应用的目标字节码执行完成的情况下,电子设备(例如图1所示的终端设备101)的屏幕上呈现出相应的执行结果。作为示例,在目标应用是是网页浏览器应用的情况下,用户在输入框输入“智能机器人”,然后点击搜索按钮后,电子设备执行网页浏览器应用的目标字节码,在执行网页浏览器应用的目标字节码过程中,对相应的漏洞进行修复,对于漏洞的修复过程,用户是无感的,待网页浏览器应用的目标字节码执行完成,电子设备的屏幕上就显示出与“智能机器人”相关的网页信息。
从图3中可以看出,与图2对应的实施例相比,本实施例中的用于修复应用的方法的流程300突出了对函数中的条件分支语句中的条件是否成立进行确定的步骤。由此,本实施例描述的方案可以通过将函数的信息与配置文件中的函数的信息进行匹配来确定条件分支语句中的条件是否成立,从而实现更方便地和准确地确定条件分支语句中的条件是否成立。
进一步参考图4,作为对各图所示方法的实现,本申请提供了一种用于修复应用的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例的用于修复应用的装置400包括:指令接收单元401,配置用于接收目标应用的执行指令;目标字节码执行单元402,配置用于执行目标应用的目标字节码,其中,目标应用的目标字节码是从所连接的第一服务器预先接收的,并且目标应用的目标字节码是第一服务器通过在对目标应用的代码编译所获取的字节码中的至少一个函数中添加条件分支语句所生成的;函数执行单元403,配置用于对于至少一个函数中的每一个函数,确定该函数中的条件分支语句中的条件是否成立,并且响应于确定该函数中的条件分支语句中的条件成立,执行预先生成的补丁中与该函数对应的已修复的函数;结果呈现单元404,配置用于呈现目标应用的目标字节码的执行结果。
在本实施例中,用于修复应用的装置400中:指令接收单元401、目标字节码执行单元402、函数执行单元403和结果呈现单元404的具体处理及其带来的有益效果可参看图2对应实施例中的步骤201、步骤202、步骤203和步骤204的实现方式的相关描述,在此不再赘述。
在本实施例的一些可选的实现方式中,该装置还包括:补丁文件接收单元,配置用于从所连接的第二服务器接收预先生成的补丁文件,其中,预先生成的补丁文件是第二服务器通过如下步骤生成的:对应用的代码中的待修复的类进行修复,以获取已修复的类;对已修复的类进行编译,以获取已修复的类的字节码;对已修复的类的字节码进行优化,以生成补丁;将应用的代码中的待修复的类中的函数的信息写入配置文件中将补丁和配置文件打包成补丁文件。
在本实施例的一些可选的实现方式中,该装置还包括:函数存储单元,配置用于读取配置文件中的函数的信息,从补丁中获取与配置文件中的函数的信息对应的已修复的函数,并存储在预设存储路径下。
在本实施例的一些可选的实现方式中,函数执行单元403进一步配置用于:将该函数的信息与配置文件中的函数的信息进行匹配,若匹配成功,确定该函数中的条件分支语句中的条件成立。
在本实施例的一些可选的实现方式中,函数执行单元403进一步配置用于:执行预设存储路径下与匹配成功的配置文件中的函数的信息对应的已修复的函数。
下面参考图5,其示出了适于用来实现本申请实施例的终端设备的计算机系统500的结构示意图。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括指令接收单元、目标字节码执行单元、函数执行单元和结果呈现单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,指令接收单元还可以被描述为“接收应用的执行指令的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当一个或者多个程序被一个设备执行时,使得设备:接收目标应用的执行指令;执行目标应用的目标字节码,其中,目标应用的目标字节码是从所连接的第一服务器预先接收的,并且目标应用的目标字节码是第一服务器通过在对目标应用的代码编译所获取的字节码中的至少一个函数中添加条件分支语句所生成的;对于至少一个函数中的每一个函数,确定该函数中的条件分支语句中的条件是否成立,并且响应于确定该函数中的条件分支语句中的条件成立,执行预先生成的补丁中与该函数对应的已修复的函数;呈现目标应用的目标字节码的执行结果。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种用于修复应用的方法,其特征在于,所述方法包括:
接收目标应用的执行指令;
执行所述目标应用的目标字节码,其中,所述目标应用的目标字节码是从所连接的第一服务器预先接收的,并且所述目标应用的目标字节码是第一服务器通过在对所述目标应用的代码编译所获取的字节码中的至少一个函数中添加条件分支语句所生成的;
对于所述至少一个函数中的每一个函数,确定该函数中的条件分支语句中的条件是否成立,并且响应于确定该函数中的条件分支语句中的条件成立,执行预先生成的补丁中与该函数对应的已修复的函数;
呈现所述目标应用的目标字节码的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述接收目标应用的执行指令之前,还包括:
从所连接的第二服务器接收预先生成的补丁文件,其中,所述预先生成的补丁文件是所述第二服务器通过如下步骤生成的:
对应用的代码中的待修复的类进行修复,以获取已修复的类;
对所述已修复的类进行编译,以获取所述已修复的类的字节码;
对所述已修复的类的字节码进行优化,以生成补丁;
将所述应用的代码中的待修复的类中的函数的信息写入配置文件中;
将所述补丁和所述配置文件打包成所述补丁文件。
3.根据权利要求2所述的方法,其特征在于,所述从所连接的第二服务器接收预先生成的补丁文件之后,还包括:
读取所述配置文件中的函数的信息,从所述补丁中获取与所述配置文件中的函数的信息对应的已修复的函数,并存储在预设存储路径下。
4.根据权利要求3所述的方法,其特征在于,所述确定该函数中的条件分支语句中的条件是否成立,包括:
将该函数的信息与所述配置文件中的函数的信息进行匹配,若匹配成功,确定该函数中的条件分支语句中的条件成立。
5.根据权利要求4所述的方法,其特征在于,所述执行预先生成的补丁中与该函数对应的已修复的函数,包括:
执行所述预设存储路径下与匹配成功的所述配置文件中的函数的信息对应的已修复的函数。
6.一种用于修复应用的装置,其特征在于,所述装置包括:
指令接收单元,配置用于接收目标应用的执行指令;
目标字节码执行单元,配置用于执行所述目标应用的目标字节码,其中,所述目标应用的目标字节码是从所连接的第一服务器预先接收的,并且所述目标应用的目标字节码是第一服务器通过在对所述目标应用的代码编译所获取的字节码中的至少一个函数中添加条件分支语句所生成的;
函数执行单元,配置用于对于所述至少一个函数中的每一个函数,确定该函数中的条件分支语句中的条件是否成立,并且响应于确定该函数中的条件分支语句中的条件成立,执行预先生成的补丁中与该函数对应的已修复的函数;
结果呈现单元,配置用于呈现所述目标应用的目标字节码的执行结果。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
补丁文件接收单元,配置用于从所连接的第二服务器接收预先生成的补丁文件,其中,所述预先生成的补丁文件是所述第二服务器通过如下步骤生成的:
对应用的代码中的待修复的类进行修复,以获取已修复的类;
对所述已修复的类进行编译,以获取所述已修复的类的字节码;
对所述已修复的类的字节码进行优化,以生成补丁;
将所述应用的代码中的待修复的类中的函数的信息写入配置文件中;
将所述补丁和所述配置文件打包成所述补丁文件。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
函数存储单元,配置用于读取所述配置文件中的函数的信息,从所述补丁中获取与所述配置文件中的函数的信息对应的已修复的函数,并存储在预设存储路径下。
9.根据权利要求8所述的装置,其特征在于,所述函数执行单元进一步配置用于:
将该函数的信息与所述配置文件中的函数的信息进行匹配,若匹配成功,确定该函数中的条件分支语句中的条件成立。
10.根据权利要求9所述的装置,其特征在于,所述函数执行单元进一步配置用于:
执行所述预设存储路径下与匹配成功的所述配置文件中的函数的信息对应的已修复的函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611047097.7A CN108089870B (zh) | 2016-11-21 | 2016-11-21 | 用于修复应用的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611047097.7A CN108089870B (zh) | 2016-11-21 | 2016-11-21 | 用于修复应用的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108089870A true CN108089870A (zh) | 2018-05-29 |
CN108089870B CN108089870B (zh) | 2022-01-21 |
Family
ID=62171144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611047097.7A Active CN108089870B (zh) | 2016-11-21 | 2016-11-21 | 用于修复应用的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108089870B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109508249A (zh) * | 2018-11-15 | 2019-03-22 | 厦门美图之家科技有限公司 | 崩溃处理方法、装置及电子设备 |
CN110609687A (zh) * | 2019-04-12 | 2019-12-24 | 北京字节跳动网络技术有限公司 | 一种编译方法、装置、电子设备和存储介质 |
CN111506904A (zh) * | 2020-04-21 | 2020-08-07 | 北京同邦卓益科技有限公司 | 漏洞在线修复的方法和装置 |
WO2023169164A1 (zh) * | 2022-03-10 | 2023-09-14 | 北京字节跳动网络技术有限公司 | 应用程序的修复方法、装置、计算机设备以及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070074187A1 (en) * | 2005-09-29 | 2007-03-29 | O'brien Thomas E | Method and apparatus for inserting code fixes into applications at runtime |
CN101339516A (zh) * | 2004-05-11 | 2009-01-07 | 微软公司 | 有效地打补丁 |
CN101561764A (zh) * | 2009-05-18 | 2009-10-21 | 华为技术有限公司 | 一种多核环境下的补丁方法与补丁装置 |
CN102799500A (zh) * | 2012-06-25 | 2012-11-28 | 腾讯科技(深圳)有限公司 | 系统修复方法、装置及存储介质 |
CN105487885A (zh) * | 2015-11-23 | 2016-04-13 | 盛趣信息技术(上海)有限公司 | 手游热更新方法 |
CN105824623A (zh) * | 2016-03-14 | 2016-08-03 | 广州趣丸网络科技有限公司 | 一种Android应用热修复的方法和装置 |
CN106020873A (zh) * | 2016-05-13 | 2016-10-12 | 腾讯科技(深圳)有限公司 | 补丁包加载方法及装置 |
CN106095502A (zh) * | 2016-06-13 | 2016-11-09 | 北京奇虎科技有限公司 | 一种安卓应用的热修复方法、装置、服务器和系统 |
-
2016
- 2016-11-21 CN CN201611047097.7A patent/CN108089870B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339516A (zh) * | 2004-05-11 | 2009-01-07 | 微软公司 | 有效地打补丁 |
US20070074187A1 (en) * | 2005-09-29 | 2007-03-29 | O'brien Thomas E | Method and apparatus for inserting code fixes into applications at runtime |
CN101561764A (zh) * | 2009-05-18 | 2009-10-21 | 华为技术有限公司 | 一种多核环境下的补丁方法与补丁装置 |
CN102799500A (zh) * | 2012-06-25 | 2012-11-28 | 腾讯科技(深圳)有限公司 | 系统修复方法、装置及存储介质 |
CN105487885A (zh) * | 2015-11-23 | 2016-04-13 | 盛趣信息技术(上海)有限公司 | 手游热更新方法 |
CN105824623A (zh) * | 2016-03-14 | 2016-08-03 | 广州趣丸网络科技有限公司 | 一种Android应用热修复的方法和装置 |
CN106020873A (zh) * | 2016-05-13 | 2016-10-12 | 腾讯科技(深圳)有限公司 | 补丁包加载方法及装置 |
CN106095502A (zh) * | 2016-06-13 | 2016-11-09 | 北京奇虎科技有限公司 | 一种安卓应用的热修复方法、装置、服务器和系统 |
Non-Patent Citations (2)
Title |
---|
MATHIAS PAYER 等: ""Hot-patching a web server: A case study of ASAP code repair"", 《2013 ELEVENTH ANNUAL CONFERENCE ON PRIVACY, SECURITY AND TRUST》 * |
程友清: ""嵌入式网络设备软件热补丁技术研究"", 《微电子学与计算机》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109508249A (zh) * | 2018-11-15 | 2019-03-22 | 厦门美图之家科技有限公司 | 崩溃处理方法、装置及电子设备 |
CN109508249B (zh) * | 2018-11-15 | 2022-05-31 | 厦门美图之家科技有限公司 | 崩溃处理方法、装置及电子设备 |
CN110609687A (zh) * | 2019-04-12 | 2019-12-24 | 北京字节跳动网络技术有限公司 | 一种编译方法、装置、电子设备和存储介质 |
CN111506904A (zh) * | 2020-04-21 | 2020-08-07 | 北京同邦卓益科技有限公司 | 漏洞在线修复的方法和装置 |
CN111506904B (zh) * | 2020-04-21 | 2024-01-12 | 北京同邦卓益科技有限公司 | 漏洞在线修复的方法和装置 |
WO2023169164A1 (zh) * | 2022-03-10 | 2023-09-14 | 北京字节跳动网络技术有限公司 | 应用程序的修复方法、装置、计算机设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108089870B (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106598667B (zh) | 用于修复内核漏洞的方法和装置 | |
CN104395882A (zh) | 定制的表情符号项集的建立和上下文感知呈现 | |
CN105653933B (zh) | 插件加载方法及装置 | |
CN108089870A (zh) | 用于修复应用的方法和装置 | |
CN106796522A (zh) | 用于更新源代码文件的系统和方法 | |
CN106815031A (zh) | 内核模块加载方法和装置 | |
CN102707999A (zh) | 利用成功的问题解决的应用兼容性 | |
CN106919382A (zh) | 用于生成应用更新包的方法和装置 | |
US8607191B2 (en) | Automated discovery of programmatic resources | |
CN107451474A (zh) | 用于终端的软件漏洞修复方法和装置 | |
CN108958992A (zh) | 测试方法和装置 | |
CN107797820A (zh) | 用于生成补丁的方法和装置 | |
CN106896937A (zh) | 用于输入信息的方法和装置 | |
CN109582873A (zh) | 用于推送信息的方法和装置 | |
CN112148278A (zh) | 可视化的区块链智能合约框架及智能合约开发部署方法 | |
CN108845839A (zh) | 应用页面加载方法、装置及计算机可读存储介质 | |
CN106897587A (zh) | 加固应用、加载加固应用的方法和装置 | |
CN103443791A (zh) | 信息处理装置和方法以及程序 | |
CN107463406A (zh) | 发布移动应用的方法和电子设备 | |
CN105138351A (zh) | 一种为宿主配置插件包的方法与装置 | |
CN109739526A (zh) | 代码更新方法和装置 | |
CN108804175A (zh) | 多语言适配方法、移动终端及计算机可读存储介质 | |
CN110659210A (zh) | 一种信息获取方法、装置、电子设备及存储介质 | |
CN109582317A (zh) | 用于调试寄宿应用的方法和装置 | |
CN107977305B (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 |