检测安装包是否被二次打包的方法和装置制造方法

文档序号:6632484阅读:218来源:国知局
检测安装包是否被二次打包的方法和装置制造方法
【专利摘要】本发明提供了一种检测安装包是否被二次打包的方法和装置。方法包括:解析指定安装包中的指定部分的二进制文件,得到二进制文件中的结构体的第一排序;检测第一排序与第二排序是否相同,其中,第二排序为二次打包工具对安装包的指定部分编译后所产生的结构体的排序;当第一排序与第二排序相同时,判定指定安装包为二次打包后的文件。通过本发明,可以待检测出安装包是否经过该二次打包工具进行了二次打包,进而可以在用户安装程序时,提示用户文件经过二次打包,具有威胁性,或将其存入病毒扫描工具的特征库,对这些被判定为二次打包的文件进行优先扫描,提高病毒扫描工具的查杀效率和准确性。
【专利说明】检测安装包是否被二次打包的方法和装置

【技术领域】
[0001] 本发明涉及计算机领域,具体涉及一种检测安装包是否被二次打包的方法和装 置。

【背景技术】
[0002] 目前,手机、平板电脑等移动终端应用越来越广,基于移动终端进行开发的 APP(Application,应用程序)也越来越多。并且,现在互联网上存在众多的应用市场,均能 够提供APP的下载。
[0003] 由于众多的应用市场的存在,导致对于APP的管理很混乱。因此,一些恶意开发者 开始对APP的安装包(例如apk文件)进行二次打包,并再次发布。
[0004] 具体地,二次打包也即恶意开发者拿到APP的正版安装包,将其反编译后,加入广 告、恶意代码等,再次打包为安装包,并提供给网民下载,以达到其广告宣传等目的。
[0005] 而在现有技术中,网民在对安装包进行安装前无法判断是否被二次打包,且目前 市面上具有成熟的二次打包工具,进行二次打包的技术门槛很低,导致了安装包被二次打 包的现象泛滥。


【发明内容】

[0006] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上 述问题的一种检测安装包是否被二次打包的方法和相应地装置。
[0007] 依据本发明的一个方面,提供一种检测安装包是否被二次打包的方法,包括:
[0008] 解析指定安装包中的指定部分的二进制文件,得到所述二进制文件中的结构体的 第一排序;
[0009] 检测所述第一排序与第二排序是否相同,其中,所述第二排序为二次打包工具对 安装包的指定部分编译后所产生的结构体的排序;
[0010] 当所述第一排序与所述第二排序相同时,判定所述指定安装包为二次打包后的文 件。
[0011] 可选地,所述解析指定安装包中的指定部分的二进制文件,得到所述二进制文件 中的结构体的第一排序,包括:
[0012] 根据所述指定安装包的压缩格式对所述安装包进行解压缩,得到其中的dex文件 和/或MF文件;
[0013] 查看所述dex文件和/或MF文件的二进制文件,对所述二进制文件进行解析得到 其中的多个结构体,并获得所述结构体的第一排序。
[0014] 可选地,所述二进制文件中的结构体至少包括:
[0015] 字符表或方法表。
[0016] 可选地,所述对所述二进制文件进行解析得到其中的多个结构体,包括:
[0017] 根据操作系统厂商对每种类型的结构体定义的格式在所述二进制文件中查找得 到其中的多个结构体。
[0018] 可选地,在判定所述指定安装包为二次打包后的文件之前,还包括:
[0019] 计算所述指定安装包的签名;
[0020] 确定所述指定安装包的签名是否在预设的白名单中;
[0021] 当所述指定安装包的签名在所述预设的白名单中时,判定所述指定安装包为非二 次打包文件。
[0022] 可选地,在判定所述指定安装包为二次打包后的文件之后,还包括:
[0023] 将所述指定安装包标记为经二次打包的文件,并记录在指定的特征库中;
[0024]和 / 或,
[0025] 提示用户所述指定安装包为二次打包的文件
[0026]和 / 或,
[0027] 提示用户所述指定安装包为山寨应用,并推荐与所述指定安装包对应的正版应 用。
[0028] 可选地,所述提示用户所述指定安装包为山寨应用,包括:
[0029] 提取所述指定安装包中的特征信息,并将所述特征信息上传给云服务器,由所述 云服务器根据所述特征信息判断所述指定安装包是否为山寨应用;
[0030] 当接收到所述云服务器返回的确认结果为所述指定安装包为山寨应用时,提示用 户所述指定安装包为山寨应用。
[0031] 可选地,所述指定安装包的特征信息包括:
[0032] 安装包的包名、版本号、开发者签名、Android组件receiver的特征,Android组件 service的特征,Android组件activity的特征,可执行文件中的指令或字符串和安装包目 录下各文件的校验值。
[0033] 可选地,所述推荐与所述指定安装包对应的正版应用,包括:
[0034] 由云服务器下载与所述指定安装包对于的正版应用的安装包,并推荐用户进行安 装。
[0035] 依据本发明的另一个方面,提供一种检测安装包是否被二次打包的装置,包括:
[0036] 解析模块,适于解析指定安装包中的指定部分的二进制文件,得到所述二进制文 件中的结构体的第一排序;
[0037] 排序检测模块,适于检测所述第一排序与第二排序是否相同,其中,所述第二排序 为二次打包工具对安装包的指定部分编译后所产生的结构体的排序;
[0038] 第一判定模块,适于当所述第一排序与所述第二排序相同时,判定所述指定安装 包为二次打包后的文件。
[0039] 可选地,所述解析模块包括:
[0040] 解压单元,适于根据所述安装包的压缩格式对所述指定安装包进行解压缩,得到 其中的dex文件和/或MF文件;
[0041] 排序单元,适于查看所述dex文件和/或MF文件的二进制文件,对所述二进制文 件进行解析得到其中的多个结构体,并获得所述结构体的第一排序。
[0042] 可选地,所述二进制文件中的结构体至少包括:
[0043] 字符表或方法表。
[0044] 可选地,所述排序单元适于按照如下方式对所述二进制文件进行解析得到其中的 多个结构体:
[0045] 根据操作系统厂商对每种类型的结构体定义的格式在所述二进制文件中查找得 到其中的多个结构体。
[0046] 可选地,所述装置还包括:
[0047] 签名检测模块,适于在判定所述指定安装包为二次打包后的文件之前,计算所述 指定安装包的签名,并确定所述指定安装包的签名是否在预设的白名单中;
[0048] 第二判定模块,适于当所述签名检测模块确定所述指定安装包的签名在所述预设 的白名单中时,判定所述指定安装包为非二次打包文件。
[0049] 可选地,所述装置还包括:
[0050] 记录模块,适于在判定所述指定安装包为二次打包后的文件之后,将所述指定安 装包标记为经二次打包的文件,并记录在指定的特征库中;
[0051]和 / 或,
[0052] 第一提示模块,适于在所述判定所述安指定装包为二次打包后的文件之后,提示 用户所述安装包为二次打包的文件;
[0053]和/或,
[0054] 第二提示模块,适于提示用户所述指定安装包为山寨应用,并推荐与所述指定安 装包对应的正版应用。
[0055] 可选地,所述第二提示模块具体适于按照如下方式提示用户所述指定安装包为山 寨应用:
[0056] 提取所述指定安装包中的特征信息,并将所述特征信息上传给云服务器,由所述 云服务器根据所述特征信息判断所述指定安装包是否为山寨应用;
[0057] 当接收到所述云服务器返回的确认结果为所述指定安装包为山寨应用时,提示用 户所述指定安装包为山寨应用。
[0058] 可选地,所述指定安装包的特征信息包括:
[0059] 安装包的包名、版本号、开发者签名、Android组件receiver的特征,Android组件 service的特征,Android组件activity的特征,可执行文件中的指令或字符串和安装包目 录下各文件的校验值。
[0060] 可选地,所述第二提示模块具体适于按照如下方式推荐与所述指定安装包对应的 正版应用:
[0061] 由云服务器下载与所述指定安装包对于的正版应用的安装包,并推荐用户进行安 装。
[0062] 本发明实施例提供了一种检测安装包是否被二次打包的方法和装置,通过检测待 检测的安装包文件中的指定部分,获取其中的结构体的第一排序,判断其第一排序是否与 市面上的二次打包工具对安装包进行编译时产生的结构体的第二排序相同,若相同,则说 明待检测的安装包经过该二次打包工具进行了二次打包,进而可以在用户安装程序时,提 示用户文件经过二次打包,具有威胁性,或将其存入病毒扫描工具的特征库,对这些被判定 为二次打包的文件进行优先扫描,提高病毒扫描工具的查杀效率和准确性。
[0063] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段, 而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够 更明显易懂,以下特举本发明的【具体实施方式】。
[0064] 根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明 了本发明的上述以及其他目的、优点和特征。

【专利附图】

【附图说明】
[0065] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通 技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明 的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0066] 图1是本发明一个实施例提供的一种检测安装包是否被二次打包的方法流程图; [0067] 图2是本发明一个实施例提供的一种检测安装包是否被二次打包的具体方法流 程图;
[0068] 图3是本发明一个实施例提供的特征库与移动终端、云服务器的交互示意图; [0069] 图4是本发明一个实施例提供的一种检测安装包是否被二次打包的装置结构框 图。

【具体实施方式】
[0070] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开 的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应该被这里阐述的实施 例所限制。相反,提供这些实施例是为了能够透彻地理解本公开,并且能够将本公开的范围 完整的传达给本领域的技术人员。
[0071] 实施例一
[0072] 本发明实施例提供了一种检测安装包是否被二次打包的方法。该方法能够判断指 定的安装包文件是否被二次打包,进而防止用户因为安装二次打包的文件而受到安全威胁 或广告骚扰,也可以为恶意程序的查杀提供参考。本方法可以通过检测工具实现在计算机 后台中,例如PC机以及各种服务器中均可以实现。
[0073] 图1是本发明一个实施例提供的一种检测安装包是否被二次打包的方法的流程 图,该方法包括步骤S102至S106。
[0074] S102,解析指定安装包中的指定部分的二进制文件,得到二进制文件中的结构体 的第一排序。
[0075] S104,检测第一排序与第二排序是否相同。
[0076] 其中,第二排序为二次打包工具对安装包的指定部分编译后所产生的结构体的排 序。
[0077] S106,当第一排序与第二排序相同时,判定指定安装包为二次打包后的文件。
[0078] 本发明实施例提供了一种检测安装包是否被二次打包的方法,通过检测待检测的 安装包文件中的指定部分,获取其中的结构体的第一排序,判断其第一排序是否与市面上 的二次打包工具对安装包进行编译时产生的结构体的第二排序相同,若相同,则说明待检 测的安装包经过该二次打包工具进行了二次打包,进而可以在用户安装程序时,提示用户 文件经过二次打包,具有威胁性,或将其存入病毒扫描工具的特征库,对这些被判定为二次 打包的文件进行优先扫描,提高病毒扫描工具的查杀效率和准确性。
[0079] 实施例二
[0080] 本实施例为上述实施例一的一种具体应用场景,通过本实施例,能够更加清楚、具 体地阐述本发明所提供的方法。在本实施例中,以对随机收集到的指定安装包文件为例进 行检测,判断其是否为经过二次打包的安装包为例进行说明。
[0081] 为了帮助说明本发明实施例,首先对应用程序的安装包进行说明如下:
[0082] 在本发明的实施例中,安装包会包括如下信息:应用程序的安装包的包名、版本 号、开发者签名、Android组件receiver的特征,Android组件service的特征,Android组 件activity的特征,可执行文件中的指令或字符串,安装包目录下各文件的MD5值,其中, 所述可执行文件包括Dex文件,和/或,ELF文件;所述Dex文件包括classes, dex文件,扩 展名为.jar的文件,以及,Dex格式的文件。
[0083] 1)安装包的包名
[0084]Android操作系统通过APK的包名(packagename)对各个安装的APK进行管理。 "包名"源自于Java的package的概念,按照Java的package的命名风格,例如某个Android 安装包的包名是com.qihoo360.mobilesafe。Android系统要求每个应用程序都声明一个 唯一的安装包的包名。如果要安装的APK的包名和当前手机上某个已有的应用程序的安装 包的包名重复了,那么Android系统会拒绝安装。Android平台下的山寨应用程序也需要声 明一个包名,因此,包名就可以作为识别山寨应用程序的一个特征。
[0085] 2)开发者签名
[0086] 出于安全性的目的,Android系统要求每个APK都要包含开发者签名(digital signature)。Android系统在安装APK文件的时候会检查APK内部各文件的开发者签名是 否与其预先设定的开发者签名一致,如果不一致,或者没有开发者签名,则认为文件已被篡 改,拒绝该APK的安装和运行。Android平台下的山寨应用程序也不例外,所以APK文件的 开发者签名也可以作为识别山寨应用程序的一个特征。
[0087] 上述应用程序的开发者签名,也可称为代码签名,是在应用程序上附加一个防伪 和防篡改的开发者签名来保护应用程序不被恶意修改。如果已安装的应用程序的开发者签 名与应用程序的官方的开发者签名不一致,则可以认为已安装的应用程序可能被恶意修改 过,该应用程序是山寨应用程序。在提取开发者签名时,对于安卓应用而言,可以从程序安 装包中的元信息(META-INF)目录下提取,META-INF目录用于存储包和扩展的配置数据,例 如安全性信息和版本信息,其中开发者签名就存储于此。META-INF目录如下表所示:
[0088]

【权利要求】
1. 一种检测安装包是否被二次打包的方法,包括: 解析指定安装包中的指定部分的二进制文件,得到所述二进制文件中的结构体的第一 排序; 检测所述第一排序与第二排序是否相同,其中,所述第二排序为二次打包工具对安装 包的指定部分编译后所产生的结构体的排序; 当所述第一排序与所述第二排序相同时,判定所述指定安装包为二次打包后的文件。
2. 根据权利要求1所述的方法,其中,所述解析指定安装包中的指定部分的二进制文 件,得到所述二进制文件中的结构体的第一排序,包括: 根据所述指定安装包的压缩格式对所述安装包进行解压缩,得到其中的dex文件和/ 或MF文件; 查看所述dex文件和/或MF文件的二进制文件,对所述二进制文件进行解析得到其中 的多个结构体,并获得所述结构体的第一排序。
3. 根据权利要求2所述的方法,其中,所述二进制文件中的结构体至少包括: 字符表或方法表。
4. 根据权利要求2或3所述的方法,其中,所述对所述二进制文件进行解析得到其中的 多个结构体,包括: 根据操作系统厂商对每种类型的结构体定义的格式在所述二进制文件中查找得到其 中的多个结构体。
5. 根据权利要求1至4中任一项所述的方法,其中,在判定所述指定安装包为二次打包 后的文件之前,还包括: 计算所述指定安装包的签名; 确定所述指定安装包的签名是否在预设的白名单中; 当所述指定安装包的签名在所述预设的白名单中时,判定所述指定安装包为非二次打 包文件。
6. -种检测安装包是否被二次打包的装置,包括: 解析模块,适于解析指定安装包中的指定部分的二进制文件,得到所述二进制文件中 的结构体的第一排序; 排序检测模块,适于检测所述第一排序与第二排序是否相同,其中,所述第二排序为二 次打包工具对安装包的指定部分编译后所产生的结构体的排序; 第一判定模块,适于当所述第一排序与所述第二排序相同时,判定所述指定安装包为 二次打包后的文件。
7. 根据权利要求6所述的装置,其中,所述解析模块包括: 解压单元,适于根据所述安装包的压缩格式对所述指定安装包进行解压缩,得到其中 的dex文件和/或MF文件; 排序单元,适于查看所述dex文件和/或MF文件的二进制文件,对所述二进制文件进 行解析得到其中的多个结构体,并获得所述结构体的第一排序。
8. 根据权利要求7所述的装置,其中,所述二进制文件中的结构体至少包括: 字符表或方法表。
9. 根据权利要求7或8所述的装置,其中,所述排序单元适于按照如下方式对所述二进 制文件进行解析得到其中的多个结构体: 根据操作系统厂商对每种类型的结构体定义的格式在所述二进制文件中查找得到其 中的多个结构体。
10.根据权利要求6至9中任一项所述的装置,其中,所述装置还包括: 签名检测模块,适于在判定所述指定安装包为二次打包后的文件之前,计算所述指定 安装包的签名,并确定所述指定安装包的签名是否在预设的白名单中; 第二判定模块,适于当所述签名检测模块确定所述指定安装包的签名在所述预设的白 名单中时,判定所述指定安装包为非二次打包文件。
【文档编号】G06F9/44GK104317599SQ201410601347
【公开日】2015年1月28日 申请日期:2014年10月30日 优先权日:2014年10月30日
【发明者】路轶 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1