【技术实现步骤摘要】
一种代码漏洞的修复方法及设备
本申请涉及计算机领域,尤其涉及一种代码漏洞的修复方法及设备。
技术介绍
安卓系统版本众多,机型众多,每次发布一个版本都是需要较长的时间。安卓应用版本升级至少需要两周才能达到80%的升级率,严重阻碍了版本迭代速度。也导致市场上application(应用程序,APP)版本分散,处理漏洞(bug)和投诉等也越来越麻烦。现有技术中,APP发布新的版本的时候,如果发现线上bug,需要修改代码后,重新打包代码,然后再重新发布到市场,此种修复漏洞等问题的方式比较耗时,即时性较低,从而容易造成用户的流失。
技术实现思路
本申请的一个目的是提供一种代码漏洞的修复方法及设备,以在线上代码出现漏洞时,能够在不需要重新发版的情况下就可以修复线上的代码漏洞,从而提高线上漏洞的修复的响应即时性。根据本申请的一个方面,提供了一种代码漏洞的修复方法,应用于客户端,其中,所述方法包括:响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,所述网路请求包括所述至少一个类文件对应的可执行聚合文件的第一MD5值和所述应用程序的第一版本信息;接收所述应用服务器发送的新的可执行聚合文件的下载地址和类信息;基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件,得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件;按照所述文件顺序列表的顺序,采用钩子技术加 ...
【技术保护点】
1.一种代码漏洞的修复方法,应用于客户端,其中,所述方法包括:/n响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,所述网路请求包括所述至少一个类文件对应的可执行聚合文件的第一MD5值和所述应用程序的第一版本信息;/n接收所述应用服务器发送的新的可执行聚合文件的下载地址和类信息;/n基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件,得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件;/n按照所述文件顺序列表的顺序,采用钩子技术加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞。/n
【技术特征摘要】
1.一种代码漏洞的修复方法,应用于客户端,其中,所述方法包括:
响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,所述网路请求包括所述至少一个类文件对应的可执行聚合文件的第一MD5值和所述应用程序的第一版本信息;
接收所述应用服务器发送的新的可执行聚合文件的下载地址和类信息;
基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件,得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件;
按照所述文件顺序列表的顺序,采用钩子技术加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞。
2.根据权利要求1所述的方法,其中,所述响应于检测到应用程序中存在漏洞的至少一个类文件,向应用服务器发送网路请求,包括:
响应于检测到应用程序中存在漏洞的至少一个类文件,读取所述客户端保存的所述至少一个类文件对应的可执行聚合文件,并计算所述可执行聚合文件的第一MD5值;
获取所述应用程序的第一版本信息;
基于所述可执行聚合文件的第一MD5值和所述应用程序的第一版本信息,向所述应用服务器发送网路请求。
3.根据权利要求1所述的方法,其中,所述基于所述下载地址下载所述新的可执行聚合文件,并基于所述类信息解析下载的所述新的可执行聚合文件,得到文件顺序列表和至少一个解密后的可执行文件,其中,每个所述类文件对应一个所述解密后的可执行文件,包括:
根据所述类信息中的更新状态确定所述可执行聚合文件需要更新;
基于所述下载地址下载所述新的可执行聚合文件;
根据所述类信息中的每个加密后的可执行文件的长度,从下载的所述新的可执行聚合文件中切分出至少一个所述加密后的可执行文件并确定所述文件顺序列表,其中,每个所述类文件对应一个所述加密后的可执行文件;
根据预设的加解密密钥分别对每个所述加密后的可执行文件进行解密,得到至少一个所述解密后的可执行文件并保存,其中,每个所述类文件对应一个所述解密后的可执行文件。
4.根据权利要求1所述的方法,其中,所述按照所述文件顺序列表的顺序,采用钩子技术加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞,包括:
读取每个所述类文件对应的原有可执行文件的内存对象,得到所述至少一个原有可执行文件对应的原有内存对象数组,其中,每个所述类文件对应一个原有可执行文件;
基于每个所述解密后的可执行文件的内存对象,构造所述至少一个解密后的可执行文件的自定义内存对象数组;
基于所述原有内存对象数组和所述自定义内存对象数组,构建并确定目标数组;
将所述目标数组替换所述应用程序中的所述原有内存对象数组;
按照所述文件顺序列表的顺序,加载所述至少一个解密后的可执行文件至安卓虚拟机中运行,以修复所述应用程序存在的漏洞。
5.根据权利要求4所述的方法,其中,所述基于所述原有内存对象数组和所述自定义内存对象数组,构建并确定目标数组,包括:
获取所述原有内存对象数组的原数组长度和所述自定义内存对象数组的自定义数组长度;<...
【专利技术属性】
技术研发人员:万立勇,
申请(专利权)人:上海连尚网络科技有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。