漏洞自动修复方法及移动终端与流程

文档序号:13282759阅读:468来源:国知局
本发明涉及移动终端
技术领域
:,尤其涉及一种漏洞自动修复方法及移动终端。
背景技术
::当应用程序(application,app)发布之后,若突然发现了一个严重漏洞(bug)需要进行紧急修复,常规的做法通常是:将app进行漏洞修复后重新打包app、测试、向各个应用市场和渠道更换app包、提示用户升级、用户下载、覆盖安装,其修复过程经历了非常多的环节。上述漏洞修复方法,即使解决该bug所修改的代码量很小,也要付出巨大的成本进行换包和重新发布;且发布已修复bug的升级app后,用户也不一定会马上升级到新版本的app,从而造成不好的用户体验。然而,上述方法需要用户手动升级,为了解决该问题,目前市场上出现了一些热修复技术,即可以在不升级app版本的情况下,通过预先在应用中埋设修复逻辑,自动来下载补丁包并修复bug。但热修复方式存在以下约束条件:(1)当客户端出现严重问题时,需要从论坛反馈或者后台bug系统中才能知道是否有急需解决的bug;(2)发现bug后需要开发人员手动修改bug,然后打包编译,生成补丁包,上传后台补丁包管理系统,然后推送到用户手机app中来修复bug,这些过程仍然需要人工干预,当问题很严重时,会造成用户的大量流失,且人工修复在一定程度上会延长漏洞修复周期。因此,有必要提供一种漏洞自动修复方法及移动终端来解决上述技术问题。技术实现要素:本发明的主要目的在于提出一种漏洞自动修复方法及移动终端,旨在解决漏洞修复过程中需要人工操作,浪费人力,漏洞修复周期长、用户体验差的技术问题。首先,为实现上述目的,本发明提供一种移动终端,所述移动终端包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的漏洞自动修复程序,所述漏洞自动修复程序被所述处理器执行时实现如下步骤:应用程序运行过程中检测所述应用程序存在的漏洞;将所述漏洞上传至服务器,以使所述服务器判断所述漏洞的类型、将类型为可自动修复的漏洞进行自动修复以产生相应的补丁包并将所述补丁包下发至所述应用程序;接收所述服务器下发的所述补丁包并根据所述补丁包对所述应用程序进行修复。可选地,所述判断所述漏洞的类型的步骤之后,所述处理器还用于执行所述漏洞自动修复程序,以实现如下步骤:获取类型为可自动修复的漏洞中各所述漏洞的优先权重;将优先权重高于预设权重的所述漏洞进行自动修复。可选地,所述处理器还用于执行所述漏洞自动修复程序,以实现如下步骤:获取所述漏洞的属性,所述属性包括方法级别和类级别;通过预存储的andfix热修复方法对方法级别的、优先权重高于预设权重的所述漏洞进行自动修复;通过预存储的multidex热修复方法对类级别的、优先权重高于预设权重的所述漏洞进行自动修复。可选地,所述根据所述补丁包对所述应用程序进行修复的步骤之前,所述处理器还用于执行所述漏洞自动修复程序,以实现如下步骤:为所述补丁包关联标签信息,所述标签信息包括所述补丁包对应的所述应用程序的版本信息以及补丁信息;判断所述补丁包是否有效,并在所述补丁包有效时执行所述根据所述补丁包对所述应用程序进行修复的步骤。同时,本发明还提供一种漏洞自动修复方法,应用于移动终端,所述漏洞自动修复方法包括以下步骤:应用程序运行过程中检测所述应用程序存在的漏洞;将所述漏洞上传至服务器,以使所述服务器判断所述漏洞的类型、将类型为可自动修复的漏洞进行自动修复以产生相应的补丁包并将所述补丁包下发至所述应用程序;接收所述服务器下发的所述补丁包并根据所述补丁包对所述应用程序进行修复。可选地,所述判断所述漏洞的类型的步骤之后还包括:获取类型为可自动修复的漏洞中各所述漏洞的优先权重;将优先权重高于预设权重的所述漏洞进行自动修复。可选地,所述将类型为可自动修复且优先权重高于预设权重的所述漏洞进行自动修复的步骤包括:获取所述漏洞的属性,所述属性包括方法级别和类级别;通过预存储的andfix热修复方法对方法级别的、优先权重高于预设权重的所述漏洞进行自动修复;通过预存储的multidex热修复方法对类级别的、优先权重高于预设权重的所述漏洞进行自动修复。可选地,所述将所述补丁包下发至所述应用程序的步骤之前还包括:为所述补丁包关联标签信息,所述标签信息包括所述补丁包对应的所述应用程序的版本信息以及补丁信息。可选地,所述根据所述补丁包对所述应用程序进行修复的步骤之前还包括:判断所述补丁包是否有效;若所述补丁包有效,则执行所述根据所述补丁包对所述应用程序进行修复的步骤。此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有漏洞自动修复程序,所述漏洞自动修复程序被处理器执行时实现如上述漏洞自动修复方法的步骤。相较于现有技术,本发明所提出的漏洞自动修复方法、移动终端及计算机可读存储介质,在应用程序运行过程中检测所述应用程序存在的漏洞,将所述漏洞上传至服务器,以使所述服务器判断所述漏洞的类型、将类型为可自动修复的漏洞进行自动修复以产生相应的补丁包并将所述补丁包下发至所述应用程序,最后应用程序接收所述服务器下发的所述补丁包并根据所述补丁包对所述应用程序进行修复,从而实现了自动对漏洞进行分类,并对类型为可自动修复的漏洞进行自动修复,整个过程无需人工操作,节省了人力资源,同时缩短了漏洞修复周期,用户体验较好。附图说明图1为实现本发明各个实施例一可选的移动终端的硬件结构示意图;图2为本发明实施例提供的一种通信网络系统架构图;图3为本发明漏洞自动修复程序第一实施例的功能模块示意图;图4为本发明漏洞自动修复程序第二实施例的功能模块示意图;图5为本发明漏洞自动修复方法第一实施例的实施流程示意图;图6为本发明漏洞自动修复方法第二实施例的实施流程示意图;图7为移动终端与服务器进行交互自动修复漏洞时一实施例的示意图;图8为空指针异常修复前后的部分代码对比示意图。附图标记:本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字tv、台式计算机等固定终端。后续描述中将以移动终端为例进行说明,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。请参阅图1,其为实现本发明各个实施例的一种移动终端的硬件结构示意图,该移动终端100可以包括:rf(radiofrequency,射频)单元101、wifi模块102、音频输出单元103、a/v(音频/视频)输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、处理器110、以及电源111等部件。本领域技术人员可以理解,图1中示出的移动终端结构并不构成对移动终端的限定,移动终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。下面结合图1对移动终端的各个部件进行具体的介绍:射频单元101可用于收发信息或通话过程中,信号的接收和发送,具体的,将基站的下行信息接收后,给处理器110处理;另外,将上行的数据发送给基站。通常,射频单元101包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元101还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于gsm(globalsystemofmobilecommunication,全球移动通讯系统)、gprs(generalpacketradioservice,通用分组无线服务)、cdma2000(codedivisionmultipleaccess2000,码分多址2000)、wcdma(widebandcodedivisionmultipleaccess,宽带码分多址)、td-scdma(timedivision-synchronouscodedivisionmultipleaccess,时分同步码分多址)、fdd-lte(frequencydivisionduplexing-longtermevolution,频分双工长期演进)和tdd-lte(timedivisionduplexing-longtermevolution,分时双工长期演进)等。wifi属于短距离无线传输技术,移动终端通过wifi模块102可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图1示出了wifi模块102,但是可以理解的是,其并不属于移动终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。音频输出单元103可以在移动终端100处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将射频单元101或wifi模块102接收的或者在存储器109中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元103还可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元103可以包括扬声器、蜂鸣器等等。a/v输入单元104用于接收音频或视频信号。a/v输入单元104可以包括图形处理器(graphicsprocessingunit,gpu)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元106上。经图形处理器1041处理后的图像帧可以存储在存储器109(或其它存储介质)中或者经由射频单元101或wifi模块102进行发送。麦克风1042可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风1042接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由射频单元101发送到移动通信基站的格式输出。麦克风1042可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。移动终端100还包括至少一种传感器105,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1061的亮度,接近传感器可在移动终端100移动到耳边时,关闭显示面板1061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。显示单元106用于显示由用户输入的信息或提供给用户的信息。显示单元106可包括显示面板1061,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板1061。用户输入单元107可用于接收输入的数字或字符信息,以及产生与移动终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元107可包括触控面板1071以及其他输入设备1072。触控面板1071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1071上或在触控面板1071附近的操作),并根据预先设定的程式驱动相应的连接装置。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器110,并能接收处理器110发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1071。除了触控面板1071,用户输入单元107还可以包括其他输入设备1072。具体地,其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种,具体此处不做限定。进一步的,触控面板1071可覆盖显示面板1061,当触控面板1071检测到在其上或附近的触摸操作后,传送给处理器110以确定触摸事件的类型,随后处理器110根据触摸事件的类型在显示面板1061上提供相应的视觉输出。虽然在图1中,触控面板1071与显示面板1061是作为两个独立的部件来实现移动终端的输入和输出功能,但是在某些实施例中,可以将触控面板1071与显示面板1061集成而实现移动终端的输入和输出功能,具体此处不做限定。接口单元108用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(i/o)端口、视频i/o端口、耳机端口等等。接口单元108可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端100和外部装置之间传输数据。存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器109可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器110是移动终端的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器109内的软件程序和/或模块,以及调用存储在存储器109内的数据,执行移动终端的各种功能和处理数据,从而对移动终端进行整体监控。处理器110可包括一个或多个处理单元;优选的,处理器110可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。移动终端100还可以包括给各个部件供电的电源111(比如电池),优选的,电源111可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。尽管图1未示出,移动终端100还可以包括蓝牙模块等,在此不再赘述。为了便于理解本发明实施例,下面对本发明的移动终端所基于的通信网络系统进行描述。请参阅图2,图2为本发明实施例提供的一种通信网络系统架构图,该通信网络系统为通用移动通信技术的lte系统,该lte系统包括依次通讯连接的ue(userequipment,用户设备)201,e-utran(evolvedumtsterrestrialradioaccessnetwork,演进式umts陆地无线接入网)202,epc(evolvedpacketcore,演进式分组核心网)203和运营商的ip业务204。具体地,ue201可以是上述终端100,此处不再赘述。e-utran202包括enodeb2021和其它enodeb2022等。其中,enodeb2021可以通过回程(backhaul)(例如x2接口)与其它enodeb2022连接,enodeb2021连接到epc203,enodeb2021可以提供ue201到epc203的接入。epc203可以包括mme(mobilitymanagemententity,移动性管理实体)2031,hss(homesubscriberserver,归属用户服务器)2032,其它mme2033,sgw(servinggateway,服务网关)2034,pgw(pdngateway,分组数据网络网关)2035和pcrf(policyandchargingrulesfunction,政策和资费功能实体)2036等。其中,mme2031是处理ue201和epc203之间信令的控制节点,提供承载和连接管理。hss2032用于提供一些寄存器来管理诸如归属位置寄存器(图中未示)之类的功能,并且保存有一些有关服务特征、数据速率等用户专用的信息。所有用户数据都可以通过sgw2034进行发送,pgw2035可以提供ue201的ip地址分配以及其它功能,pcrf2036是业务数据流和ip承载资源的策略与计费控制策略决策点,它为策略与计费执行功能单元(图中未示)选择及提供可用的策略和计费控制决策。ip业务204可以包括因特网、内联网、ims(ipmultimediasubsystem,ip多媒体子系统)或其它ip业务等。虽然上述以lte系统为例进行了介绍,但本领域技术人员应当知晓,本发明不仅仅适用于lte系统,也可以适用于其他无线通信系统,例如gsm、cdma2000、wcdma、td-scdma以及未来新的网络系统等,此处不做限定。基于上述移动终端100硬件结构以及通信网络系统,提出本发明方法各个实施例。首先,本发明提出一种移动终端,所述移动终端包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的漏洞自动修复程序400。如图3所示,是本发明漏洞自动修复程序400第一实施例的功能模块示意图。在本实施例中,所述漏洞自动修复程序400可以被分割成一个或多个模块,所述一个或多个模块存储于所述移动终端100的存储器109中,并由一个或多个处理器(本实施例中为所述控制器110)所执行,以完成本发明。例如,在图3中,所述漏洞自动修复程序400可以被分割成检测模块401、上传模块402以及自动修复模块403。本发明所称的模块是指一种能够完成特定功能的一系列获取机程序指令段,比获取机程序更适合于描述软件在所述移动终端100中的执行过程。以下将就上述各功能模块401-403的具体功能进行详细描述。其中:所述检测模块401,用于在应用程序运行过程中检测所述应用程序存在的漏洞。其中,java中的异常分为运行时异常与非运行时异常,非运行时异常在写代码时会由程序开发人员手动捕获,因此不会造成应用程序的crash;而本发明主要针对应用程序的运行时异常进行处理。运行时异常通常包括:arithmeticexecption、nullpointerexception、classcastexception、negativearrayexception、arrayindexoutofboundsexception、secturityexception、eofexception、filenotfoundexception以及numberformatexception等,这些异常中的某些异常具有通用的处理方法,有通用处理办法的异常通常可以自动修复,而不具有通用处理方法的异常一般不可自动修复,此处异常即为漏洞(bug)。所述上传模块402,用于将所述漏洞上传至服务器,以使所述服务器判断所述漏洞的类型、将类型为可自动修复的漏洞进行自动修复以产生相应的补丁包并将所述补丁包下发至所述应用程序。本发明中,移动终端与服务器进行交互实现漏洞的自动修复,请参考图7,图7为移动终端与服务器进行交互自动修复漏洞时一实施例的示意图,如图7所示,服务器上设置有bug管理系统、补丁自动编译系统、补丁管理与分发系统,其中bug管理系统用于接收并存储移动终端(即客户端)上传的漏洞,然后判断漏洞的类型,本实施例中漏洞的类型包括可自动修复和不可自动修复,之后将可自动修复的漏洞上报给补丁自动编译系统。具体的,补丁自动编译系统中设置有自动化编译工具,该自动化编译工具对接收到的漏洞进行自动编译,生成对应的补丁包,并将补丁包上报给补丁管理与分发系统。补丁管理与分发系统负责将补丁包分发给移动终端上的应用程序。另外,需要说明的是,本发明中,服务器在编译得到相应的补丁包后会自动下发给对应的应用程序,而在其他实施例中,还可以是应用程序运行过程中主动向服务器查询是否有存在补丁包(patch),如果存在则自动下载。此外,本实施例中,补丁自动编译系统中的自动化编译工具包括andfix自动化编译工具和multidex自动化编译工具,其中andfix自动化编译工具采用andfix热修复方法对方法级别的漏洞进行自动修复,而multidex自动化编译工具采用multidex热修复方法对类级别的漏洞进行自动修复。其中,andfix热修复方法和multidex热修复方法是目前较常采用的两种热修复方法,andfix能够在不重启应用程序的情况下就修复存在的漏洞,但该技术只支持方法的修复,而无法修复涉及变量或者增删类的漏洞;而multidex能支持类方法、变量的改变,但是需要重启应用程序才能生效。当服务器接收到漏洞并进行修复时,会自动获取该漏洞的属性(即漏洞为方法级别或类级别)并选择合适的自动化编译工具进行修复。下面以漏洞为“空指针异常”为例说明经自动化编译工具修复后得到的部分代码。请参考图8,图8为“空指针异常”修复前后的代码对比示意图,图8中漏洞修复前代码存在空指针异常的问题,而该漏洞经自动化编译工具进行编译后得到的代码解决了空指针异常的问题。具体的,漏洞经自动化编译工具进行自动编译得到的补丁包中包括dex文件和json文件,dex文件中存储的是修复漏洞后的class文件信息,即图8所示代码信息;json文件信息如下:apppackagename:cn.nubia.neostoreappversionname:2.1.3.021520appversioncode:152patchtype:1其中,appversioncode是指应用程序主版本号,patchversioncode是指补丁包版本号,patchtype是指所采用的热修复技术类型,patchtype为0表示采用andfix热修复方法对漏洞进行修复,patchtype为1表示采用multidex热修复方法对漏洞进行修复。所述自动修复模块403,用于接收所述服务器下发的所述补丁包并根据所述补丁包对所述应用程序进行修复。具体的,当应用程序接收到补丁包后,会利用该补丁包对应用程序中的漏洞进行修复。利用补丁包进行修复之前,会先判断所述补丁包是否有效,若所述补丁包有效,则通过所述补丁包对所述应用程序进行修复,反之则不进行修复。其中,判断所述补丁包是否有效即判断该补丁包是否未被篡改也未被伪造,以保证补丁包的安全性,由于判断接收到的数据是否未被篡改或伪造为现有技术中非常成熟的技术,因此此处对其实现过程不进行详细描述。通过上述模块401-403,本发明漏洞自动修复程序在应用程序运行过程中检测所述应用程序存在的漏洞,将所述漏洞上传至服务器,以使所述服务器判断所述漏洞的类型、将类型为可自动修复的漏洞进行自动修复以产生相应的补丁包并将所述补丁包下发至所述应用程序,最后应用程序接收所述服务器下发的所述补丁包并根据所述补丁包对所述应用程序进行修复,从而实现了自动对漏洞进行分类,并对类型为可自动修复的漏洞进行自动修复,整个过程无需人工操作,节省了人力资源,同时缩短了漏洞修复周期,用户体验较好。进一步地,基于上述本发明漏洞自动修复程序400的第一实施例,提出本发明漏洞自动修复程序400的第二实施例。请参考图4,图4为本发明漏洞自动修复程序400第二实施例的功能模块示意图,与第一实施例相比,本实施例中,漏洞自动修复程序400还包括优先权重获取模块404、标签关联模块405以及有效性判断模块406。本实施例中,各功能模块的说明如下:所述优先权重获取模块404,用于获取类型为可自动修复的漏洞中各所述漏洞的优先权重,并将优先权重高于预设权重的所述漏洞进行自动修复。具体的,服务器接收到应用程序上报的漏洞后,bug管理系统首先判断漏洞的类型,即漏洞属于可自动修复漏洞还是不可自动修复漏洞,对于可自动修复的漏洞,根据预设方法获取该漏洞的优先权重,并判断其优先权重是否高于预设权重,当该漏洞的优先权重大于预设权重时,对该漏洞进行自动修复。本实施例中,根据预设方法获取漏洞的优先权重时,可以是根据漏洞在应用程序中所处的层级得到其对应的优先权重,如主页面的优先权重最大,设置为10,二级页面的优先权重设置为5,三级页面设置为2,四级页面设置为1等。该优先权重的设置原理是:应用程序中,主页面使用最多,当主页面出现漏洞时,很大程度上给用户带来不好的体验,而随着层级的加深,其页面出现的概率会相对较低,该页面上的漏洞被用户遇到的概率也会相对较低,从而该漏洞对用户的影响也较少,因此根据漏洞在应用程序中所处位置设置漏洞的优先权重是非常合理的。同时,本实施例中设置预设权重,在漏洞的优先权重高于该预设权重时,对其进行修复,反之暂不修复,实现了在有较多漏洞时,优先修复比较重要的漏洞,合理利用服务器的资源。此外,在其他实施例中,根据预设方法获取漏洞的优先权重还可以是根据漏洞的严重程度和漏洞在应用程序中所处的层级设置其对应的优先权重,即此时漏洞的优先权重与其严重程度和所处位置相关。其中,将类型为可自动修复且优先权重高于预设权重的所述漏洞进行自动修复的步骤包括:(1)获取所述漏洞的属性,所述属性包括方法级别和类级别;(2)通过预存储的andfix热修复方法对方法级别的、可自动修复且优先权重高于预设权重的所述漏洞进行自动修复;(3)通过预存储的multidex热修复方法对类级别的、可自动修复且优先权重高于预设权重的所述漏洞进行自动修复。本实施例中,补丁自动编译系统中的自动化编译工具包括andfix自动化编译工具和multidex自动化编译工具,其中andfix自动化编译工具采用andfix热修复方法对方法级别的漏洞进行自动修复,而multidex自动化编译工具采用multidex热修复方法对类级别的漏洞进行自动修复。其中,andfix热修复方法和multidex热修复方法是目前较常采用的两种热修复方法,andfix能够在不重启应用程序的情况下就修复存在的漏洞,但该技术只支持方法的修复,而无法修复涉及变量或者增删类的漏洞;而multidex能支持类方法、变量的改变,但是需要重启应用程序才能生效。当服务器接收到漏洞并进行修复时,会自动获取该漏洞的属性并选择合适的自动化编译工具进行修复。所述标签关联模块405,用于为所述补丁包关联标签信息,所述标签信息包括所述补丁包对应的所述应用程序的版本信息以及补丁信息。本实施例中,将漏洞上传至服务器的同时会将所述应用程序的版本信息上传至所述服务器,为此,在针对漏洞进行修复得到补丁包后,为了区分各个补丁包以确保服务器下发的补丁包是正确的,需要为该补丁包设置标签信息。优选的,标签信息包括所述补丁包对应的所述应用程序的版本信息以及补丁信息,其中应用程序的版本信息包括应用程序的版本名称、版本号、包名,补丁信息包括补丁包的版本名称、版本号以及补丁包类型,具体如表1所示:表1字段名必选数据类型描述appversionname是stringapp的版本名称appversioncode是stringapp的版本号patchversionname是string补丁包版本名称patchversioncode是string补丁包版本号packagename是stringapp的包名patchtype是int补丁包类型:andfix、multidex所述有效性判断模块406,用于判断所述补丁包是否有效,并在所述补丁包有效时执行所述根据所述补丁包对所述应用程序进行修复的步骤。具体的,当应用程序接收到补丁包后,会利用该补丁包对应用程序中的漏洞进行修复。利用补丁包进行修复之前,会先判断所述补丁包是否有效,若所述补丁包有效,则通过所述补丁包对所述应用程序进行修复,反之则不进行修复。其中,判断所述补丁包是否有效即判断该补丁包是否未被篡改也未被伪造,以保证补丁包的安全性,由于判断接收到的数据是否未被篡改或伪造为现有技术中非常成熟的技术,因此此处对其实现过程不进行详细描述。通过上述模块401-406,本发明所提出的漏洞自动修复程序实现了自动对漏洞进行分类,并对类型为可自动修复的漏洞进行自动修复,整个过程无需人工操作,节省了人力资源,同时缩短了漏洞修复周期,用户体验较好;同时,在服务器上设置andfix自动化编译工具和multidex自动化编译工具,实现了对方法级别的漏洞以及类级别的漏洞的自动修复;此外,为补丁包设置关联信息可以将补丁包与相应版本的应用程序关联起来,避免出现补丁包与应用程序不匹配的问题。此外,本发明提出一种漏洞自动修复方法,该漏洞自动修复方法应用于图1至图2所示移动终端,所述移动终端包括存储器和处理器。如图5所示,是本发明漏洞自动修复方法第一实施例的实施流程图。在本实施例中,根据不同的需求,图5所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。所述漏洞自动修复方法包括:步骤s501,应用程序运行过程中检测所述应用程序存在的漏洞。其中,java中的异常分为运行时异常与非运行时异常,非运行时异常在写代码时会由程序开发人员手动捕获,因此不会造成应用程序的crash;而本发明主要针对应用程序的运行时异常进行处理。运行时异常通常包括:arithmeticexecption、nullpointerexception、classcastexception、negativearrayexception、arrayindexoutofboundsexception、secturityexception、eofexception、filenotfoundexception以及numberformatexception等,这些异常中的某些异常具有通用的处理方法,有通用处理办法的异常通常可以自动修复,而不具有通用处理方法的异常一般不可自动修复,此处异常即为漏洞(bug)。步骤s502,将所述漏洞上传至服务器,以使所述服务器判断所述漏洞的类型、将类型为可自动修复的漏洞进行自动修复以产生相应的补丁包并将所述补丁包下发至所述应用程序。本发明中,移动终端与服务器进行交互实现漏洞的自动修复,请参考图7,图7为移动终端与服务器进行交互自动修复漏洞时一实施例的示意图,如图7所示,服务器上设置有bug管理系统、补丁自动编译系统、补丁管理与分发系统,其中bug管理系统用于接收并存储移动终端(即客户端)上传的漏洞,然后判断漏洞的类型,本实施例中漏洞的类型包括可自动修复和不可自动修复,之后将可自动修复的漏洞上报给补丁自动编译系统。具体的,补丁自动编译系统中设置有自动化编译工具,该自动化编译工具对接收到的漏洞进行自动编译,生成对应的补丁包,并将补丁包上报给补丁管理与分发系统。补丁管理与分发系统负责将补丁包分发给移动终端上的应用程序。另外,需要说明的是,本发明中,服务器在编译得到相应的补丁包后会自动下发给对应的应用程序,而在其他实施例中,还可以是应用程序运行过程中主动向服务器查询是否有存在补丁包(patch),如果存在则自动下载。此外,本实施例中,补丁自动编译系统中的自动化编译工具包括andfix自动化编译工具和multidex自动化编译工具,其中andfix自动化编译工具采用andfix热修复方法对方法级别的漏洞进行自动修复,而multidex自动化编译工具采用multidex热修复方法对类级别的漏洞进行自动修复。其中,andfix热修复方法和multidex热修复方法是目前较常采用的两种热修复方法,andfix能够在不重启应用程序的情况下就修复存在的漏洞,但该技术只支持方法的修复,而无法修复涉及变量或者增删类的漏洞;而multidex能支持类方法、变量的改变,但是需要重启应用程序才能生效。当服务器接收到漏洞并进行修复时,会自动获取该漏洞的属性(即漏洞为方法级别或类级别)并选择合适的自动化编译工具进行修复。下面以漏洞为“空指针异常”为例说明经自动化编译工具修复后得到的部分代码。请参考图8,图8为“空指针异常”修复前后的代码对比示意图,图8中漏洞修复前代码存在空指针异常的问题,而该漏洞经自动化编译工具进行编译后得到的代码解决了空指针异常的问题。具体的,漏洞经自动化编译工具进行自动编译得到的补丁包中包括dex文件和json文件,dex文件中存储的是修复漏洞后的class文件信息,即图8所示代码信息;json文件信息如下:apppackagename:cn.nubia.neostoreappversionname:2.1.3.021520appversioncode:152patchtype:1其中,appversioncode是指应用程序主版本号,patchversioncode是指补丁包版本号,patchtype是指所采用的热修复技术类型,patchtype为0表示采用andfix热修复方法对漏洞进行修复,patchtype为1表示采用multidex热修复方法对漏洞进行修复。步骤s503,接收所述服务器下发的所述补丁包并根据所述补丁包对所述应用程序进行修复。具体的,当应用程序接收到补丁包后,会利用该补丁包对应用程序中的漏洞进行修复。利用补丁包进行修复之前,会先判断所述补丁包是否有效,若所述补丁包有效,则通过所述补丁包对所述应用程序进行修复,反之则不进行修复。其中,判断所述补丁包是否有效即判断该补丁包是否未被篡改也未被伪造,以保证补丁包的安全性,由于判断接收到的数据是否未被篡改或伪造为现有技术中非常成熟的技术,因此此处对其实现过程不进行详细描述。通过上述步骤s501-s503,本发明漏洞自动修复方法在应用程序运行过程中检测所述应用程序存在的漏洞,将所述漏洞上传至服务器,以使所述服务器判断所述漏洞的类型、将类型为可自动修复的漏洞进行自动修复以产生相应的补丁包并将所述补丁包下发至所述应用程序,最后应用程序接收所述服务器下发的所述补丁包并根据所述补丁包对所述应用程序进行修复,从而实现了自动对漏洞进行分类,并对类型为可自动修复的漏洞进行自动修复,整个过程无需人工操作,节省了人力资源,同时缩短了漏洞修复周期,用户体验较好。进一步地,基于上述第一实施例,提出本发明漏洞自动修复方法的第二实施例。如图6所示,是本发明漏洞自动修复方法第二实施例的实施流程图。在本实施例中,根据不同的需求,图6所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。所述漏洞自动修复方法包括:步骤s601,应用程序运行过程中检测所述应用程序存在的漏洞。步骤s602,将所述漏洞上传至服务器,同时将所述应用程序的版本信息上传至所述服务器。由于与服务器端交互的客户端(移动终端)会有很多个,而各个客户端上存储有不同应用程序的不同版本或同一应用程序的不同版本,从而服务器会接收到不同版本应用程序上传的漏洞,为了进行区分,应用程序上报漏洞时会将应用程序的相关信息一起上报至服务器,该相关信息包括应用程序的版本信息,如app的版本名称、app的版本号以及app的包名等。步骤s603,服务器判断所述漏洞的类型、获取类型为可自动修复的漏洞中各所述漏洞的优先权重,将类型为可自动修复且优先权重高于预设权重的所述漏洞进行自动修复以产生相应的补丁包。具体的,服务器接收到应用程序上报的漏洞后,首先判断漏洞的类型,即漏洞属于可自动修复漏洞还是不可自动修复漏洞,对于可自动修复的漏洞,根据预设方法获取该漏洞的优先权重,并判断其优先权重是否高于预设权重,当该漏洞的优先权重大于预设权重时,对该漏洞进行自动修复。本实施例中,根据预设方法获取漏洞的优先权重时,可以是根据漏洞在应用程序中所处的层级得到其对应的优先权重,如主页面的优先权重最大,设置为10,二级页面的优先权重设置为5,三级页面设置为2,四级页面设置为1等。该优先权重的设置原理是:应用程序中,主页面使用最多,当主页面出现漏洞时,很大程度上给用户带来不好的体验,而随着层级的加深,其页面出现的概率会相对较低,该页面上的漏洞被用户遇到的概率也会相对较低,从而该漏洞对用户的影响也较少,因此根据漏洞在应用程序中所处位置设置漏洞的优先权重是非常合理的。同时,本实施例中设置预设权重,在漏洞的优先权重高于该预设权重时,对其进行修复,反之暂不修复,实现了在有较多漏洞时,优先修复比较重要的漏洞,合理利用服务器的资源。此外,在其他实施例中,根据预设方法获取漏洞的优先权重还可以是根据漏洞的严重程度和漏洞在应用程序中所处的层级设置其对应的优先权重,即此时漏洞的优先权重与其严重程度和所处位置相关。本实施例中,将类型为可自动修复且优先权重高于预设权重的所述漏洞进行自动修复的步骤包括:(1)获取所述漏洞的属性,所述属性包括方法级别和类级别;(2)通过预存储的andfix热修复方法对方法级别的、可自动修复且优先权重高于预设权重的所述漏洞进行自动修复;(3)通过预存储的multidex热修复方法对类级别的、可自动修复且优先权重高于预设权重的所述漏洞进行自动修复。本实施例中,补丁自动编译系统中的自动化编译工具包括andfix自动化编译工具和multidex自动化编译工具,其中andfix自动化编译工具采用andfix热修复方法对方法级别的漏洞进行自动修复,而multidex自动化编译工具采用multidex热修复方法对类级别的漏洞进行自动修复。其中,andfix热修复方法和multidex热修复方法是目前较常采用的两种热修复方法,andfix能够在不重启应用程序的情况下就修复存在的漏洞,但该技术只支持方法的修复,而无法修复涉及变量或者增删类的漏洞;而multidex能支持类方法、变量的改变,但是需要重启应用程序才能生效。当服务器接收到漏洞并进行修复时,会自动获取该漏洞的属性并选择合适的自动化编译工具进行修复。步骤s604,为所述补丁包关联标签信息,所述标签信息包括所述补丁包对应的所述应用程序的版本信息以及补丁信息。本实施例中,将漏洞上传至服务器的同时会将所述应用程序的版本信息上传至所述服务器,为此,在针对漏洞进行修复得到补丁包后,为了区分各个补丁包以确保服务器下发的补丁包是正确的,需要为该补丁包设置标签信息。优选的,标签信息包括所述补丁包对应的所述应用程序的版本信息以及补丁信息,其中应用程序的版本信息包括应用程序的版本名称、版本号、包名,补丁信息包括补丁包的版本名称、版本号以及补丁包类型,具体如表1所示:表1字段名必选数据类型描述appversionname是stringapp的版本名称appversioncode是stringapp的版本号patchversionname是string补丁包版本名称patchversioncode是string补丁包版本号packagename是stringapp的包名patchtype是int补丁包类型:andfix、multidex步骤s605,根据所述标签信息将所述补丁包下发至相应的所述应用程序。通过上述步骤s601至s605,本发明漏洞自动修复方法实现了自动对漏洞进行分类,并对类型为可自动修复的漏洞进行自动修复,整个过程无需人工操作,节省了人力资源,同时缩短了漏洞修复周期,用户体验较好;同时,在服务器上设置andfix自动化编译工具和multidex自动化编译工具,实现了对方法级别的漏洞以及类级别的漏洞的自动修复;此外,为补丁包设置关联信息可以将补丁包与相应版本的应用程序关联起来,避免出现补丁包与应用程序不匹配的问题。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1