一种代码漏洞的修复方法及设备技术

技术编号:26384868 阅读:16 留言:0更新日期:2020-11-19 23:54
本申请的目的是提供一种代码漏洞的修复方法及设备,本申请通过客户端响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,以请求应用服务器返回新的可执行聚合文件的下载地址和类信息发送给所述客户端;客户端基于下载地址下载新的可执行聚合文件,并基于类信息解析下载的新的可执行聚合文件得到文件顺序列表和至少一个解密后的可执行文件,并按照所述文件顺序列表的顺序,采用钩子技术加载至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞,提高了线上漏洞修复的即时性,不需要应用服务器重新发版,为更好的用户体验提供了技术支持,在提高用户体验的同时,增强了用户的留存度。

【技术实现步骤摘要】
一种代码漏洞的修复方法及设备
本申请涉及计算机领域,尤其涉及一种代码漏洞的修复方法及设备。
技术介绍
安卓系统版本众多,机型众多,每次发布一个版本都是需要较长的时间。安卓应用版本升级至少需要两周才能达到80%的升级率,严重阻碍了版本迭代速度。也导致市场上application(应用程序,APP)版本分散,处理漏洞(bug)和投诉等也越来越麻烦。现有技术中,APP发布新的版本的时候,如果发现线上bug,需要修改代码后,重新打包代码,然后再重新发布到市场,此种修复漏洞等问题的方式比较耗时,即时性较低,从而容易造成用户的流失。
技术实现思路
本申请的一个目的是提供一种代码漏洞的修复方法及设备,以在线上代码出现漏洞时,能够在不需要重新发版的情况下就可以修复线上的代码漏洞,从而提高线上漏洞的修复的响应即时性。根据本申请的一个方面,提供了一种代码漏洞的修复方法,应用于客户端,其中,所述方法包括:响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,所述网路请求包括所述至少一个类文件对应的可执行聚合文件的第一MD5值和所述应用程序的第一版本信息;接收所述应用服务器发送的新的可执行聚合文件的下载地址和类信息;基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件,得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件;按照所述文件顺序列表的顺序,采用钩子技术加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞。进一步地,上述客户端的代码漏洞的修复方法中,所述响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,包括:响应于检测到应用程序中存在漏洞的至少一个类文件,读取所述客户端保存的所述至少一个类文件对应的可执行聚合文件,并计算所述可执行聚合文件的第一MD5值;获取所述应用程序的第一版本信息;基于所述可执行聚合文件的第一MD5值和所述应用程序的第一版本信息,向所述应用服务器发送网路请求。进一步地,上述客户端的代码漏洞的修复方法中,所述基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件,得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件,包括:根据所述类信息中的更新状态确定所述可执行聚合文件需要更新;基于所述下载地址下载所述新的可执行聚合文件;根据所述类信息中的每个加密后的可执行文件的长度,从下载的所述新的可执行聚合文件中切分出至少一个所述加密后的可执行文件并确定所述文件顺序列表,其中,每个所述类文件对应一个所述加密后的可执行文件;根据预设的加解密密钥分别对每个所述加密后的可执行文件进行解密,得到至少一个所述解密后的可执行文件并保存,其中,每个所述类文件对应一个所述解密后的可执行文件。进一步地,上述客户端的代码漏洞的修复方法中,所述按照所述文件顺序列表的顺序,采用钩子技术加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞,包括:读取每个所述类文件对应的原有可执行文件的内存对象,得到所述至少一个原有可执行文件对应的原有内存对象数组,其中,每个所述类文件对应一个原有可执行文件;基于每个所述解密后的可执行文件的内存对象,构造所述至少一个解密后的可执行文件的自定义内存对象数组;基于所述原有内存对象数组和所述自定义内存对象数组,构建并确定目标数组;将所述目标数组替换所述应用程序中的所述原有内存对象数组;按照所述文件顺序列表的顺序,加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞。进一步地,上述客户端的代码漏洞的修复方法中,所述基于所述原有内存对象数组和所述自定义内存对象数组,构建并确定目标数组,包括:获取所述原有内存对象数组的原数组长度和所述自定义内存对象数组的自定义数组长度;基于所述原数组长度和所述自定义数组长度,对构建的目标数组进行初始化;将所述自定义内存对象数组拷贝至所述目标数组的前部,将所述原有内存对象数组拷贝至所述目标数组的后部,得到所述目标数组。根据本申请的另一个方面,还提供了一种代码漏洞的修复方法,应用于应用服务器端,其中,所述方法包括接收客户端发送的网路请求,所述网路请求包括应用程序的第一版本信息和所述应用程序中存在漏洞的至少一个类文件对应的可执行聚合文件的第一MD5值;基于所述第一版本信息和所述可执行聚合文件的第一MD5值,判断本地保存的所述可执行聚合文件是否更新;若是,则将新的可执行聚合文件的下载地址和类信息发送给所述客户端,以使所述客户端基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件,并按照所述文件顺序列表的顺序,采用钩子技术加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞。进一步地,上述应用服务端的代码漏洞的修复方法中,所述基于所述第一版本信息和所述可执行聚合文件的第一MD5值,判断本地保存的所述可执行聚合文件是否更新,包括:获取所述应用程序在本地的第二版本信息及所述第二版本信息对应的应用程序中的所述可执行聚合文件的第二MD5值;判断所述第一版本信息和所述第二版本信息是否一致,且所述可执行聚合文件的所述第一MD5值和所述第二MD5值是否一致。进一步地,上述应用服务端的代码漏洞的修复方法中,所述方法还包括:获取所述至少一个类文件中的每个所述类文件对应的可执行文件;根据预设的加解密密钥分别对每个所述可执行文件进行加密,得到至少一个加密后的可执行文件;按每个所述类文件在所述应用程序中的运行顺序,将所述至少一个加密后的可执行文件进行聚合处理,得到所述至少一个类文件对应的可执行聚合文件。进一步地,上述应用服务端的代码漏洞的修复方法中,所述获取所述至少一个类文件中的每个所述类文件对应的可执行文件,包括:从漏洞统计平台获取所述至少一个类文件中的每个所述类文件对应的可执行文件;其中,所述漏洞统计平台用于获取所述应用程序中存在漏洞的至少一个类文件,并将每个所述类文件打包成对应的可执行文件。根据本申请的另一个方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述代码漏洞的修复方法。根据本申请的另一个方面,还提供了一种客户端,其中,该客户端包括:一个或多个处理器;计算机可读介质,用于存储一个或多个计算机可读指令,当所述一个或多个计算机可读指令被所述一个或多个处理器执行本文档来自技高网...

【技术保护点】
1.一种代码漏洞的修复方法,应用于客户端,其中,所述方法包括:/n响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,所述网路请求包括所述至少一个类文件对应的可执行聚合文件的第一MD5值和所述应用程序的第一版本信息;/n接收所述应用服务器发送的新的可执行聚合文件的下载地址和类信息;/n基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件,得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件;/n按照所述文件顺序列表的顺序,采用钩子技术加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞。/n

【技术特征摘要】
1.一种代码漏洞的修复方法,应用于客户端,其中,所述方法包括:
响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,所述网路请求包括所述至少一个类文件对应的可执行聚合文件的第一MD5值和所述应用程序的第一版本信息;
接收所述应用服务器发送的新的可执行聚合文件的下载地址和类信息;
基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件,得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件;
按照所述文件顺序列表的顺序,采用钩子技术加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞。


2.根据权利要求1所述的方法,其中,所述响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,包括:
响应于检测到应用程序中存在漏洞的至少一个类文件,读取所述客户端保存的所述至少一个类文件对应的可执行聚合文件,并计算所述可执行聚合文件的第一MD5值;
获取所述应用程序的第一版本信息;
基于所述可执行聚合文件的第一MD5值和所述应用程序的第一版本信息,向所述应用服务器发送网路请求。


3.根据权利要求1所述的方法,其中,所述基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件,得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件,包括:
根据所述类信息中的更新状态确定所述可执行聚合文件需要更新;
基于所述下载地址下载所述新的可执行聚合文件;
根据所述类信息中的每个加密后的可执行文件的长度,从下载的所述新的可执行聚合文件中切分出至少一个所述加密后的可执行文件并确定所述文件顺序列表,其中,每个所述类文件对应一个所述加密后的可执行文件;
根据预设的加解密密钥分别对每个所述加密后的可执行文件进行解密,得到至少一个所述解密后的可执行文件并保存,其中,每个所述类文件对应一个所述解密后的可执行文件。


4.根据权利要求1所述的方法,其中,所述按照所述文件顺序列表的顺序,采用钩子技术加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞,包括:
读取每个所述类文件对应的原有可执行文件的内存对象,得到所述至少一个原有可执行文件对应的原有内存对象数组,其中,每个所述类文件对应一个原有可执行文件;
基于每个所述解密后的可执行文件的内存对象,构造所述至少一个解密后的可执行文件的自定义内存对象数组;
基于所述原有内存对象数组和所述自定义内存对象数组,构建并确定目标数组;
将所述目标数组替换所述应用程序中的所述原有内存对象数组;
按照所述文件顺序列表的顺序,加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞。


5.根据权利要求4所述的方法,其中,所述基于所述原有内存对象数组和所述自定义内存对象数组,构建并确定目标数组,包括:
获取所述原有内存对象数组的原数组长度和所述自定义内存对象数组的自定义数组长度;<...

【专利技术属性】
技术研发人员:万立勇
申请(专利权)人:上海连尚网络科技有限公司
类型:发明
国别省市:上海;31

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

1