一种修复山寨应用程序的方法及装置制造方法

文档序号:6523309阅读:148来源:国知局
一种修复山寨应用程序的方法及装置制造方法
【专利摘要】本发明公开了一种修复山寨应用程序的方法及装置,该方法包括:扫描终端设备上已安装的应用程序,并根据扫描得到的信息生成应用程序列表;判断应用程序列表中的应用程序是否在预设的应用程序白名单中;如果应用程序在预设的应用程序白名单中,判断应用程序的安装包中的至少部分文件是否被篡改;如果应用程序的安装包中的至少部分文件被篡改,则卸载终端设备上的应用程序;从云端服务器中下载应用程序的官方安装包并在终端设备上安装。通过本发明的实施例可以帮助用户将终端设备上的山寨应用程序替换成官方版本的应用程序,有效防止山寨应用程序中的恶意代码给用户带来安全问题,提高了终端设备的操作系统的安全性。
【专利说明】一种修复山寨应用程序的方法及装置
【技术领域】
[0001]本发明属于计算机【技术领域】,尤其涉及一种修复山寨应用程序的方法及装置。
【背景技术】
[0002]近年来安卓系统因其开放性得到了广泛的应用,适用于安卓系统的应用程序的数量也呈爆炸式增长,但也因安卓系统的开放性导致应用程序易于被篡改或伪造,通常将篡改或伪造已有应用程序而产生的应用程序称为山寨应用程序。基于安全性方面的考虑,山寨应用程序通常包含木马、病毒、广告、泄露隐私等危害用户的恶意代码。
[0003]然而,目前还没有一种有效的方式对山寨应用程序进行识别并修复。

【发明内容】

[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的修复山寨应用程序的方法及装置。
[0005]依据本发明的一个方面,提供了一种修复山寨应用程序的方法,其包括:
[0006]扫描终端设备上已安装的应用程序,并根据扫描得到的信息生成应用程序列表,所述应用程序列表包括应用程序的特征信息;
[0007]判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中;
[0008]如果所述应用程序在所述预设的应用程序白名单中,判断所述应用程序的安装包中的至少部分文件是否被篡改;
[0009]如果所述应用程序的安装包中的至少部分文件被篡改,则卸载所述终端设备上的所述应用程序;
[0010]从云端服务器中下载所述应用程序的官方安装包并在所述终端设备上安装。
[0011]可选地,所述判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中的步骤包括:
[0012]在所述终端设备侧判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中;或者
[0013]在所述终端设备侧将所述应用程序列表发送至云端服务器,并接收由所述云端服务器判断所述应用程序列表中的应用程序是否在预设的应用程序白名单的结果。
[0014]可选地,判断所述应用程序的安装包中的至少部分文件是否被篡改的步骤包括:
[0015]在所述终端设备侧根据已安装应用程序的特征信息与官方版本的应用程序的特征信息,判断所述应用程序的安装包中的至少部分文件是否被篡改;或者
[0016]在所述终端设备侧将已安装应用程序的特征信息发送至云端服务器,由云端服务器根据已安装应用程序的特征信息与官方版本的应用程序的特征信息,判断所述应用程序的安装包中的至少部分文件是否被篡改。
[0017]可选地,所述应用程序的特征信息至少包括以下中的任意一种:应用程序的安装包的包名、版本号、开发者签名、Android组件receiver的特征,Android组件service的特征,Android组件activity的特征,可执行文件中的指令或字符串和安装包目录下各文件的校验值。
[0018]可选地,如果所述应用程序不在所述预设的应用程序白名单中,所述方法还包括:
[0019]在终端设备侧将应用程序的特征信息发送至云端服务器,由云端服务器根据安全识别库进行识别;所述安全识别库中的特征信息包括以下中的一种或几种组合:各种样本Android安装包的包名,版本号,数字签名,Android组件receiver的特征,Android组件service的特征,Android组件activity的特征,可执行文件中的指令或字符串,Android安装包目录下各文件的MD5值;其中,所述可执行文件包括Dex文件,和/或,ELF文件;所述Dex文件包括classes, dex文件,扩展名为.jar的文件,以及,Dex格式的文件;其中,所述样本Android安装包包括各种安全级别下的Android安装包;
[0020]在所述终端设备接收所述云端服务器发送的卸载建议,所述卸载建议包括:建议卸载、不建议卸载和谨慎卸载。
[0021]可选地,从云端服务器中下载所述应用程序的官方安装包并在所述终端设备上安装的步骤包括:
[0022]在所述终端设备侧向所述云端服务器发送下载请求,所述下载请求中包括应用程序的安装包的包名和版本号,由所述云端服务器根据所述应用程序的安装包的包名和版本号匹配得到所述应用程序的官方安装包;
[0023]在所述终端设备侧从所述云端服务器中下载并安装所述应用程序的官方安装包。
[0024]可选地,在所述终端设备侧向所述云端服务器发送下载请求的步骤之前,还包括:
[0025]在所述终端设备侧提示用户可以下载所述应用程序的官方安装包;
[0026]如果用户选择下载所述应用程序的官方安装包,则执行在所述终端设备侧向所述云端服务器发送下载请求的步骤。
[0027]可选地,卸载所述终端设备上的应用程序的步骤包括:
[0028]在所述终端设备侧提示用户可以卸载所述应用程序;
[0029]在所述终端设备侧接收卸载命令;
[0030]在所述终端设备侧根据所述卸载命令卸载所述应用程序。
[0031]依据本发明的另一个方面,还提供了一种修复山寨应用程序的装置,其包括:
[0032]扫描模块,用于扫描终端设备上已安装的应用程序,并根据扫描得到的信息生成应用程序列表,所述应用程序列表包括应用程序的特征信息;
[0033]白名单判断模块,用于判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中;
[0034]篡改判断模块,用于如果所述应用程序在所述预设的应用程序白名单中,判断所述应用程序的安装包中的至少部分文件是否被篡改;
[0035]卸载模块,用于如果所述应用程序的安装包中的至少部分文件被篡改,则卸载所述终端设备上的所述应用程序;
[0036]自动安装模块,用于从云端服务器中下载所述应用程序的官方安装包并在所述终端设备上安装。[0037]可选地,所述白名单判断模块进一步用于在所述终端设备侧判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中;或者在所述终端设备侧将所述应用程序列表发送至云端服务器,并接收由所述云端服务器判断所述应用程序列表中的应用程序是否在预设的应用程序白名单的结果。
[0038]可选地,所述篡改判断模块进一步用于在所述终端设备侧根据已安装应用程序的特征信息与官方版本的应用程序的特征信息,判断所述应用程序的安装包中的至少部分文件是否被篡改;或者在所述终端设备侧将已安装应用程序的特征信息发送至云端服务器,由云端服务器根据已安装应用程序的特征信息与官方版本的应用程序的特征信息,判断所述应用程序的安装包中的至少部分文件是否被篡改。
[0039]可选地,所述应用程序的特征信息至少包括以下中的任意一种:应用程序的安装包的包名、版本号、开发者签名、Android组件receiver的特征,Android组件service的特征,Android组件activity的特征,可执行文件中的指令或字符串和安装包目录下各文件的校验值。
[0040]可选地,所述自动安装模块包括:
[0041]下载请求发送单元,用于在所述终端设备侧向所述云端服务器发送下载请求,所述下载请求中包括应用程序的描述信息,由所述云端服务器根据所述应用程序的描述信息匹配得到所述应用程序的官方安装包;
[0042]下载单元,用于在所述终端设备侧从所述云端服务器中下载所述应用程序的官方安装包;
[0043]安装单元,用于在所述终端设备侧安装所述应用程序的官方安装包。
[0044]可选地,所述自动安装模块还包括:
[0045]下载提示单元,用于在所述终端设备侧提示用户可以下载所述应用程序的官方安装包;如果用户选择下载所述应用程序的官方安装包,则触发所述下载请求发送单元。
[0046]可选地,所述卸载模块包括:
[0047]卸载提示单元,用于在所述终端设备侧提示用户可以卸载所述应用程序;
[0048]卸载命令接收单元,用于在所述终端设备侧接收卸载命令,所述卸载命令包括应用程序的描述信息;
[0049]卸载单元,用于在所述终端设备侧根据所述卸载命令卸载所述应用程序。
[0050]可选地,所述装置还包括:
[0051]识别请求模块,用于在终端设备侧将应用程序的特征信息发送至云端服务器,由云端服务器根据安全识别库进行识别;所述安全识别库中的特征信息包括以下中的一种或几种组合:各种样本Android安装包的包名,版本号,数字签名,Android组件receiver的特征,Android组件service的特征,Android组件activity的特征,可执行文件中的指令或字符串,Android安装包目录下各文件的MD5值;其中,所述可执行文件包括Dex文件,和/或,ELF文件;所述Dex文件包括classes, dex文件,扩展名为.jar的文件,以及,Dex格式的文件;其中,所述样本Android安装包包括各种安全级别下的Android安装包;
[0052]卸载建议接收模块,用于在所述终端设备接收所述云端服务器发送的卸载建议,所述卸载建议包括:建议卸载、不建议卸载和谨慎卸载。
[0053]由上述技术方案可知,本发明的实施例具有如下有益效果:通过判断应用程序的安装包中的至少部分文件是否被篡改,来识别终端设备中已安装的应用程序是否为山寨应用程序,如果该应用程序为山寨应用程序,则可以提示用户卸载该应用程序,并引导用户从云端服务器中下载并安装应用程序的官方安装包,从而实现帮助用户将山寨应用程序替换成官方版本的应用程序,有效防止山寨应用程序中的木马、病毒、广告、泄露隐私等危害用户的恶意代码给用户带来安全问题,提高了终端设备的操作系统的安全性。
【专利附图】

【附图说明】
[0054]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0055]图1示出了根据本发明的一个实施例中修复山寨应用程序的方法的流程图;以及
[0056]图2示出了根据本发明的另一个实施例中修复山寨应用程序的装置的结构框图。
【具体实施方式】
[0057]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0058]如图1所示,本发明的实施例中提供了一种修复山寨应用程序的方法,该方法100包括:
[0059]步骤S101、扫描已安装的应用程序,并根据扫描得到的信息生成应用程序列表,应用程序列表包括应用程序的特征信息。
[0060]具体地,步骤SlOl中包括如下两种情形:
[0061]在本发明的一个实施例中,终端设备侧可以扫描本地已安装的应用程序,并根据扫描得到的信息生成应用程序列表,该应用程序列表在终端设备侧显示。
[0062]在本发明的另一个实施例中,终端设备侧也可以扫描与其建立连接的其他终端设备中已安装的应用程序。例如计算设备与移动设备建立连接,然后计算设备扫描移动设备中已安装的应用程序,并根据扫描得到的信息生成应用程序列表,其中该应用程序列表在计算设备侧显示。
[0063]在具体实现中,所述移动设备侧通过无线的方式接入所述计算设备,可以包括如下情况:
[0064]1.有无线路由
[0065]这种方式是移动设备通过WIFI连到路由,计算设备通过WIFI或网线连到路由,在移动设备上用websharing、虚拟数据线、文件大师等软件开通ftp服务,在计算设备上用浏览器打开ftp后,进行文件传输。
[0066]2.没有无线路由,计算设备有无线网卡
[0067]2.1无线网卡支持mywifi技术
[0068]把计算设备设为wifi热点(xp下手工设置,win7下手工设置或用connectify软件),移动设备通过wifi连到计算设备;在移动设备上用websharing、虚拟数据线、文件大师等软件开通ftp服务,计算设备上用浏览器打开ftp后进行文件传输。
[0069]2.2无线网卡不支持mywifi技术
[0070]把移动设备的wifi热点打开,计算设备通过wifi连到移动设备,在移动设备上用websharing、虚拟数据线、文件大师等软件开通ftp服务,计算设备上用浏览器打开ftp后进行文件传输。
[0071]所述移动设备侧可以通过上述任一种无线连接方式或其他无线连接方式连接至计算设备,本发明实施例对移动设备无线连接计算设备的具体连接方式无需加以限制。
[0072]在本发明的实施例中,终端设备可以是计算设备或移动设备,其中,计算设备可以是具有操作系统的智能设备,如台式电脑,笔记本电脑等。计算设备可以有线方式连接网络,也可以无线方式连接网络,所连接的网络可以是因特网,也可以是局域网。可设置为无线热点的网卡具体可以是计算设备内置的无线网卡或者是可设置为无线热点的USB无线网卡。将所述无线网卡设置成为共享所述计算设备所连接的网络的无线热点后,接入该无线热点的手机、PAD等移动设备就可以通过该无线网卡访问该计算设备所连接的网络。
[0073]在本发明的实施例中,该应用程序的特征信息至少包括以下中的任意一种:应用程序的安装包的包名、版本号、开发者签名、Android组件receiver的特征,Android组件service的特征,Android组件activity的特征,可执行文件中的指令或字符串,安装包目录下各文件的MD5值,其中,所述可执行文件包括Dex文件,和/或,ELF文件;所述Dex文件包括classes, dex文件,扩展名为.jar的文件,以及,Dex格式的文件。
[0074]I)安装包的包名
[0075]Android操作系统通过APK的包名(package name)对各个安装的APK进行管理。“包名”源自于Java的package的概念,按照Java的package的命名风格,例如某个An droid安装包的包名是com.qihoo360.mobiIesafe。Android系统要求每个应用程序都声明一个唯一的安装包的包名。如果要安装的APK的包名和当前手机上某个已有的应用程序的安装包的包名重复了,那么Android系统会拒绝安装。Android平台下的山寨应用程序也需要声明一个包名,因此,包名就可以作为识别山寨应用程序的一个特征。
[0076]2)开发者签名
[0077]出于安全性的目的,Android系统要求每个APK都要包含开发者签名(digitalsignature)。Android系统在安装APK文件的时候会检查APK内部各文件的开发者签名是否与其预先设定的开发者签名一致,如果不一致,或者没有开发者签名,则认为文件已被篡改,拒绝该APK的安装和运行。Android平台下的山寨应用程序也不例外,所以APK文件的开发者签名也可以作为识别山寨应用程序的一个特征。
[0078]上述应用程序的开发者签名,也可称为代码签名,是在应用程序上附加一个防伪和防篡改的开发者签名来保护应用程序不被恶意修改。如果已安装的应用程序的开发者签名与应用程序的官方的开发者签名不一致,则可以认为已安装的应用程序可能被恶意修改过,该应用程序是山寨应用程序。在提取开发者签名时,对于安卓应用而言,可以从程序安装包中的元信息(META-1NF)目录下提取,META-1NF目录用于存储包和扩展的配置数据,例如安全性信息和版本信息,其中开发者签名就存储于此。META-1NF目录如下表所示:
[0079]
【权利要求】
1.一种修复山寨应用程序的方法,其包括: 扫描终端设备上已安装的应用程序,并根据扫描得到的信息生成应用程序列表,所述应用程序列表包括应用程序的特征信息; 判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中; 如果所述应用程序在所述预设的应用程序白名单中,判断所述应用程序的安装包中的至少部分文件是否被篡改; 如果所述应用程序的安装包中的至少部分文件被篡改,则卸载所述终端设备上的所述应用程序; 从云端服务器中下载所述应用程序的官方安装包并在所述终端设备上安装。
2.根据权利要求1所述的方法,其中,所述判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中的步骤包括: 在所述终端设备侧判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中;或者 在所述终端设备侧将所述应用程序列表发送至云端服务器,并接收由所述云端服务器判断所述应用程序列表中的应用程序是否在预设的应用程序白名单的结果。
3.根据权利要求1所述的方法,其中,判断所述应用程序的安装包中的至少部分文件是否被篡改的步骤包括: 在所述终端设备侧根据已安装应用程序的特征信息与官方版本的应用程序的特征信息,判断所述应用程序的安装包中的至少部分文件是否被篡改;或者 在所述终端设备侧将已安装应用程序的特征信息发送至云端服务器,由云端服务器根据已安装应用程序的特征信息与官方版本的应用程序的特征信息,判断所述应用程序的安装包中的至少部分文件是否被篡改。
4.根据权利要求1所述的方法,其中,所述应用程序的特征信息至少包括以下中的任意一种:应用程序的安装包的包名、版本号、开发者签名、Android组件receiver的特征,Android组件service的特征,Android组件activity的特征,可执行文件中的指令或字符串和安装包目录下各文件的校验值。
5.根据权利要求1所述的方法,其中,如果所述应用程序不在所述预设的应用程序白名单中,所述方法还包括: 在终端设备侧将应用程序的特征信息发送至云端服务器,由云端服务器根据安全识别库进行识别;所述安全识别库中的特征信息包括以下中的一种或几种组合:各种样本Android安装包的包名,版本号,数字签名,Android组件receiver的特征,Android组件service的特征,Android组件activity的特征,可执行文件中的指令或字符串,Android安装包目录下各文件的MD5值;其中,所述可执行文件包括Dex文件,和/或,ELF文件;所述Dex文件包括classes, dex文件,扩展名为.jar的文件,以及,Dex格式的文件;其中,所述样本Android安装包包括各种安全级别下的Android安装包; 在所述终端设备接收所述云端服务器发送的卸载建议,所述卸载建议包括:建议卸载、不建议卸载和谨慎卸载。
6.根据权利要求1所述的方法,其中,从云端服务器中下载所述应用程序的官方安装包并在所述终端设备上安装的步骤包括:在所述终端设备侧向所述云端服务器发送下载请求,所述下载请求中包括应用程序的安装包的包名和版本号,由所述云端服务器根据所述应用程序的安装包的包名和版本号匹配得到所述应用程序的官方安装包; 在所述终端设备侧从所述云端服务器中下载并安装所述应用程序的官方安装包。
7.根据权利要求6所述的方法,其中,在所述终端设备侧向所述云端服务器发送下载请求的步骤之前,还包括: 在所述终端设备侧提示用户可以下载所述应用程序的官方安装包; 如果用户选择下载所述应用程序的官方安装包,则执行在所述终端设备侧向所述云端服务器发送下载请求的步骤。
8.根据权利要求1所述的方法,其中,卸载所述终端设备上的应用程序的步骤包括: 在所述终端设备侧提示用户可以卸载所述应用程序; 在所述终端设备侧接收卸载命令; 在所述终端设备侧根据所述卸载命令卸载所述应用程序。
9.一种修复山寨应用程序的装置,其包括: 扫描模块,用于扫描终端设备上已安装的应用程序,并根据扫描得到的信息生成应用程序列表,所述应用程序列表包括应用程序的特征信息; 白名单判断模块,用于判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中; 篡改判断模块,用于如果所述应用程序在所述预设的应用程序白名单中,判断所述应用程序的安装包中的至少部分文件是否被篡改; 卸载模块,用于如果所述应用程序的安装包中的至少部分文件被篡改,则卸载所述终端设备上的所述应用程序; 自动安装模块,用于从云端服务器中下载所述应用程序的官方安装包并在所述终端设备上安装。
10.根据权利要求9所述的装置,其中,所述白名单判断模块进一步用于在所述终端设备侧判断所述应用程序列表中的应用程序是否在预设的应用程序白名单中;或者在所述终端设备侧将所述应用程序列表发送至云端服务器,并接收由所述云端服务器判断所述应用程序列表中的应用程序是否在预设的应用程序白名单的结果。
【文档编号】G06F9/445GK103679029SQ201310674728
【公开日】2014年3月26日 申请日期:2013年12月11日 优先权日:2013年12月11日
【发明者】王卫平, 李新华, 李小庆, 蒋又新 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1