CN108280341B - 渠道号添加、安装包校验方法及装置 - Google Patents
渠道号添加、安装包校验方法及装置 Download PDFInfo
- Publication number
- CN108280341B CN108280341B CN201611260395.4A CN201611260395A CN108280341B CN 108280341 B CN108280341 B CN 108280341B CN 201611260395 A CN201611260395 A CN 201611260395A CN 108280341 B CN108280341 B CN 108280341B
- Authority
- CN
- China
- Prior art keywords
- block
- channel number
- signature
- data
- directory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种渠道号添加、安装包校验方法及装置,属于安装包处理领域。该方法包括:对APK文件进行解析,获取APK文件的签名区块,签名区块中包括签名信息和校验信息;向签名区块中添加目标渠道号,目标渠道号与发布APK文件的应用发布方对应;计算添加目标渠道号前后签名区块的数据变化量;根据数据变化量更新APK文件中包含的偏移字段,偏移字段位于目录结束标识区块,目录结束标识区块用于通过偏移字段指示目录区块在APK文件中所处的位置,目录区块用于指示数据区块中各个文件数据的位置。本发明实施例解决了现有的v1版签名APK文件的渠道号注入方式无法适用于v2版签名APK文件的问题,实现了添加渠道号后v2版签名APK文件的正常安装。
Description
技术领域
本发明实施例涉及安装包处理领域,特别涉及一种渠道号添加、安装包校验方法及装置。
背景技术
应用开发商完成Android(安卓)应用开发后,可以将Android应用投放到互联网中不同的应用市场,供用户下载并安装。
为了使应用开发商知悉Android应用在不同应用市场中的下载量,从而制定相应的投放策略,应用市场需要在Android应用的APK文件(Android Package,安卓安装包)中添加渠道号,其中,该渠道号即用于指示提供应用下载的应用市场,并用于统计应用在应用市场中的下载量。现有技术中,针对采用APK Signature Scheme v1(第一版安卓安装包签名方案)进行签名的APK文件,应用市场采用向APK文件中注入channel(渠道号)文件或向APK文件的zip info(压缩信息)中注入channel信息的方式实现渠道号的添加。
对于采用APK Signature Scheme v2(第二版安卓安装包签名方案)进行签名的APK文件,其APK文件结构如图1所示,其中,数据区块11用于存储压缩后的文件数据,签名区块14用于存储签名信息和校验信息,目录区块12用于指示数据区块11中各个文件数据的位置,目录结束标识区块13用于指示目录区块12的位置。若将v1版签名APK文件的渠道号注入方式用于v2版签名APK文件,当采用注入channel文件的方式添加渠道号时,由于添加channel文件后APK文件新增了文件数据,并相应增加了指示新增文件数据的目录,导致APK文件中的数据区块11和目录区块12均发生变化;当采用注入channel信息的方式添加渠道号时,由于注入的channel信息位于目录结束标识区块13中,导致APK文件中的目录结束标识区块13发生变化。
然而,终端安装v2版签名APK文件时,需要根据签名区块的校验信息分别对数据区块、目录区块以及目录结束标识区块进行校验,当数据区块、目录区块或目录结束标识区块发生变化时,APK文件将无法通过校验。显然,若将v1版签名APK文件的渠道号注入方式用于v2版签名APK文件,将导致v2版签名APK文件无法被正常安装。
发明内容
为了解决现有的v1版签名APK文件的渠道号注入方式无法适用于v2版签名APK文件的问题,本发明实施例提供了一种渠道号添加、安装包校验方法及装置。所述技术方案如下:
根据本发明实施例的第一方面,提供了一种渠道号添加方法,该方法包括:
对APK文件进行解析,获取APK文件的签名区块,签名区块中包括签名信息和校验信息;
向签名区块中添加目标渠道号,目标渠道号与发布APK文件的应用发布方对应;
计算添加目标渠道号前后签名区块的数据变化量;
根据数据变化量更新APK文件中包含的偏移字段,该偏移字段位于目录结束标识区块,目录结束标识区块用于通过偏移字段指示目录区块在APK文件中所处的位置,目录区块用于指示数据区块中各个文件数据的位置。
根据本发明实施例的第二方面,提供了一种安装包校验方法,该方法包括:
对APK文件进行解析,获取APK文件的签名区块,,签名区块中包括签名信息、校验信息和渠道号;
获取APK文件中包含的偏移字段,偏移字段位于目录结束标识区块,目录结束标识区块用于通过偏移字段指示目录区块在APK文件中所处的位置,目录区块用于指示数据区块中各个文件数据的位置;
根据偏移字段对应的偏移值和签名区块的数据量,还原目录结束标识区块,还原后的目录结束标识区块与签名前APK文件的目录结束标识区块一致;
根据校验信息对数据区块、目录区块以及还原后的目录结束标识区块进行校验。
根据本发明实施例的第三方面,提供了一种渠道号添加装置,该装置包括:
第一解析模块,用于对APK文件进行解析,获取APK文件的签名区块,签名区块中包括签名信息和校验信息;
添加模块,用于向签名区块中添加目标渠道号,目标渠道号与发布APK文件的应用发布方对应;
计算模块,用于计算添加目标渠道号前后签名区块的数据变化量;
第一更新模块,用于根据数据变化量更新APK文件中包含的偏移字段,偏移字段位于目录结束标识区块,目录结束标识区块用于通过偏移字段指示目录区块在APK文件中所处的位置,目录区块用于指示数据区块中各个文件数据的位置。
根据本发明实施例的第四方面,提供了一种安装包校验装置,该装置包括:
第二解析模块,用于对APK文件进行解析,获取APK文件的签名区块,签名区块中包括签名信息、校验信息和渠道号;
获取模块,用于获取APK文件中包含的偏移字段,偏移字段位于目录结束标识区块,目录结束标识区块用于通过偏移字段指示目录区块在APK文件中所处的位置,目录区块用于指示数据区块中各个文件数据的位置;
还原模块,用于根据偏移字段对应的偏移值和签名区块的数据量,还原目录结束标识区块,还原后的目录结束标识区块与v2版签名前APK文件的目录结束标识区块一致;
校验模块,用于根据校验信息对数据区块、目录区块以及还原后的目录结束标识区块进行校验。
本发明实施例提供的技术方案带来的有益效果是:
在向APK文件中添加渠道号时,通过将渠道号添加到无需进行校验的签名区块,并根据添加渠道号前后签名区块的数据变化量,动态更新APK文件中目录结束标识区块包含的偏移字段,确保添加渠道号后APK文件的数据区块、目录区块和目录结束标识区块均能够通过签名区块中校验信息的校验,从而解决了现有的v1版签名APK文件的渠道号注入方式无法适用于v2版签名APK文件的问题,实现了添加渠道号后v2版签名APK文件的正常安装。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了v2版签名前后APK文件的文件结构示意图;
图2示出了本发明一个实施例提供的实施环境的示意图;
图3示出了本发明一个实施例提供的渠道号添加方法的流程图;
图4A示出了本发明另一个实施例提供的渠道号添加方法的流程图;
图4B是图4A所示渠道号添加方法的原理示意图;
图5A示出了本发明一个实施例提供的安装包校验方法的流程图;
图5B是图5A所示安装包校验方法的原理示意图;
图5C示出了本发明另一个实施例提供的安装包校验方法的流程图;
图6示出了本发明一个实施例提供的渠道号添加装置的结构方框图;
图7示出了本发明一个实施例提供的安装包校验装置的结构方框图;
图8示出了本发明一个实施例提供的服务器的结构方框图;
图9示出了本发明一个实施例提供的终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
请参考图2,其示出了本发明一个实施例提供的实施环境的示意图,该实施环境中包括应用开发商终端210、应用市场服务器220和用户终端230。
应用开发商终端210是应用开发商所使用的终端,应用开发商即使用该终端向至少一个应用市场投放开发的Android应用。
为了避免Android应用被篡改,并标明开发商的身份,应用开发商终端210在投放Android应用前,需要采用Android应用的APK文件进行签名,从而将相应的签名信息以及校验信息写入APK文件中。其中,对APK文件进行签名的方式包括采用v1版签名和采用v2版签名。本发明各个实施例中,均以APK文件采用v2版签名为例进行说明。
应用开发商终端210通过有线网络或无线网络与应用市场服务器220相连。
应用市场服务器220是各大应用市场各自对应的后台服务器,用于接收应用开发商投放的Android应用。该应用市场服务器220为一台服务器、若干台服务器组成的服务器集群或云计算中心。
由于应用开发商将同一Android应用投放到不同的应用市场,为了使应用开发商知悉Android应用在不同应用市场的下载量,应用市场服务器220接收到应用开发商终端210发送的APK文件时,需要向APK文件中注入应用市场对应的渠道号。当用户终端230从应用市场中下载并使用该Android应用时,应用开发商即可根据用户终端230上报的渠道号知悉用户终端230从何应用市场下载该Android应用。本发明各个实施例提供的渠道号添加方法均由该应用市场服务器220执行。
应用市场服务器220通过有线网络或无线网络与用户终端230相连。
用户终端230是运行有Android系统的电子设备,该电子设备为智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)或MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器。
当用户需要下载Android应用时,即使用用户终端230访问应用市场服务器220对应的应用市场,并从应用市场服务器220处下载Android应用对应的APK文件。获取到APK文件后,用户终端230需要根据APK文件中的校验信息对APK文件进行校验,并在APK文件通过校验时对该APK文件进行解析安装。本发明各个实施例提供的安装包校验方法均由该用户终端230执行。
需要说明的是,由于用户终端230解析安装的APK文件采用v2版签名,因此,用户终端230运行的Android系统的版本高于或等于Android 7.0。
可选地,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible MarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet ProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
APK文件本质上是一种Zip压缩文件,其文件结构符合Zip压缩文件的文件结构,其中,经过v2版签名前后APK文件的APK文件结构如图1所示。
在v2版签名前,APK文件包括数据区块11、目录区块12以及目录结束标识区块13。数据区块11用于存储压缩后的文件数据,且各个文件数据与APK文件中的压缩文件相对应;目录区块12用于指示各个文件数据在APK文件中的位置,其中,目录区块12根据记录的entity_offset(实体偏移值)定位各个压缩文件对应的文件数据;目录结束标识区块13则用于指示目录区块12在APK文件中的位置并存储APK文件的附加信息,其中,目录结束标识区块13根据记录的cdfh_offset(目录偏移值)定位目录区块12。
而经过v2版签名后,APK文件中新增了签名区块14,该签名区块14中包含应用开发商设置的签名信息以及用于校验APK文件的校验信息。具体的,该校验信息包括v2版签名前各个区块各自对应的信息摘要。需要说明的是,由于APK文件中新增了签名区块14,导致目录区块12的偏移值发生变化,因此在进行v2版签名时,目录结束标识区块13中的目录偏移值需要进行相应更新。
在对经过v2版签名后的APK文件进行校验时,终端首先利用签名区块14的数据量对目录结束标识区块13中的目录偏移值进行还原(还原为v2版签名前的目录偏移值),再根据签名区块14中包含的检验信息分别对数据区块11、目录区块12以及还原后的目录结束标识区块13进行校验,并在三者均通过校验时,确定该APK文件通过校验。
针对经过v2版签名的APK文件,当应用市场服务器采用注入channel文件的方式添加渠道号时,应用市场服务器首先需要对APK文件进行解压,然后向解压后APK文件中注入channel文件,并最终对注入channel文件后的APK文件进行重新压缩。显然,由于重新压缩后的APK文件中新增了channel文件,导致APK文件的数据区块11以及目录区块12均发生变化,当使用签名区块14中的校验信息对APK文件进行校验时,数据区块11以及目录区块12将无法通过校验。
当应用市场服务器采用向zip info中注入channel信息的方式添加渠道号时,应用市场服务器首先需要查找APK文件中目录结束标识区块13包含zip info数据段,并解析zip info数据段的数据结构,从而将渠道号写入zip info数据段中。显然,在zip info数据段中新增渠道号后,APK文件的目录结束标识区块13发生了变化,当使用签名区块14中的校验信息对APK文件进行校验时,目录结束标识区块13将无法通过校验。
显然,通过上述两种方式向v2版签名的APK文件中添加渠道号后,APK文件无法通过校验,进而导致Android应用无法正常安装。
而本发明各个实施例提供的渠道号添加方法中,应用市场服务器通过将渠道号添加到无需进行校验的签名区块中,并对目录结束标识区块中的目录偏移值进行相应调整,从而确保添加渠道号后的APK文件中,数据区块与目录区块的内容均未发生变化,且对目录结束标识区块中目录偏移值经过还原后,目录结束标识区块的内容也未发生变化,使得数据区块、签名区块以及目录结束标识区块均能够通过校验,进而实现了Android应用的正常安装。下面采用示意性的实施例进行说明。
请参考图3,其示出了本发明一个实施例提供的渠道号添加方法的流程图,本实施例以该渠道号添加方法用于图2所示的应用市场服务器220为例进行说明,该方法包括:
步骤301,对APK文件进行解析,获取APK文件的签名区块,签名区块中签名信息和校验信息。
在一种可能的实施方式中,应用市场服务器根据预设关键字识别APK文件的签名区块,比如,v2版签名APK文件中,新增的签名区块以“APK Sig Block 42”开头,则该预设关键字为“APK Sig Block 42”。
其中,该签名区块由应用开发商对APK文件进行v2版签名后生成,且签名信息用于指示应用开发商,校验信息用于对APK文件的数据区块、目录区块和目录结束标识区块进行校验。
可选的,该校验信息中包括v2版签名前数据区块、目录区块和目录结束标识区块各自对应的MD5(Message-Digest Algorithm 5,第五版信息摘要算法)值或SHA1(SecureHash Algorithm,安全哈希算法)值。
可选的,应用市场服务器还具有APK文件辨别功能,通过该辨别功能,应用市场服务器可以对接收到的APK文件的签名类型进行辨别。在一种可能的实施方式中,应用市场服务器对APK文件进行解析,并检测该APK文件中是否包含签名区块标识,若该APK文件中不包含签名区块标识,则确定该APK文件采用v1版签名;若该APK文件中包含签名区块标识,则确定该APK文件采用v2版签名,并进一步获取签名区块。
步骤302,向签名区块中添加目标渠道号,目标渠道号与发布该APK文件的应用发布方对应。
其中,不同应用发布方(应用市场)对应的渠道号各不相同。比如,应用市场A对应的渠道号为“Market_A”,应用市场B对应的渠道号为“Market_B”。
步骤303,计算添加目标渠道号前后签名区块的数据变化量。
由于向签名区块中添加了目标渠道号,因此签名区块的数据量发生了变化,进而导致目录区块的偏移值也发生了变化。为了确保目录结束标识区块中偏移字段(用于记录目录区块的偏移值)的准确性,应用市场服务器需要计算添加目标渠道号前后签名区块的数据变化量,从而根据该数据变化量对目录结束标识区块的偏移字段进行更新。
比如,添加渠道号前,签名区块的数据量为20字节,而添加渠道号后,签名区块的数据量为25字节,则签名区块的数据变化量为25-20=5字节。
步骤304,根据数据变化量更新APK文件中包含的偏移字段,该偏移字段位于目录结束标识区块,目录结束标识区块用于通过偏移字段指示目录区块在APK文件中所处的位置,目录区块用于指示数据区块中各个文件数据的位置。
进一步的,应用市场服务器根据签名区块的数据变化量,对目录结束标识区块包含的偏移字段进行更新。
比如,添加渠道号前,数据区块的数据量为100字节,签名区块的数据量为20字节,目录结束标识区块中偏移字段的偏移值为100+20=120字节;而添加渠道号后,签名区块的数据量增加了5字节,则偏移字段的偏移值更新为1120+5=125字节。
在一种可能的实施方式中,应用开发商终端提供给应用市场服务器的APK文件中已经包含渠道号,在这种情况下,应用市场服务器需要对已包含的渠道号进行删除,并重新将自身的渠道号添加到APK文件中,下面采用一个示意性的实施例进行说明。
请参考图4A,其示出了本发明另一个实施例提供的渠道号添加方法的流程图,本实施例以该渠道号添加方法用于图2所示的应用市场服务器220为例进行说明,该方法包括:
步骤401,对APK文件进行解析,获取APK文件的签名区块,签名区块中签名信息和校验信息。
本步骤的实施方式与上述步骤301相似,本实施例在此不再赘述。
步骤402,检测签名区块中是否包含历史渠道号。
获取到APK文件的签名区块后,应用市场服务器检测该签名区块中是否已包含渠道号,若该签名区块中不包含渠道号,则执行下述步骤403至405;若该签名区块中已包含渠道号,则执行下述步骤406至408。
在一种可能的实施方式中,渠道号采用预定格式的数据对表示,该预定格式的数据对中包括预设标识字段和渠道号值,即渠道号采用ID-value的数据对进行表示。相应的,应用市场服务器通过如下步骤检测签名区块中是否包含历史渠道号。
一、检测签名区块中是否包含预设标识字段。
应用市场服务器对签名区块中包含的信息进行遍历,检测签名区块中是否包含预设标识字段。比如,该预设标识字段为0x79646e61。
二、若签名区块中不包含预设标识字段,则确定签名区块中不包含历史渠道号。
当检测到签名块中不包含预设标识字段时,应用市场服务器确定签名区块中不包含历史渠道号,即该APK文件尚未添加渠道号。
三、若签名区块中包含预设标识字段,则确定签名区块中包含历史渠道号。
当检测到签名块中包含预设标识字段时,应用市场服务器确定签名区块中包含历史渠道号,即该APK文件已添加渠道号,并通过下述步骤403至405向APK文件中添加目标渠道号。
可选的,当确定签名区块中包含历史渠道号时,应用市场服务器将该历史渠道号与自身的渠道号进行比较,并在比较结果指示两者不同时,通过下述步骤406至408对APK文件中已有渠道号进行更新。
步骤403,当签名区块中不包含历史渠道号时,向签名区块中添加目标渠道号。
当签名区块中不包含历史渠道号时,应用市场服务器将目标渠道号写入签名区块中。本发明实施例并不对目标渠道号写入签名区块的具体位置进行限定。
可选的,当渠道号采用预设标识字段和渠道号值的数据对表示时,应用市场服务器即将该目标渠道号对应的数据对写入签名区块,比如,应用市场服务器写入的目标渠道号为:0x79646e61-Market_A。
示意性的,如图4B所示,当应用市场服务器将渠道号写入签名区块的末尾。
步骤404,计算目标渠道号的数据量。
将目标渠道号写入签名区块后,应用市场服务器进一步计算添加渠道号后签名区块的数据变化量。由于该APK文件中未包含历史渠道号,因此,添加目标渠道号后签名区块的数据变化量即为目标渠道号的数据量。
比如,如图4B所示,应用市场服务器计算得到添加的渠道号为5字节。
步骤405,将目标渠道号的数据量确定为数据变化量。
进一步的,应用市场服务器将目标渠道号的数据量确定为签名区块的数据变化量后,并通过下述步骤409和410对目录结束标识区块中的偏移字段进行更新。
步骤406,当签名区块中包含历史渠道号时,删除历史渠道号,并向签名区块中添加目标渠道号。
当签名区块中包含历史渠道号,且该历史渠道号与待添加的目标渠道号不一致时,为了避免混乱,应用市场服务器首先需要将历史渠道号进行删除,再将目标渠道号添加到签名区块中。
可选的,当渠道号采用预设标识字段和渠道号值的数据对表示时,应用市场服务器检测到签名区块中包含预设标识字段,且预设标识字段对应的渠道号值域目标渠道号的渠道号值不同时,对历史渠道号对应的数据对进行删除,并将目标渠道号对应的数据对写入签名区块。
比如,待写入的目标渠道号为0x79646e61-Market_A,当检测到签名区块中包括历史渠道号0x79646e61-Market_B时,应用市场服务器将0x79646e61-Market_B替换为0x79646e61-Market_A。
步骤407,计算历史渠道号与目标渠道号的数据量差值。
由于不同渠道号对应的数据量有所不同,因此将历史渠道号替换为目标渠道号后,签名区块的数据量也会发生相应变化,且签名区块的数据量变化量即为历史渠道号与目标渠道号的数据量差值,即数据量差值=目标渠道号的数据量-历史渠道号的数据量。其中,当目标渠道号的数据量大于历史渠道号的数据量时,该数据量差值大于0,当目标渠道号的数据量小于历史渠道号的数据量时,该数据量差值小于0,当当目标渠道号的数据量等于历史渠道号的数据量时,该数据量差值等于0。
比如,应用市场服务器获取到历史渠道号的数据量为6字节,且目标渠道号的数据量为7字节,则该数据量差值为1字节。
步骤408,将数据量差值确定为数据变化量。
进一步的,应用市场服务器将计算得到的数据量差值确定为签名区块的数据变化量,并通过下述步骤409和410对目录结束标识区块中的偏移字段进行更新。需要说明的是,当该数据量差值为0时,应用市场服务器即完成渠道号添加,并跳过执行下述步骤409至412。
步骤409,获取目录结束标识区块的偏移字段中包含的原始偏移值。
通过上述步骤403至步骤405或步骤406至408,应用市场服务器完成渠道号的添加或替换,且签名区块的数据量发生变化时,APK文件中目录区块的偏移值也将发生相应变化。
如图4B所示,添加渠道号前,目录区块在APK文件中的偏移值为120字节(数据区块与签名区块的数据量之和);而在添加渠道号后,目录区块在APK文件中的偏移值变更为125字节。
为了确保后续用户终端对APK文件进行解析时,能够根据目录结束标识区块中的偏移字段准确定位目录区块在APK文件中的位置,应用市场服务器需要进一步对目录结束标识区块的偏移字段进行更新。
在一种可能的实施方式中,由于目录区块的前部仅签名区块的数据量发生变化,即目录区块偏移值的变化量即为签名区块的数据变化量,因此,应用市场服务器获取偏移字段中包含的原始偏移值,并利用上述步骤405或408确定出数据变化量对偏移字段的原始偏移值进行更新。
比如,如图4B所示,应用市场服务器获取到目录结束标识区块偏移字段中包含的原始偏移值为120字节。
步骤410,根据原始偏移值和数据变化量更新该偏移字段。
进一步的,应用市场服务器根据获取到的原始偏移值和签名区块的数据变化量更新该偏移字段。其中,更新后偏移字段的偏移值=原始偏移值+数据变化量。
比如,如图4B所示,应用市场服务器获取到原始偏移值为120字节,且签名区块的数据变化量为5字节,则将偏移字段的偏移值更新为120+5=125字节。
步骤411,根据签名区块的第一原始数据量和数据变化量更新签名区块的数据量字段。
为了确保添加(或更新)渠道号后,签名区块中数据量字段的准确性,应用市场服务器还需要根据签名区块的第一原始数据量以及签名区块的数据变化量对数据量字段进行更新。
在一种可能的实施方式中,应用市场服务器对签名区块的第一原始数据量和数据变化量进行加法运算,并根据加法运算结果对签名区块的数据量字段进行更新,即更新后数据量字段对应的数据量=第一原始数据量+数据变化量。
比如,如图4B所示,应用市场服务器根据20字节(第一原始数据量)和5字节(数据变化量),将签名区块的数据量字段更新为25字节。
步骤412,根据APK文件的第二原始数据量和数据变化量调整APK文件的数据量。
与上述步骤411相似的,由于应用市场服务器仅对APK文件进行了解析操作,而并未对其进行解压,因此,向APK文件中添加渠道号后,APK文件的数据量不会自动进行更新。为了确保APK文件数据量的准确性,在一种可能的实施方式中,应用市场服务器需要对APK文件的第二原始数据量和签名区块的数据变化量进行加法运算,并根据加法运算结果调整APK文件的数据量,即调整后APK文件的数据量=第二原始数据量+数据变化量。
比如,如图4B所示,应用市场服务器根据165字节(第二原始数据量)和5字节(数据变化量),将APK文件的数据量调整为170字节。
本实施例中,应用市场服务器向APK文件中添加渠道号或更新APK文件中的渠道号后,自动对签名区块的数据量字段以及APK文件的数据量进行更新,确保添加(或更新)渠道号后APK文件中各数据字段的准确性,避免后续因数据字段错误导致的解析异常。
通过上述图3和图4A所示的实施例,应用市场服务器完成对APK文件的渠道号添加(或更新)操作。当用户终端从应用市场下载APK文件后,即对该APK文件进行校验安装。下面采用示意性的实施例对用户终端校验APK文件(经过上述实施例添加渠道号后)的过程进行说明。
请参考图5A,其示出了本发明一个实施例提供的安装包校验方法的流程图,本实施例以该安装包校验方法用于图2所示的用户终端230为例进行说明,该方法包括:
步骤501,对APK文件进行解析,获取APK文件的签名区块,签名区块中包括签名信息、校验信息和渠道号。
在一种可能的实施方式中,应用市场服务器根据预设关键字识别APK文件的签名区块,比如,该预设关键字为“APK Sig Block 42”。
其中,签名区块中的签名信息和校验信息由应用开发商对APK文件进行v2版签名后生成,签名区块中的渠道号由应用市场服务器添加。
步骤502,获取APK文件中包含的偏移字段,偏移字段位于目录结束标识区块,目录结束标识区块用于通过偏移字段指示目录区块在APK文件中所处的位置,目录区块用于指示数据区块中各个文件数据的位置。
在一种可能的实施方式中,用户终端从APK文件的尾部开始扫描,获取目录结束标识区块,并从中获取偏移字段。其中,该偏移字段即指示添加渠道号后目录区块在APK文件中所处的位置。
比如,如图5B所示,用户终端从(经过v2版签名并添加渠道号后)APK文件的目录结束标识区块中获取到偏移字段为125字节。
步骤503,根据偏移字段对应的偏移值和签名区块的数据量,还原目录结束标识区块,还原后的目录结束标识区块与签名前APK文件的目录结束标识区块一致。
由于对APK文件进行v2版签名及添加渠道号时,APK文件中目录结束标识区块中的偏移字段发生了变更(由于增加了签名区块导致目录区块的偏移值发生变化),因此,对经过v2版签名并添加渠道号的APK文件进行校验前时,移动终端首先需要根据偏移字段当前对应的偏移值和签名区块的数据量,对目录结束标识区块的偏移字段进行还原,从而检测还原后的目录结束标识区块与v2版签名前APK文件的目录结束标识区块是否一致。
在一种可能的实施方式中,如图5C所示,本步骤包括如下步骤。
步骤503A,利用偏移值减去数据量,得到还原后的偏移字段。
由于添加签名和渠道号后,目录结束标识区块中仅偏移字段发生变更,且偏移字段的变更与APK文件中新增签名区块的数据量相关,因此,在还原目录结束标识区块时,仅需要对目录结束标识区块中的偏移字段进行还原。
在一种可能的实施方式中,用户终端利用偏移字段中的偏移值减去签名区块的数据量,从而得到还原后的偏移字段,该还原后的偏移字段即用于指示除去签名区块后目录区块的偏移值。
比如,如图5B所示,用户终端获取到目录结束标识区块中偏移字段当前的偏移值为125字节,且签名区块的数据量为25字节,则计算得到还原后的偏移字段的偏移值为125-25=100字节。
步骤503B,根据还原后的偏移字段生成还原后的目录结束标识区块。
还原目标结束标识区域中的偏移字段后,用户终端利用还原后的偏移字段生成还原后的目录结束标识区块。
在一种可能的实施方式中,用户终端利用还原后的偏移字段替换目录结束标识区块中当前的偏移字段,从而得到还原后的目录结束标识区块。
比如,如图5B所示,还原前的APK文件与还原后的APK文件相比,仅目录结束标识区块中的偏移字段发生变化(125字节变为100字节)。
步骤504,根据校验信息对数据区块、目录区块以及还原后的目录结束标识区块进行校验。
进一步的,完成目录结束标识区块还原后,用户终端进一步利用签名区块中的校验信息分别对数据区块、目录区块以及还原后的目录结束标识区块进行校验,检测上述三者的内容是否与v2版签名前保持一致。
当三者的内容与v2版签名前保持一致时,用户终端确定该APK文件未被非法篡改,从而进一步对APK文件进行解析安装;当三者的内容与v2版签名前保持不一致时,用户终端确定该APK文件被非法篡改,从而停止对该APK文件进行解析安装。本发明实施例不再对用户终端安装APK文件的过程进行赘述。
在一种可能的实施方式中,签名区块中的校验信息包含v2版签名前数据区块的第一信息摘要、v2版签名前目录区块的第二信息摘要以及v2版签名前目录结束标识区块的第三信息摘要,当检测上述三者的内容是否与v2版签名前一致时,即根据第一信息摘要对v2版签名后的数据区块进行校验,根据第二信息摘要对v2版签名后目录区块进行校验,根据第三信息摘要对还原后的目录结束标识区块进行校验。其中,第一、二、三信息摘要为对应区块的MD5值或SHA1值。
APK文件经过图3或图4A所示渠道号添加方法添加渠道号后,数据区块与v2版签名前APK文件的数据区块完全相同,目录区块与v2版签名前APK文件的目录区块完全相同,且还原后目录结束标识区块与v2版签名前APK文件的目录结束标识区块完全相同,因此该APK文件能够通过校验,从而确保APK文件的正常安装。
下述为本发明装置实施例,对于装置实施例中未详尽描述的细节,可以参考上述一一对应的方法实施例。
请参考图6,其示出了本发明一个实施例提供的渠道号添加装置的结构方框图。该渠道号添加装置通过硬件或者软硬件的结合实现成为图2中应用市场服务器220的全部或者一部分。该渠道号添加装置包括:第一解析模块610、添加模块620、计算模块630和第一更新模块640。
第一解析模块610,用于实现上述步骤301或401的功能。
添加模块620,用于实现上述步骤302的功能;
计算模块630,用于实现上述步骤303的功能;
第一更新模块640,用于实现上述步骤304的功能。
可选的,该装置,包括:
检测模块,用于实现上述步骤402的功能;
添加模块620,还用于实现上述步骤403或406的功能。
可选的,计算模块630,包括:第一计算单元或第二计算单元;
第一计算单元,用于实现上述步骤404和405的功能;
第二计算单元,用于实现上述步骤407和408的功能。
可选的,渠道号采用预定格式的数据对表示,所述预定格式的数据对中包括预设标识字段和渠道号值;
检测模块,包括:
检测单元,用于检测所述签名区块中是否包含所述预设标识字段;
第一确定单元,用于当所述签名区块中不包含所述预设标识字段时,确定所述签名区块中不包含所述历史渠道号;
第二确定单元,用于当所述签名区块中包含所述预设标识字段时,确定所述签名区块中包含所述历史渠道号。
可选的,第一更新模块640,包括:获取单元和更新单元;
获取单元,用于实现上述步骤409的功能;
更新单元,用于实现上述步骤410的功能。
可选的,该装置,还包括:第二更新模块和调整模块;
第二更新模块,用于实现上述步骤411的功能;
调整模块,用于实现上述步骤412的功能。
请参考图7,其示出了本发明一个实施例提供的安装包校验装置的结构方框图。该安装包校验装置通过硬件或者软硬件的结合实现成为图2中用户终端230的全部或者一部分。该安装包校验装置包括:第二解析模块710、获取模块720、还原模块730和校验模块740。
第二解析模块710,用于实现上述步骤501的功能;
获取模块720,用于实现上述步骤502的功能;
还原模块730,用于实现上述步骤503的功能;
校验模块740,用于实现上述步骤504的功能。
可选的,还原模块730,包括:还原单元和生成单元
还原单元,用于实现上述步骤503A的功能;
生成单元,用于实现上述步骤503B的功能。
请参考图8,其示出了本发明一个实施例提供的服务器的结构方框图。该服务器800实现为图2中的应用市场服务器220。具体来讲:
服务器800包括中央处理单元(CPU)801、包括随机存取存储器(RAM)802和只读存储器(ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。所述服务器800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)806,和用于存储操作系统813、应用程序814和其他程序模块815的大容量存储设备807。
所述基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中所述显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。所述基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读介质为服务器800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
根据本发明的各种实施例,所述服务器800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器800可以通过连接在所述系统总线805上的网络接口单元811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本发明实施例提供的渠道号添加方法的指令。
本领域普通技术人员可以理解上述实施例的渠道号添加方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
请参考图9,其示出了本发明一个实施例提供的终端的结构示意图。该终端900为图2中的用户终端230。具体来讲:
终端900可以包括RF(Radio Frequency,射频)电路910、包括有一个或一个以上计算机可读存储介质的存储器920、输入单元930、显示单元940、传感器950、音频电路960、近场通信模块970、包括有一个或者一个以上处理核心的处理器980、以及电源990等部件。本领域技术人员可以理解,图9中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路910可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器980处理;另外,将涉及上行的数据发送给基站。通常,RF电路910包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路910还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器920可用于存储软件程序以及模块,处理器980通过运行存储在存储器920的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器920可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端900的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器920还可以包括存储器控制器,以提供处理器980和输入单元930对存储器920的访问。
输入单元930可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元930可包括图像输入设备931以及其他输入设备932。图像输入设备931可以是摄像头,也可以是光电扫描设备。除了图像输入设备931,输入单元930还可以包括其他输入设备932。具体地,其他输入设备932可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元940可用于显示由用户输入的信息或提供给用户的信息以及终端600的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元940可包括显示面板941,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板941。
终端900还可包括至少一种传感器950,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板941的亮度,接近传感器可在终端900移动到耳边时,关闭显示面板941和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端900还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路960、扬声器961,传声器962可提供用户与终端900之间的音频接口。音频电路960可将接收到的音频数据转换后的电信号,传输到扬声器961,由扬声器961转换为声音信号输出;另一方面,传声器962将收集的声音信号转换为电信号,由音频电路960接收后转换为音频数据,再将音频数据输出处理器980处理后,经RF电路910以发送给比如另一电子设备,或者将音频数据输出至存储器920以便进一步处理。音频电路960还可能包括耳塞插孔,以提供外设耳机与终端900的通信。
终端900通过近场通信模块970与外部设备建立近场通信连接,并通过该近场通信连接进行数据交互。本实施例中,该近场通信模块970具体包括蓝牙模块和/或WiFi模块。
处理器980是终端900的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器920内的软件程序和/或模块,以及调用存储在存储器920内的数据,执行终端900的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器980可包括一个或多个处理核心;优选的,处理器980可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器980中。
终端900还包括给各个部件供电的电源990(比如电池),优选的,电源可以通过电源管理系统与处理器980逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源990还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端900还可以包括蓝牙模块等,在此不再赘述。
具体在本实施例中,终端900还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行以实现上述安装包校验方法。
本领域普通技术人员可以理解上述实施例的安装包校验方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种渠道号添加方法,其特征在于,所述方法包括:
对安卓安装包APK文件进行解析,获取所述APK文件的签名区块,所述签名区块中包括签名信息和校验信息;
向所述签名区块中添加目标渠道号,所述目标渠道号与发布所述APK文件的应用发布方对应;
计算添加所述目标渠道号前后所述签名区块的数据变化量;
根据所述数据变化量更新所述APK文件中包含的偏移字段,所述偏移字段位于目录结束标识区块,所述目录结束标识区块用于通过所述偏移字段指示目录区块在所述APK文件中所处的位置,所述目录区块用于指示数据区块中各个文件数据的位置。
2.根据权利要求1所述的方法,其特征在于,所述向所述签名区块中添加目标渠道号之前,还包括:
检测所述签名区块中是否包含历史渠道号;
当所述签名区块中不包含所述历史渠道号时,执行所述向所述签名区块中添加目标渠道号的步骤;
当所述签名区块中包含所述历史渠道号时,删除所述历史渠道号,并执行所述向所述签名区块中添加目标渠道号的步骤。
3.根据权利要求2所述的方法,其特征在于,所述计算添加所述目标渠道号前后所述签名区块的数据变化量,包括:
当所述签名区块中不包含所述历史渠道号时,计算所述目标渠道号的数据量;将所述目标渠道号的数据量确定为所述数据变化量;
或,
当所述签名区块中包含所述历史渠道号时,计算所述历史渠道号与所述目标渠道号的数据量差值;将所述数据量差值确定为所述数据变化量,
其中,所述数据量差值=所述目标渠道号的数据量-所述历史渠道号的数据量。
4.根据权利要求2或3所述的方法,其特征在于,渠道号采用预定格式的数据对表示,所述预定格式的数据对中包括预设标识字段和渠道号值;
所述检测所述签名区块中是否包含历史渠道号,包括:
检测所述签名区块中是否包含所述预设标识字段;
若所述签名区块中不包含所述预设标识字段,则确定所述签名区块中不包含所述历史渠道号;
若所述签名区块中包含所述预设标识字段,则确定所述签名区块中包含所述历史渠道号。
5.根据权利要求1至3任一所述的方法,其特征在于,所述根据所述数据变化量更新所述APK文件中包含的偏移字段,包括:
获取所述偏移字段中包含的原始偏移值;
根据所述原始偏移值和所述数据变化量更新所述偏移字段。
6.根据权利要求1至3任一所述的方法,其特征在于,所述计算添加所述目标渠道号前后所述签名区块的数据变化量之后,还包括:
根据所述签名区块的第一原始数据量和所述数据变化量更新所述签名区块的数据量字段;
根据所述APK文件的第二原始数据量和所述数据变化量调整所述APK文件的数据量。
7.一种安装包校验方法,其特征在于,所述方法包括:
对安卓安装包APK文件进行解析,获取所述APK文件的签名区块,所述签名区块中包括签名信息、校验信息和渠道号;
获取所述APK文件中包含的偏移字段,所述偏移字段位于目录结束标识区块,所述目录结束标识区块用于通过所述偏移字段指示目录区块在所述APK文件中所处的位置,所述目录区块用于指示数据区块中各个文件数据的位置;
根据所述偏移字段对应的偏移值和所述签名区块的数据量,还原所述目录结束标识区块,还原后的所述目录结束标识区块与签名前所述APK文件的目录结束标识区块一致;
根据所述校验信息对所述数据区块、所述目录区块以及还原后的所述目录结束标识区块进行校验。
8.根据权利要求7所述的方法,其特征在于,所述根据所述偏移字段对应的偏移值和所述签名区块的数据量,还原所述目录结束标识区块,包括:
利用所述偏移值减去所述数据量,得到还原后的所述偏移字段;
根据还原后的所述偏移字段生成还原后的所述目录结束标识区块。
9.根据权利要求7或8所述的方法,其特征在于,所述校验信息中包含签名前数据区块的第一信息摘要、签名前目录区块的第二信息摘要以及签名前目录结束标识区块的第三信息摘要;
所述根据所述校验信息对所述数据区块、所述目录区块以及还原后的所述目录结束标识区块进行校验,包括:
根据所述第一信息摘要对签名后的所述数据区块进行校验;
根据所述第二信息摘要对签名后的所述目录区块进行校验;
根据所述第三信息摘要对还原后的所述目录结束标识区块进行校验。
10.一种渠道号添加装置,其特征在于,所述装置包括:
第一解析模块,用于对安卓安装包APK文件进行解析,获取所述APK文件的签名区块,所述签名区块中包括签名信息和校验信息;
添加模块,用于向所述签名区块中添加目标渠道号,所述目标渠道号与发布所述APK文件的应用发布方对应;
计算模块,用于计算添加所述目标渠道号前后所述签名区块的数据变化量;
第一更新模块,用于根据所述数据变化量更新所述APK文件中包含的偏移字段,所述偏移字段位于目录结束标识区块,所述目录结束标识区块用于通过所述偏移字段指示目录区块在所述APK文件中所处的位置,所述目录区块用于指示数据区块中各个文件数据的位置。
11.根据权利要求10所述的装置,其特征在于,所述装置,还包括:
检测模块,用于检测所述签名区块中是否包含历史渠道号;
所述添加模块,用于当所述签名区块中不包含所述历史渠道号时,向所述签名区块中添加所述目标渠道号;
所述添加模块,还用于当所述签名区块中包含所述历史渠道号时,删除所述历史渠道号,并向所述签名区块中添加所述目标渠道号。
12.根据权利要求11所述的装置,其特征在于,所述计算模块,包括:
第一计算单元,用于当所述签名区块中不包含所述历史渠道号时,计算所述目标渠道号的数据量;将所述目标渠道号的数据量确定为所述数据变化量;
或,
第二计算单元,用于当所述签名区块中包含所述历史渠道号时,计算所述历史渠道号与所述目标渠道号的数据量差值;将所述数据量差值确定为所述数据变化量,
其中,所述数据量差值=所述目标渠道号的数据量-所述历史渠道号的数据量。
13.根据权利要求11或12所述的装置,其特征在于,渠道号采用预定格式的数据对表示,所述预定格式的数据对中包括预设标识字段和渠道号值;
所述检测模块,包括:
检测单元,用于检测所述签名区块中是否包含所述预设标识字段;
第一确定单元,用于当所述签名区块中不包含所述预设标识字段时,确定所述签名区块中不包含所述历史渠道号;
第二确定单元,用于当所述签名区块中包含所述预设标识字段时,确定所述签名区块中包含所述历史渠道号。
14.根据权利要求10至12任一所述的装置,其特征在于,所述第一更新模块,包括:
获取单元,用于获取所述偏移字段中包含的原始偏移值;
更新单元,用于根据所述原始偏移值和所述数据变化量更新所述偏移字段。
15.根据权利要求10至12任一所述的装置,其特征在于,所述装置,还包括:
第二更新模块,用于根据所述签名区块的第一原始数据量和所述数据变化量更新所述签名区块的数据量字段;
调整模块,用于根据所述APK文件的第二原始数据量和所述数据变化量调整所述APK文件的数据量。
16.一种安装包校验装置,其特征在于,所述装置包括:
第二解析模块,用于对安卓安装包APK文件进行解析,获取所述APK文件的签名区块,所述签名区块中包括签名信息、校验信息和渠道号;
获取模块,用于获取所述APK文件中包含的偏移字段,所述偏移字段位于目录结束标识区块,所述目录结束标识区块用于通过所述偏移字段指示目录区块在所述APK文件中所处的位置,所述目录区块用于指示数据区块中各个文件数据的位置;
还原模块,用于根据所述偏移字段对应的偏移值和所述签名区块的数据量,还原所述目录结束标识区块,还原后的所述目录结束标识区块与签名前所述APK文件的目录结束标识区块一致;
校验模块,用于根据所述校验信息对所述数据区块、所述目录区块以及还原后的所述目录结束标识区块进行校验。
17.根据权利要求16所述的装置,其特征在于,所述还原模块,包括:
还原单元,用于利用所述偏移值减去所述数据量,得到还原后的所述偏移字段;
生成单元,用于根据还原后的所述偏移字段生成还原后的所述目录结束标识区块。
18.根据权利要求16或17所述的装置,其特征在于,所述校验信息中包含签名前数据区块的第一信息摘要、签名前目录区块的第二信息摘要以及签名前目录结束标识区块的第三信息摘要;
所述校验模块,包括:
第一校验单元,用于根据所述第一信息摘要对签名后的所述数据区块进行校验;
第二校验单元,用于根据所述第二信息摘要对签名后的所述目录区块进行校验;
第三校验单元,用于根据所述第三信息摘要对还原后的所述目录结束标识区块进行校验。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611260395.4A CN108280341B (zh) | 2016-12-30 | 2016-12-30 | 渠道号添加、安装包校验方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611260395.4A CN108280341B (zh) | 2016-12-30 | 2016-12-30 | 渠道号添加、安装包校验方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108280341A CN108280341A (zh) | 2018-07-13 |
CN108280341B true CN108280341B (zh) | 2020-06-30 |
Family
ID=62800318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611260395.4A Active CN108280341B (zh) | 2016-12-30 | 2016-12-30 | 渠道号添加、安装包校验方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108280341B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110401717A (zh) * | 2019-07-26 | 2019-11-01 | 上海优扬新媒信息技术有限公司 | 一种应用程序安装包生成方法及装置 |
CN112306553B (zh) * | 2019-07-29 | 2024-06-04 | 腾讯科技(深圳)有限公司 | 安装包文件中扩展信息的处理方法、装置、及电子设备 |
CN112446723A (zh) * | 2019-09-02 | 2021-03-05 | 腾讯科技(深圳)有限公司 | 确定用户邀请关系的方法、计算机可读存储介质和设备 |
CN112698842A (zh) * | 2019-10-22 | 2021-04-23 | 北京国双科技有限公司 | 获取应用程序的额外信息的方法及装置 |
CN111240735B (zh) * | 2020-01-17 | 2023-11-28 | 北京小米移动软件有限公司 | 应用打包方法、应用打包装置及存储介质 |
CN112699394B (zh) * | 2021-01-13 | 2022-11-25 | 北卡科技有限公司 | 一种基于sm9算法的密钥应用方法 |
CN113127005B (zh) * | 2021-05-08 | 2024-05-24 | 抖音视界有限公司 | 一种可执行文件生成的方法、装置以及计算机存储介质 |
CN115543409B (zh) * | 2022-11-07 | 2024-06-28 | 北京有竹居网络技术有限公司 | 应用的安装来源确定方法、装置、可读介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103036678A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 一种Symbian签名应用认证的方法和系统 |
CN103064666A (zh) * | 2012-11-30 | 2013-04-24 | 北京奇虎科技有限公司 | 一种多渠道软件发布方法和系统 |
CN104346167A (zh) * | 2014-08-25 | 2015-02-11 | 腾讯科技(深圳)有限公司 | 生成应用渠道包的方法及装置 |
CN104899025A (zh) * | 2015-05-18 | 2015-09-09 | 北京奇虎科技有限公司 | 一种生成渠道包的方法和装置 |
CN105631361A (zh) * | 2014-10-28 | 2016-06-01 | 中国移动通信集团终端有限公司 | 一种应用程序渠道来源标识方法及装置 |
CN106126205A (zh) * | 2016-06-14 | 2016-11-16 | 武汉斗鱼网络科技有限公司 | 一种安卓程序安装包的快速批量生成方法及系统 |
-
2016
- 2016-12-30 CN CN201611260395.4A patent/CN108280341B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103036678A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 一种Symbian签名应用认证的方法和系统 |
CN103064666A (zh) * | 2012-11-30 | 2013-04-24 | 北京奇虎科技有限公司 | 一种多渠道软件发布方法和系统 |
CN104346167A (zh) * | 2014-08-25 | 2015-02-11 | 腾讯科技(深圳)有限公司 | 生成应用渠道包的方法及装置 |
CN105631361A (zh) * | 2014-10-28 | 2016-06-01 | 中国移动通信集团终端有限公司 | 一种应用程序渠道来源标识方法及装置 |
CN104899025A (zh) * | 2015-05-18 | 2015-09-09 | 北京奇虎科技有限公司 | 一种生成渠道包的方法和装置 |
CN106126205A (zh) * | 2016-06-14 | 2016-11-16 | 武汉斗鱼网络科技有限公司 | 一种安卓程序安装包的快速批量生成方法及系统 |
Non-Patent Citations (1)
Title |
---|
Android的APK Signature Scheme v2签名及一款基于;子勰的博客;《https://blog.bihe0832.com/android-v2-signature.html》;20161227;1-13页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108280341A (zh) | 2018-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108280341B (zh) | 渠道号添加、安装包校验方法及装置 | |
CN107786504B (zh) | Elf文件发布方法、elf文件校验方法、服务器及终端 | |
WO2021114918A1 (zh) | 完整性校验方法、装置、终端设备及验证服务器 | |
CN112865956B (zh) | 证书更新方法、装置、终端设备和服务器 | |
CN108241500B (zh) | 一种硬件组件的修复方法、装置、系统和存储介质 | |
CN108804130B (zh) | 程序安装包生成方法及装置 | |
CN107273160A (zh) | 一种版本升级的方法及装置 | |
WO2019076293A1 (zh) | 一种差分升级的方法、装置及系统 | |
CN110058850B (zh) | 一种应用的开发方法、装置以及存储介质 | |
CN109726067B (zh) | 一种进程监控方法以及客户端设备 | |
CN104252364A (zh) | 增量更新的方法、设备及系统 | |
CN110196795B (zh) | 检测移动终端应用运行状态的方法及相关装置 | |
CN107103211B (zh) | Sdk发送、应用发布、应用运行方法及装置 | |
CN103455343A (zh) | 一种更新应用程序的方法和装置 | |
CN110865837B (zh) | 一种进行系统升级的方法和终端 | |
CN104536782B (zh) | 引导内容展示方法、文件生成方法及装置 | |
CN107844318B (zh) | 一种操作系统的升级方法及移动终端和服务器 | |
EP2869604A1 (en) | Method, apparatus and device for processing a mobile terminal resource | |
CN113302585A (zh) | 加速应用和子包安装 | |
CN109144596B (zh) | 快捷启动方法、装置、终端、服务器及系统 | |
CN110221857A (zh) | 应用程序的问题修复方法、装置、电子设备及存储介质 | |
CN106708555B (zh) | 一种加载插件的方法和装置 | |
CN110362330B (zh) | 应用程序更新方法、装置、终端及存储介质 | |
CN109885317B (zh) | 一种信息处理方法、服务器及终端 | |
CN106445594B (zh) | 系统应用的安装方法、装置和终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |