CN111273920A - 一种向安装包写入数据的方法、装置及存储介质 - Google Patents
一种向安装包写入数据的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN111273920A CN111273920A CN202010047030.3A CN202010047030A CN111273920A CN 111273920 A CN111273920 A CN 111273920A CN 202010047030 A CN202010047030 A CN 202010047030A CN 111273920 A CN111273920 A CN 111273920A
- Authority
- CN
- China
- Prior art keywords
- signature
- block
- target
- installation package
- data
- 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.)
- Pending
Links
Images
Classifications
-
- 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
-
- 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/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种向安装包写入数据的方法、装置及存储介质,方法包括:获取目标应用的安装包;在对所述安装包签名后,根据所述安装包的签名方式,确定目标区块,所述目标区块是指所述安装包中待写入目标数据的数据块;所述目标区块包括注释块或签名块;将所述目标数据添加到所述目标区块中。本方案能够根据签名方式来选择将待添加目标数据的目标区块,以将目标数据写到一个不会被签名校验的区域,从而达到不破坏安装包的结构的同时还写入附加信息(即目标数据)的目的。
Description
技术领域
本申请实施例涉及互联网技术领域,尤其涉及一种向安装包写入数据的方法、装置及存储介质。
背景技术
在软件商店发布新的软件产品时,通常用到软件拉新方式。软件拉新方式是指采用各种办法找到目标用户,然后用尽各种办法让目标用户下载软件产品,并且开始使用该软件产品。在采用老带新这种软件拉新方式时,需要分析新软件的安装包,然后对新软件的安装包进行签名修改。
在对现有技术的研究和实践过程中,本申请实施例的发明人发现,现有技术是通过对V1签名进行修改来写入第三方数据(例如产品的渠道标识),主要是通过分析安装包的结构,在安装包的目录结束标识(End of central directory record,EOCD)块中寻找注释(comment)块偏移位置,将第三方数据(例如产品的渠道标识)写入到comment块中,comment块占2个字节,最大支持65535个字符。但是,现有技术只能针对V1签名有效,因为V1签名不会校验EOCD块的内容,而对于V2签名方案不可行。因为V2签名会对EOCD块的数据进行签名校验,以确保数据不被修改,而一旦V2签名对EOCD块的数据进行签名校验,就会破坏安装包中数据的完整性。所以会导致整个安装包无法有效的进行复用拉新。
发明内容
本申请实施例提供了一种向安装包写入数据的方法、装置及存储介质,能够根据签名方式来选择将待添加目标数据的目标区块,以将目标数据写到一个不会被签名校验的区域,从而达到不破坏安装包的结构的同时还写入附加信息(即目标数据)的目的。
第一方面中,本申请实施例提供一种向安装包写入数据的方法,所述方法包括:
获取目标应用的安装包;
在对所述安装包签名后,根据所述安装包的签名方式,确定目标区块,所述目标区块是指所述安装包中待写入目标数据的数据块;所述目标区块包括注释块或签名块;
将所述目标数据添加到所述目标区块中。
一种可能的设计中,所述签名方式为第一签名方式,所述第一签名方式是指对所述安装包内的文件进行签名校验;所述根据所述安装包的签名方式,确定目标区块;将所述目标数据添加到所述目标区块中,包括:
根据所述第一签名方式确定所述安装包的目录结束块,所述目录结束块包括所述注释块;
将所述注释块作为所述目标区块;
将所述目标数据添加到所述注释块中。
一种可能的设计中,所述签名方式为第二签名方式,所述第二签名方式是指对所述安装包内的所有区块进行签名校验;所述根据所述安装包的签名方式,确定目标区块;将所述目标数据添加到所述目标区块中,包括:
根据所述第二签名方式确定所述安装包的目录结束块;
根据所述目录结束块确定核心目录在所述安装包中的位置;
根据所述核心目录在所述安装包中的位置,确定所述签名块在所述安装包中的目标位置;
将所述目标位置对应的签名块作为所述目标区块;
将所述目标数据添加到所述签名块中。
一种可能的设计中,所述将所述目标数据添加到所述签名块中,包括:
为所述目标数据设置目标标识;
根据所述目标数据和所述目标标识,生成目标信息对;
将所述目标信息对保存在所述签名块中。
一种可能的设计中,所述目标数据为候选应用的渠道标识;所述将所述目标数据添加到所述目标区块中,包括:
获取所述候选应用的渠道标识;
将所述渠道标识添加到所述签名块中,所述渠道标识用于所述候选应用被下载时触发对所述目标应用的下载操作。
一种可能的设计中,所述将所述目标数据添加到所述目标区块中之后,所述方法还包括:
从所述签名块中读取所述候选应用的渠道标识,以统计所述目标应用的下载次数。
一种可能的设计中,所述在对所述安装包签名后,所述方法还包括:
获取签名标识;
根据所述签名标识和签名数据生成签名数据对;
将所述签名数据对添加至所述签名块;
所述将所述目标信息对保存在所述签名块中之后,所述方法还包括:
以所述签名标识为索引,在所述安装包中查找所述签名标识对应的所述签名数据对;
对所述签名数据对进行签名校验。
一种可能的设计中,所述将所述目标信息对保存在所述签名块中之后,所述方法还包括:
接收访问请求,所述访问请求用于读取所述目标信息对;
从所述目录结束块确定核心目录块;
从所述核心目录块中确定所述签名块;
对所述签名块进行分析,从所述签名块中读取所述目标信息对。
一种可能的设计中,所述目标数据保存在区块链节点上。
第二方面中,本申请实施例提供一种数据处理装置,具有实现对应于上述第一方面提供的向安装包写入数据的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。
一种可能的设计中,所述数据处理装置包括:
输入输出模块,用于获取目标应用的安装包;
处理模块,用于在对所述输入输出模块获取的安装包签名后,根据所述安装包的签名方式,确定目标区块,所述目标区块是指所述安装包中待写入目标数据的数据块;所述目标区块包括注释块或签名块;
所述处理模块还用于将所述目标数据添加到所述目标区块中。
一种可能的设计中,所述签名方式为第一签名方式,所述第一签名方式是指对所述安装包内的文件进行签名校验;所述处理模块具体用于:
根据所述第一签名方式确定所述安装包的目录结束块,所述目录结束块包括所述注释块;
将所述注释块作为所述目标区块;
将所述目标数据添加到所述注释块中。
一种可能的设计中,所述签名方式为第二签名方式,所述第二签名方式是指对所述安装包内的所有区块进行签名校验;所述处理模块具体用于:
根据所述第二签名方式确定所述安装包的目录结束块;
根据所述目录结束块确定核心目录在所述安装包中的位置;
根据所述核心目录在所述安装包中的位置,确定所述签名块在所述安装包中的目标位置;
将所述目标位置对应的签名块作为所述目标区块;
将所述目标数据添加到所述签名块中。
一种可能的设计中,所述处理模块具体用于:
为所述目标数据设置目标标识;
根据所述目标数据和所述目标标识,生成目标信息对;
将所述目标信息对保存在所述签名块中。
一种可能的设计中,所述目标数据为候选应用的渠道标识;所述处理模块具体用于:
通过所述输入输出模块获取所述候选应用的渠道标识;
将所述渠道标识添加到所述签名块中,所述渠道标识用于所述候选应用被下载时触发对所述目标应用的下载操作。
一种可能的设计中,所述处理模块将所述目标数据添加到所述目标区块中之后,还用于:
从所述签名块中读取所述候选应用的渠道标识,以统计所述目标应用的下载次数。
一种可能的设计中,所述处理模块在对所述安装包签名后,还用于:
通过所述输入输出模块获取签名标识;
根据所述签名标识和签名数据生成签名数据对;
将所述签名数据对添加至所述签名块;
以所述签名标识为索引,在所述安装包中查找所述签名标识对应的所述签名数据对;
对所述签名数据对进行签名校验。
一种可能的设计中,所述处理模块将所述目标信息对保存在所述签名块中之后,还用于:
通过所述输入输出模块接收访问请求,所述访问请求用于读取所述目标信息对;
从所述目录结束块确定核心目录块;
从所述核心目录块中确定所述签名块;
对所述签名块进行分析,从所述签名块中读取所述目标信息对。
一种可能的设计中,所述目标数据保存在区块链节点上。
本申请实施例又一方面提供了一种数据处理装置,其包括至少一个连接的处理器、存储器和输入输出单元,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述存储器中的计算机程序来执行上述第一方面所述的方法。
本申请实施例又一方面提供了一种计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
相较于现有技术,本申请实施例提供的方案中,在对所述安装包签名后,根据所述安装包的签名方式确定目标区块,而所述目标区块包括注释块或签名块,因此,根据签名方式来选择将待添加目标数据的目标区块,以将目标数据写到一个不会被签名校验的区域,从而达到不破坏安装包的结构的同时还写入附加信息(即目标数据)的目的。
附图说明
图1为本申请实施例中向安装包写入数据的方法的一种流程示意图;
图2a为本申请实施例中V1签名的一种数据结构示意图;
图2b为本申请实施例中V2签名前后的一种数据结构对比示意图;
图2c为本申请实施例中V2签名后的一种数据结构示意图;
图3为本申请实施例中APK的一种摘要示意图;
图4为本申请实施例中目录结束区块中包含的数据的一种示意图;
图5为本申请实施例中核心目录中包含的数据的一种示意图;
图6为本申请实施例中区块链***的一种结构示意图;
图7为本申请实施例中数据处理装置的一种结构示意图;
图8为本申请实施例中执行向安装包写入数据的方法的实体设备的一种结构示意图;
图9为本申请实施例中执行向安装包写入数据的方法的服务器的一种结构示意图。
具体实施方式
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请实施例中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个***中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请实施例中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请实施例方案的目的。
本申请实施例供了一种向安装包写入数据的方法、装置及存储介质,可用于服务器侧,服务器可用于对安装包签名、对安装包进行签名验证、以及在安装包中写入第三方数据,根据第三方数据统计安装包的下载渠道等操作。该方案可用于服务器侧,本申请实施例中数据处理装置可以是区块链***中的节点。
本申请实施例主要提供以下技术方案:
以安装包为应用程序包(application package,APK)为例,利用主流的对APK签名方式(即V1签名和V2签名),被V1签名的安装包而言,由于V1签名不会对注释(comment)区域的数据进行签名校验,所以可以将第三方数据放到comment块;而V2签名会对comment块进行签名校验,签名会放到APK signing block中,所以V2只要修改了comment区域的内容,签名校验将不会通过。因此,本申请实施例可从V2签名的安装包中找到另一个不会被签名校验的区块来存储数据,该区块位于APK signing block中。当要向安装包中写入第三方数据时,先通过分析当前安装包使用的是哪种签名方式,然后利用V1和V2签名的区别和特性,将第三方数据写到一个不会被签名校验的区块,从而达到不破坏APK结构的同时写入附加信息的目的。并且,无需重新生成APK或者重新签名APK,即可将第三方数据写入到APK中,因此,能够将需要由服务器完成的渠道分发任务都分发到终端完成,能够减少服务器压力和缓解用户流量。
参照图1,以下介绍本申请实施例所提供的一种向安装包写入数据的方法,本申请实施例包括:
101、获取目标应用的安装包。
其中,目标应用是指完成某项或多项特定工作的计算机程序,例如是指在终端上运行的软件程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。目标应用是指待拉新的应用,可以是指即将上线的新应用,也可以是已经上线但下载量未达到期望值,或者知名度未达到期望值的应用。
安装包是指应用程序包APK,可为压缩文件,例如ZIP文件。安装包可为不同操作***的应用,本申请实施例不对安装包的压缩方式、呈现形态和操作***的类别作限定。APK是操作***使用的一种应用程序包文件格式,用于分发、安装移动应用及中间件。例如,以安卓(Android)操作***的APK为例,一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android***所能识别的文件才可以被运行,将这种能被Android***识别并运行的文件格式称为APK。一个APK文件内包含被编译的代码文件(.dex文件)、文件资源(resources)、原生资源文件(assets)、证书(certificates)和清单文件(manifest file)。
102、在对所述安装包签名后,根据所述安装包的签名方式,确定目标区块。
其中,所述目标区块是指所述安装包中待写入目标数据的数据块;所述目标区块包括注释块或签名块。
由于所有的应用程序都必须有数字证书,终端的操作***也不会安装一个没有数字证书的应用程序,所以在发布一个应用程序(例如目标应用)之前,需要使用一个合适的私钥生成的数字证书来给程序签名。
一些实施方式中,所述安装包的签名方式包括第一签名方式和第二签名方式。下面分别介绍:
(1)所述第一签名方式是指对所述安装包内的文件进行签名校验。
例如,对安卓(Android)应用的安装包进行签名时,第一签名方式可以是指Android中对打包APK和签名的算法,即只对APK文件进行签名校验。可将第一签名方式称为V1签名。
采用第一签名方式对安装包签名时,所述目标区块为注释块,例如注释块为comment或者comment length。其中,注释块位于EOCD块,文件结构如图2a所示。
(2)所述第二签名方式是指对所述安装包内的所有区块进行签名校验。
例如,对Android应用的安装包进行签名时,第二签名方式可以是指Android中对打包APK和签名的算法,即会对ZIP文件的不同区块进行签名校验。可将第二签名方式称为V2签名。如图2b所示,图2b展示了对Android应用的安装包进行V2签名前后安装包的结构对比图。从图2b可知,在进行V2签名后,安装包的contents of ZIP entries区块和CentralDirectory区块之间***了APK签名区块(APK Signing Block)。
采用第二签名方式对安装包签名时,所述目标区块为签名块。以签名块为APKSigning Block为例,APK为了保持与V1 APK格式向后兼容,V2及更高版本的APK签名会存储在APK签名区块内,该分块是为了支持APK签名方案V2而引入的一个新容器。在APK文件中,APK签名区块位于“ZIP中央目录”(位于文件末尾)之前并紧邻该部分。
该APK签名区块包含多个“ID-value”对,所采用的封装方式有助于更轻松地在APK中找到该分块。APK的V2签名会存储为一个“ID-value”对,其中ID为0x7109871a。文件结构如图2b中所示的V2签名之前的文件结构。
采用V2签名能够发现对APK的受保护部分进行的所有更改,从而有助于加快验证速度并增强完整性保证。采用V2签名进行签名时,会在APK文件中***一个APK签名区块,该APK签名分块位于“ZIP中央目录”部分之前并紧邻该部分。在APK签名区块内,V2签名和签名者身份信息会存储在V2签名的APK签名区块中,如图2b中所示的V2签名之后的文件结构。
本实施方式中,V2签名是在Android 7.0(Nougat)中引入的。为了使APK文件可在Android 6.0(Marshmallow)及更低版本的设备上安装,应先使用JAR签名功能对APK文件进行签名,然后再使用V2签名方案对其进行签名。
APK文件由一个或多个签名者/身份签名,每个签名者/身份均由一个签名密钥来表示。该信息会以APK签名区块的形式存储。对于每个签名者,都会存储以下信息:
(签名算法、摘要、签名)元组。摘要会存储起来,以便将签名验证和APK内容完整性检查拆开进行。
表示签名者身份的X.509证书链。
采用键值对形式的其他属性。
对于每位签名者,都会使用收到的列表中支持的签名来验证APK,签名算法未知的签名会被忽略。如果遇到多个支持的签名,则可根据签名的安全系数选择使用哪个签名。这样一来,以后便能够以向后兼容的方式引入安全系数更高的签名方法。
下面介绍APK的结构:
如图2c所示,APK包括:ZIP条目的内容(从偏移量0处开始一直到“APK签名分块”的起始位置)、APK签名分块、ZIP中央目录以及ZIP中央目录结尾。
采用如图2c所示的APK结构后,能够保护如图2c所示的第1、3、4个区块的完整性,以及第2个区块(APK Signing Block)包含的签名数据(signed data)分块的完整性。第1、3和4个区块的完整性通过其内容的一个或多个摘要来保护,这些摘要存储在signed data分块中,而这些分块则通过一个或多个签名来保护。
第1、3和4个区块的摘要(Digests)采用以下计算方式,类似于两级Merkle树。每个部分都会被拆分成多个大小为1MB(220个字节)的连续区块。每个部分的最后一个区块可能会短一些。每个区块的摘要均通过字节0xa5的连接、块的长度(采用小端字节序的uint32值,以字节数计)和块的内容进行计算。顶级摘要通过字节0x5a的连接、块数(采用小端字节序的uint32值)以及块的摘要的连接(按照块在APK中显示的顺序)进行计算。摘要以分块方式计算,以便通过并行处理来加快计算速度。
如图3为APK摘要的一种结构示意图,由于第4个区块(即ZIP中央目录结尾)包含ZIP中央目录的偏移量,因此该区块的保护比较复杂。当APK签名分块的大小发生变化(例如,添加了新签名)时,偏移量也会随之改变。因此,在通过ZIP中央目录结尾计算摘要时,必须将包含ZIP中央目录偏移量的字段视为包含APK签名区块的偏移量。
下面介绍APK签名区块的格式、解析和解译的流程:
(a)APK签名区块的格式如下(所有数字字段均采用小端字节序):
size of block,以字节数(不含此字段)计(uint64)
带uint64长度前缀的“ID-值”对序列:
ID(uint32)
value(可变长度:“ID-值”对的长度-4个字节)
size of block,以字节数计-与第一个字段相同(uint64)
magic“APK签名分块42”(16个字节)
(b)解析APK签名区块
在解析APK签名区块时,首先要通过以下方法找到“ZIP中央目录”的起始位置:在文件末尾找到“ZIP中央目录结尾”记录,然后从该记录中读取“中央目录”的起始偏移量。通过magic值,可以快速确定“中央目录”前方可能是“APK签名分块”。然后,通过size ofblock值,可以高效地找到该APK签名分块在ZIP文件中的起始位置。
(c)解译APK签名区块
在解译APK签名区块时,可直接忽略ID未知的“ID-value”对。
103、将所述目标数据添加到所述目标区块中。
其中,目标数据是指第三方数据。一些实施方式中,目标数据为服务器待分发到不同下载渠道的数据、其他应用的应用标识、其他应用的下载链接等数据。
一些实施方式中,所述目标数据为候选应用的渠道标识时,所述将所述目标数据添加到所述目标区块中,包括:
获取所述候选应用的渠道标识;
将所述渠道标识添加到所述签名块中,所述渠道标识用于所述候选应用被下载时触发对所述目标应用的下载操作。
其中,候选应用是指待对目标应用进行拉新的应用,候选应用可以是已经有一定知名度的在先应用。
一些实施方式中,将所述目标数据添加到所述目标区块中之后,还可以统计候选应用对目标应用的拉新量,拉新量可用下载次数衡量。具体来说,从所述签名块中读取所述候选应用的渠道标识,以统计所述目标应用的下载次数。
例如,服务器有产品a1、产品a2等多个软件产品,每个软件产品均设置广告位。现在要发布1个产品b或者提高产品b的下载次数,那么,可以分别在产品b的目标区块中写入a1或者a2的渠道标识,用户在产品a1或者产品a2的广告位点进去后下载产品b。安装产品b时,终端就会读取产品b里面的签名文件中的目标区块,顺便可以读取到写入产品b的渠道标识,然后将读取到的渠道标识反馈到服务器。服务器就可以统计哪些终端上下载并安装的产品b是来自产品a1还是产品a2,这样就可以统计由产品a1和产品a2对产品b带来的拉新次数,然后调整产品a1和产品a2中广告位的显示策略,进而可以避免不必要的下载和广告投放资源浪费,以提高产品a1或产品a2对产品b的拉新成功率。
(1)采用第一签名方式对安装包签名时。
一些实施方式中,所述根据所述安装包的签名方式,确定目标区块;将所述目标数据添加到所述目标区块中,包括:
根据所述第一签名方式确定所述安装包的目录结束块,所述目录结束块包括所述注释块;
将所述注释块作为所述目标区块;
将所述目标数据添加到所述注释块中。
(2)采用第二签名方式对安装包签名时。
一些实施方式中,所述根据所述安装包的签名方式,确定目标区块;将所述目标数据添加到所述目标区块中,包括:
根据所述第二签名方式确定所述安装包的目录结束块;
根据所述目录结束块确定核心目录在所述安装包中的位置;
根据所述核心目录在所述安装包中的位置,确定所述签名块在所述安装包中的目标位置;
将所述目标位置对应的签名块作为所述目标区块;
将所述目标数据添加到所述签名块中。
一些实施方式中,所述签名块中的信息均以信息对的形式保存,例如以id-value的形式保存,可将信息对称为pair对。具体来说,以所述目标数据为键值,以所述目标标识为键(key),生成所述目标信息对。从所述签名块中获取信息对,所述信息对为应用标识(id)与应用标识键值(value)。由于pair通过一个结构体实现,所以,在查找id时,可以直接使用pair的成员变量。
例如,在对安装包进行V2签名时,可为签名数据设置一个标识(identify,ID)s,然后将该IDs与签名数据保存为一个pair,例如,将签名数据保存在IDs为0x7109871a的pair中。由此,当向该签名块放入目标数据时,也可以将目标数据以信息对的形式保存。具体来说,所述将所述目标数据添加到所述签名块中,包括:
为所述目标数据设置目标标识;
根据所述目标数据和所述目标标识,生成目标信息对;
将所述目标信息对保存在所述签名块中。
一些实施方式中,还可能会对安装包进行校验,所以会查询签名数据所在的信息对中的签名标识,具体来说,在对所述安装包签名后,所述方法还包括:
获取签名标识;
根据所述签名标识和签名数据生成签名数据对;
将所述签名数据对添加至所述签名块;
所述将所述目标信息对保存在所述签名块中之后,所述方法还包括:
以所述签名标识为索引,在所述安装包中查找所述签名标识对应的所述签名数据对;
对所述签名数据对进行签名校验。
例如,所述签名数据为IDs时,由于IDs是被预设的,例如针对安装包进行签名校验时,就只会查找签名数据的ID,而不会查找其他数据的ID,就相当于110预设为报警电话,只要拨打110就可以接通报警电话,而不会拨通其他号码。
因此,在将所述目标信息对保存在所述签名块中后,若进入对安装包的签名验证流程,签名验证进程仅从安装包中遍历查找IDs为0x7109871a的标识,不会查找其他ID的信息对。因此,不遍历到其他ID的信息对,就不会触发对其他ID的信息对的校验流程,由于不触发对其他ID的信息对的校验流程,就不会出现校验失败或者破坏IDs为0x7109871a的签名数据的情况。
一些实施方式中,在将所述目标信息对保存在所述签名块中之后,还可能会对安装包进行校验,所以会查询签名数据所在的信息对中的签名标识,具体来说,所述方法还包括:
接收访问请求,所述访问请求用于读取所述目标信息对;
从所述目录结束块确定核心目录块;
从所述核心目录块中确定所述签名块;
对所述签名块进行分析,从所述签名块中读取所述目标信息对。例如,第一步,找到end of center directory;第二步,找到center directory;第三步:分析APK signingblock,找到id-value对。将目标数据写入APK sign_block中。EOCD存在于整个安装包的结尾,EOCD用于标记压缩的目录数据的结束。每个安装包必须有且只有一个EOCD记录。如图3所示。
核心目录(Central directory)记录了安装包的目录信息,在这个数据区中每一条纪录对应在压缩源文件数据区中的一条数据。核心目录结构如图4所示。图5为核心目录中包含的数据的一种示意图。
本实施方式中,签名块中可保存多个信息对,每个信息对的作用不一样,均以key-value的形式排列,ID是用于存储具体数据的标识,比如comment签名的ID可能为0x123456,因此,只需要定义一个没有被规范使用到的ID来存储目标数据即可有效的避开触发对自身的校验流程。
由于签名块是用来保存签名信息的,所以不会再对这部分信息进行签名保护,只要不修改***预设的IDs的value值,那么就可以通过签名校验,那么写入该签名块的目标数据也可以保全(例如写入的其他id-value)。
与现有机制相比,本申请实施例中,在对所述安装包签名后,根据所述安装包的签名方式确定目标区块,而所述目标区块包括注释块或签名块,因此,根据签名方式来选择将待添加目标数据的目标区块,以将目标数据写到一个不会被签名校验的区域,从而达到不破坏安装包的结构的同时还写入附加信息(即目标数据)的目的。例如,目标数据为服务器待分发到不同下载渠道的数据a时,可以直接将数据a通过本申请实施例的方案添加到目标区块中,使得在不同下载渠道分发该数据a对应的分发任务(即拉新目标应用的任务)能够分散到下载该目标应用中,因此,能够分担服务器的分发任务,有效减少服务器的压力和缓解用户流量。
此外,由于签名数据会放在一个特定信息对中,当对安装包进行签名校验时,会在安装包中查找该特定信息对中的签名标识,而忽略安装包中其他的标识,所以可以将目标数据保存在该特定信息对所在的签名块中,并且以信息对的方式保存。一方面,避免在对安装包进行签名校验的时候触发对目标数据的校验而导致校验不通过,报错。另一方面,将目标数据以信息对方式保存,能够便于后续从安装包中读取目标数据提供遍历索引。
本申请实施例中,上述签名数据、目标数据、安装包等均可保存在区块链中。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
本申请实施例中执行向安装包写入数据的方法的数据处理装置(也可称作服务器)可以是区块链***中的节点。本申请实施例中的数据处理装置可以是如图6所示的一种区块链***中的节点。
图1至图6中任一项所对应的实施例中所提及的任一技术特征也同样适用于本申请实施例中的图7至图9所对应的实施例,后续类似之处不再赘述。
以上对本申请实施例中一种向安装包写入数据的方法进行说明,以下对执行上述向安装包写入数据的方法的装置70进行介绍。
参阅图7,如图7所示的一种数据处理装置70的结构示意图,其可应用于对安装包签名、对安装包进行签名验证、以及在安装包中写入第三方数据。本申请实施例中的数据处理装置能够实现对应于上述图1所对应的实施例中所执行的向安装包写入数据的方法的步骤。数据处理装置实现的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。所述数据处理装置70可包括处理模块701、输入输出模块702,所述处理模块701、所述输入输出模块702的功能实现可参考图1所对应的实施例中所执行的操作,此处不作赘述。例如,所述处理模块701可用于控制所述输入输出模块702的输入输出操作。
一些实施方式中,所述输入输出模块702可用于获取目标应用的安装包;
所述处理模块701可用于在对所述输入输出模块获取的安装包签名后,根据所述安装包的签名方式,确定目标区块,所述目标区块是指所述安装包中待写入目标数据的数据块;所述目标区块包括注释块或签名块;
所述处理模块701还用于将所述目标数据添加到所述目标区块中。
本申请实施例中,在对所述安装包签名后,根据所述安装包的签名方式确定目标区块,而所述目标区块包括注释块或签名块,因此,根据签名方式来选择将待添加目标数据的目标区块,以将目标数据写到一个不会被签名校验的区域,从而达到不破坏安装包的结构的同时还写入附加信息(即目标数据)的目的。
一些实施方式中,所述签名方式为第一签名方式,所述第一签名方式是指对所述安装包内的文件进行签名校验;所述处理模块701具体用于:
根据所述第一签名方式确定所述安装包的目录结束块,所述目录结束块包括所述注释块;
将所述注释块作为所述目标区块;
将所述目标数据添加到所述注释块中。
一些实施方式中,所述签名方式为第二签名方式,所述第二签名方式是指对所述安装包内的所有区块进行签名校验;所述处理模块701具体用于:
根据所述第二签名方式确定所述安装包的目录结束块;
根据所述目录结束块确定核心目录在所述安装包中的位置;
根据所述核心目录在所述安装包中的位置,确定所述签名块在所述安装包中的目标位置;
将所述目标位置对应的签名块作为所述目标区块;
将所述目标数据添加到所述签名块中。
一些实施方式中,所述处理模块701具体用于:
为所述目标数据设置目标标识;
根据所述目标数据和所述目标标识,生成目标信息对;
将所述目标信息对保存在所述签名块中。
一些实施方式中,所述目标数据为候选应用的渠道标识;所述处理模块701具体用于:
通过所述输入输出模块获取所述候选应用的渠道标识;
将所述渠道标识添加到所述签名块中,所述渠道标识用于所述候选应用被下载时触发对所述目标应用的下载操作。
一些实施方式中,所述处理模块701将所述目标数据添加到所述目标区块中之后,还用于:
从所述签名块中读取所述候选应用的渠道标识,以统计所述目标应用的下载次数。
一些实施方式中,所述处理模块701在对所述安装包签名后,还用于:
通过所述输入输出模块702获取签名标识;
根据所述签名标识和签名数据生成签名数据对;
将所述签名数据对添加至所述签名块;
以所述签名标识为索引,在所述安装包中查找所述签名标识对应的所述签名数据对;
对所述签名数据对进行签名校验。
一些实施方式中,所述处理模块701将所述目标信息对保存在所述签名块中之后,还用于:
通过所述输入输出模块702接收访问请求,所述访问请求用于读取所述目标信息对;
从所述目录结束块确定核心目录块;
从所述核心目录块中确定所述签名块;
对所述签名块进行分析,从所述签名块中读取所述目标信息对。
一些实施方式中,所述目标数据保存在区块链节点上。
上面从模块化功能实体的角度对本申请实施例中的数据处理装置70进行了描述,下面从硬件处理的角度分别对本申请实施例中的执行向安装包写入数据的方法的服务器进行描述。需要说明的是,在本申请实施例图7所示的实施例中的输入输出模块702对应的实体设备可以为输入/输出单元、收发器、射频电路、通信模块和输出接口等,处理模块701对应的实体设备可以为处理器。图7所示的装置70可以具有如图8所示的结构,当图7所示的装置70具有如图8所示的结构时,图8中的处理器和输入输出单元能够实现前述对应该装置的装置实施例提供的处理模块701、输入输出模块702相同或相似的功能,图8中的存储器存储处理器执行上述向安装包写入数据的方法时需要调用的计算机程序。
图9是本申请实施例提供的一种服务器结构示意图,该服务器920可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processingunits,CPU)922(例如,一个或一个以上处理器)和存储器932,一个或一个以上存储应用程序942或数据944的存储介质930(例如一个或一个以上海量存储设备)。其中,存储器932和存储介质930可以是短暂存储或持久存储。存储在存储介质930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器922可以设置为与存储介质930通信,在服务器920上执行存储介质930中的一系列指令操作。
服务器920还可以包括一个或一个以上电源926,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口958,和/或,一个或一个以上操作***941,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等等。
上述实施例中由服务器所执行的步骤可以基于该图9所示的服务器920的结构。例如上述实施例中由图9所示的装置70所执行的步骤可以基于该图9所示的服务器结构。例如,所述处理器922通过调用存储器932中的指令,执行以下操作:
通过所述输入输出接口958获取目标应用的安装包;
在对所述输入输出模块获取的安装包签名后,根据所述安装包的签名方式,确定目标区块,所述目标区块是指所述安装包中待写入目标数据的数据块;所述目标区块包括注释块或签名块;
将所述目标数据添加到所述目标区块中。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上对本申请实施例所提供的技术方案进行了详细介绍,本申请实施例中应用了具体个例对本申请实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请实施例的限制。
Claims (11)
1.一种向安装包写入数据的方法,其特征在于,所述方法包括:
获取目标应用的安装包;
在对所述安装包签名后,根据所述安装包的签名方式,确定目标区块,所述目标区块是指所述安装包中待写入目标数据的数据块;所述目标区块包括注释块或签名块;
将所述目标数据添加到所述目标区块中。
2.根据权利要求1所述的方法,其特征在于,所述签名方式为第一签名方式,所述第一签名方式是指对所述安装包内的文件进行签名校验;所述根据所述安装包的签名方式,确定目标区块;将所述目标数据添加到所述目标区块中,包括:
根据所述第一签名方式确定所述安装包的目录结束块,所述目录结束块包括所述注释块;
将所述注释块作为所述目标区块;
将所述目标数据添加到所述注释块中。
3.根据权利要求1所述的方法,其特征在于,所述签名方式为第二签名方式,所述第二签名方式是指对所述安装包内的所有区块进行签名校验;所述根据所述安装包的签名方式,确定目标区块;将所述目标数据添加到所述目标区块中,包括:
根据所述第二签名方式确定所述安装包的目录结束块;
根据所述目录结束块确定核心目录在所述安装包中的位置;
根据所述核心目录在所述安装包中的位置,确定所述签名块在所述安装包中的目标位置;
将所述目标位置对应的签名块作为所述目标区块;
将所述目标数据添加到所述签名块中。
4.根据权利要求3所述的方法,其特征在于,所述将所述目标数据添加到所述签名块中,包括:
为所述目标数据设置目标标识;
根据所述目标数据和所述目标标识,生成目标信息对;
将所述目标信息对保存在所述签名块中。
5.根据权利要求3或4所述的方法,其特征在于,所述目标数据为候选应用的渠道标识;所述将所述目标数据添加到所述目标区块中,包括:
获取所述候选应用的渠道标识;
将所述渠道标识添加到所述签名块中,所述渠道标识用于所述候选应用被下载时触发对所述目标应用的下载操作。
6.根据权利要求5所述的方法,其特征在于,所述将所述目标数据添加到所述目标区块中之后,所述方法还包括:
从所述签名块中读取所述候选应用的渠道标识,以统计所述目标应用的下载次数。
7.根据权利要求5所述的方法,其特征在于,所述在对所述安装包签名后,所述方法还包括:
获取签名标识;
根据所述签名标识和签名数据生成签名数据对;
将所述签名数据对添加至所述签名块;
所述将所述目标信息对保存在所述签名块中之后,所述方法还包括:
以所述签名标识为索引,在所述安装包中查找所述签名标识对应的所述签名数据对;
对所述签名数据对进行签名校验。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收访问请求,所述访问请求用于读取所述目标信息对;
从所述目录结束块确定核心目录块;
从所述核心目录块中确定所述签名块;
对所述签名块进行分析,从所述签名块中读取所述目标信息对。
9.根据权利要求1所述的方法,其特征在于,所述目标数据保存在区块链节点上。
10.一种数据处理装置,其特征在于,所述装置包括:
输入输出模块,用于获取目标应用的安装包;
处理模块,用于在对所述输入输出模块获取的安装包签名后,根据所述安装包的签名方式,确定目标区块,所述目标区块是指所述安装包中待写入目标数据的数据块;所述目标区块包括注释块或签名块;
所述处理模块还用于将所述目标数据添加到所述目标区块中。
11.一种数据处理装置,其特征在于,所述装置包括:
至少一个处理器、存储器和输入输出单元;
其中,所述存储器用于存储计算机程序,所述处理器用于调用所述存储器中存储的计算机程序来执行如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010047030.3A CN111273920A (zh) | 2020-01-16 | 2020-01-16 | 一种向安装包写入数据的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010047030.3A CN111273920A (zh) | 2020-01-16 | 2020-01-16 | 一种向安装包写入数据的方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111273920A true CN111273920A (zh) | 2020-06-12 |
Family
ID=70999154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010047030.3A Pending CN111273920A (zh) | 2020-01-16 | 2020-01-16 | 一种向安装包写入数据的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111273920A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506878A (zh) * | 2020-12-17 | 2021-03-16 | 深圳市欢太科技有限公司 | 文件处理方法、装置、存储介质及电子设备 |
CN113158186A (zh) * | 2021-03-19 | 2021-07-23 | 南京邮电大学 | 一种Android恶意软件静态检测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102955703A (zh) * | 2011-08-25 | 2013-03-06 | 上海盛畅网络科技有限公司 | 手持设备客户端安装包多渠道投放方法及装置 |
US9311317B1 (en) * | 2012-05-14 | 2016-04-12 | Symantec Corporation | Injecting custom data into files in zip format containing apps, without unzipping, resigning or re-zipping the files |
CN107994991A (zh) * | 2017-10-31 | 2018-05-04 | 深圳市轱辘车联数据技术有限公司 | 一种数据处理方法、数据处理服务器及存储介质 |
-
2020
- 2020-01-16 CN CN202010047030.3A patent/CN111273920A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102955703A (zh) * | 2011-08-25 | 2013-03-06 | 上海盛畅网络科技有限公司 | 手持设备客户端安装包多渠道投放方法及装置 |
US9311317B1 (en) * | 2012-05-14 | 2016-04-12 | Symantec Corporation | Injecting custom data into files in zip format containing apps, without unzipping, resigning or re-zipping the files |
CN107994991A (zh) * | 2017-10-31 | 2018-05-04 | 深圳市轱辘车联数据技术有限公司 | 一种数据处理方法、数据处理服务器及存储介质 |
Non-Patent Citations (3)
Title |
---|
哈哈V青春: "Android APK Signature Scheme v2 渠道包生成方案", 《HTTPS://WWW.JIANSHU.COM/P/13A62E1AC396》 * |
小面包屑: "Android N Signature Scheme v2 渠道打包", 《HTTPS://WWW.JIANSHU.COM/P/E4ED249E4CAB》 * |
程序员人生: "多渠道打包概览及签名的作用(普通方法)", 《HTTP://M.WFUYU.COM/TECHNOLOGY/27346.HTML》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506878A (zh) * | 2020-12-17 | 2021-03-16 | 深圳市欢太科技有限公司 | 文件处理方法、装置、存储介质及电子设备 |
CN113158186A (zh) * | 2021-03-19 | 2021-07-23 | 南京邮电大学 | 一种Android恶意软件静态检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021073452A1 (zh) | 基于区块链网络的数据处理方法、装置、电子设备及存储介质 | |
CN107396360B (zh) | 区块验证方法及装置 | |
CN107346252B (zh) | 应用更新方法和装置 | |
CN113779444B (zh) | 接口开发方法、零代码引擎和零代码数据接口开发*** | |
CN111563016B (zh) | 日志采集分析方法、装置、计算机***及可读存储介质 | |
TW201729089A (zh) | 用於可信執行環境的可信應用產生及安裝方法 | |
CN105391717A (zh) | 一种apk签名认证方法及其*** | |
CN109995523B (zh) | 激活码管理方法及装置、激活码生成方法及装置 | |
CN111597543A (zh) | 基于区块链智能合约的广域进程访问权限认证方法及*** | |
CN111273920A (zh) | 一种向安装包写入数据的方法、装置及存储介质 | |
CN111817859A (zh) | 基于零知识证明的数据共享方法、装置、设备及存储介质 | |
CN106709281B (zh) | 补丁发放和获取方法、装置 | |
CN111176685A (zh) | 一种升级方法及装置 | |
CN112363997B (zh) | 数据版本管理方法、装置及存储介质 | |
CN110443039A (zh) | 插件安全性的检测方法、装置以及电子设备 | |
CN107145342B (zh) | 应用的渠道信息的处理方法和装置 | |
CN112612482A (zh) | 执行智能合约的方法、装置、设备及存储介质 | |
CN115190064B (zh) | 客户端动态路由的实现方法、装置、***和存储介质 | |
CN115223292B (zh) | 发药机的处理方法、装置、存储介质及电子设备 | |
CN111400771A (zh) | 目标分区的校验方法及装置、存储介质、计算机设备 | |
CN115589316A (zh) | 一种数据加密传输方法、装置、电子设备及存储介质 | |
CN112416875B (zh) | 日志管理方法、装置、计算机设备及存储介质 | |
CN114924742A (zh) | 用于虚拟机模拟软件的热补丁制作和应用方法、装置 | |
CN114143308A (zh) | 文件上传信息处理方法、装置、计算机设备及存储介质 | |
US20210089497A1 (en) | Method, device, and computer program product for managing data object |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024808 Country of ref document: HK |
|
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200612 |
|
RJ01 | Rejection of invention patent application after publication |