CN109495271A - 比较apk文件方法、装置、服务器及其存储介质 - Google Patents
比较apk文件方法、装置、服务器及其存储介质 Download PDFInfo
- Publication number
- CN109495271A CN109495271A CN201811226605.7A CN201811226605A CN109495271A CN 109495271 A CN109495271 A CN 109495271A CN 201811226605 A CN201811226605 A CN 201811226605A CN 109495271 A CN109495271 A CN 109495271A
- Authority
- CN
- China
- Prior art keywords
- file
- apk
- subfile
- compression
- distal end
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0876—Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种比较APK文件的方法、装置、服务器及其存储介质。该方法包括:按序地读取远端APK文件中的压缩子文件,该压缩子文件是远端APK的ZIP压缩文件序列的文件实体;判断压缩子文件是否为RSA文件;如果是,则解析RSA文件,得到远端APK的签名;判断签名是否存在于预先建立的签名列表中;如果存在,则放弃下载远端APK。根据本申请实施例的技术方案,通过ZIP流解压缩方式获取压缩子文件,并对通过解析RSA文件签名,来决定是否继续下载APK文件,从而提高了APK文件的识别准确率。
Description
技术领域
本申请一般涉及计算机技术领域,尤其涉及比较APK文件方法、装置、服务器及其存储介质。
背景技术
APK是AndroidPackage的缩写,即Android安装包(APK)。APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。
在应用监管过程中,为了判断APK文件是否存在盗版、恶意行为,需要将整个APK文件或APK文件指定部分下载到本地服务器,然后,对整个APK文件采用逐字节比较方式,或者计算MD5值比较方式等来识别APK文件是否已经存储在本地服务器。其中,逐字节比较方式导致整个比较过程耗时较长,计算MD5值比较方式存在下载量较大的问题。
当存在多个APK文件需要比较时,采用现有的上述比较方式,导致本地服务器的下载成本过高,下载周期过长或者比较结果精度不够高等问题。
因此,亟待提出一种新的比较APK的方式来解决上述问题。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种基于ZIP流解压缩比较APK文件的方法、装置、服务器及存储介质,来减少文件下载量,降低本地服务器的下载成本和周期,并提升比较结果的精度。
第一方面,本申请实施例提供了一种基于ZIP流解压缩比较APK文件方法,该方法包括:
按序地读取远端APK中的压缩子文件,该压缩子文件是远端APK的ZIP压缩文件序列的文件实体;
判断压缩子文件是否为RSA文件;
如果是,则解析RSA文件,得到远端APK的签名;
判断签名是否存在于预先建立的签名列表中;
如果存在,则放弃下载远端APK。
第二方面,本申请实施例提供了一种基于ZIP流解压缩比较APK文件装置,该装置包括:
读取单元,用于按序地读取远端APK文件中的压缩子文件,该压缩子文件是远端APK的ZIP压缩文件序列的文件实体;
第一判断单元,用于判断压缩子文件是否为RSA文件;
解析单元,用于如果是,则解析RSA文件,得到待下载APK的签名;
第二判断单元,用于判断签名是否存在于预先建立的签名列表中;
终止单元,用于如果存在,则终止下载APK。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现如本申请实施例描述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序用于:
该计算机程序被处理器执行时实现如本申请实施例描述的方法。
本申请实施例提供的基于ZIP流解压缩比较APK文件的技术方案,通过ZIP流解压缩的方式,降低了本地服务器下载资源成本,同时,通过按序地识别ZIP压缩文件序列的压缩子文件是否为RSA文件,并在判断为是RSA文件时,解析该文件得到待下载APK文件的签名,通过签名的判断来决定是否继续下载待下载APK文件,从而提高了APK文件的识别准确率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出了应用本申请实施例的示意性***结构框图;
图2示出了本申请实施例提供的基于ZIP流解压缩比较APK文件的方法的流程示意图;
图3示出了本申请实施例提供的基于ZIP流解压缩比较APK文件装置300的示例性结构框图;
图4示出了适于用来实现本申请实施例的服务器的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
请参考图1,图1示出了应用本申请实施例的示意性***结构框图。
如图1所示,***100包括至少一个本地服务器101,至少一个远端服务器102。假设在本地服务器101中已存储着已下载的多个APK文件,APK文件还可以称为本地APK文件,或本地APK包,可以表示为local.apk。远端服务器中存储着多个待下载的APK文件,该APK文件可以称为远端APK文件,或远端APK包,可以表示为remote.apk。当本地服务器采用爬虫工具在不同的远端服务器上获取待下载的APK文件时,可能存在大量的重复APK文件的下载,其导致的本地服务器耗费大量的贷款和存储资源,增加了下载成本,也延长了下载周期,造成很多不必要的资源浪费。
现有的查找重复APK文件的方式,例如通过逐字节比较或者计算MD5值比较等方式来判断。前者,需要将远端APK文件完整地下载到本地服务器,然后对远端APK文件的每个字节进行比较,这种方式,如果每个远端APK文件的大小为m字节,则需要比较m次,如果存在k个远端APK文件,则需要比较m*k次,k取值越大,耗时越长。后者,将远端APK文件完整地下载到本地服务器,然后逐个地计算远端APK文件的MD5值,在将计算得到的远端APK文件的MD5值与本地APK文件的MD5值进行比较,采用这种方式能够较好地获取比较结果,但是随着比较对象的数量增加,则比较所需时间也呈线性增长,且下载APK所需的存储资源耗费巨大,下载全部远端APK文件导致下载时间耗费过长。
在此基础上,为了避免重复下载远端APK文件,提出仅下载远端APK文件的部分信息,例如远端文件的文件头信息,或者基于远端APK文件的固定片段的特征进行比较等方式。但是,这种仅下载指定部分信息的内容导致比较结果可能不准确,例如在指定部分内容中由于二次打包导致数据不一致,出现盗版问题无法克服。或者通过远端APK文件的MF文件的哈希值比较,证明本地APK文件和远端APK文件的MF文件相同,但是不能表明本地APK文件和远端APK文件属于相同的发布者。
因此,基于上述问题,本申请实施例提出了基于ZIP流解压缩比较APK文件的方法,通过该方法能够有效地降低文件下载量,并提高APK文件比较结果的精度。
请参考图2,图2示出了本申请实施例提供的基于ZIP流解压缩比较APK文件的方法的流程示意图。
如图2所示,该方法在本地服务器侧执行,该方法包括:
步骤210,按序地读取远端APK文件中的压缩子文件。
本申请实施例中,压缩子文件是远端APK文件的ZIP压缩文件序列的文件实体。APK文件实质是一个ZIP压缩文件序列,其包括多个压缩子文件,每个压缩子文件为一个文件实体,文件实体包括文件头部和压缩后文件数据。文件头部也可以称为文件的元信息。
读取压缩子文件,例如可以采用Java提供的ZipInputStream API从ZIP压缩文件序列中按序地读取压缩子文件,例如ZIP压缩文件序列包括如图3所示的第一压缩子文件,第二压缩子文件,第三压缩子文件,以及核心目录。
本申请实施例中,例如可以通过ZipInputStream API解析远端APK文件,APK文件实质是压缩包,其格式例如可以是ZIP格式。例如,可以通过zip.getNextEntry()循环得到远端APK文件中的一个个压缩子文件,或者称为文件对象(例如FileEntry,或者ZipEntry)。
步骤220,判断压缩子文件是否为RSA文件。
在本申请实施例中,可以通过getName可以得到每个FileEntry的文件名称。通过识别压缩子文件的文件名称的后缀,来判断压缩子文件是否为RSA文件。例如,文件名称可以在压缩子文件的文件头部。可以通过识别文件头部中指示的文件名称的后缀,来判断是否指示该压缩子文件为RSA文件。
现有技术中,安卓***对每一个APK文件都会进行签名。对于一个APK文件,解压后可以得到一个META-INF文件夹,该文件夹下例如可以包括MANIFEST.MF、CERT.SF和CERT.RSA文件。
MANIFEST.MF:该文件是摘要文件。程序遍历APK文件包内所有压缩子文件,逐个用SHA1生成摘要信息,再用Base64进行编码。如果APK文件中子文件发生改变,则在APK安装校验时,改变后的文件摘要信息与MANIFEST.MF的检验信息不同,程序就不能成功安装。该文件的名字是可变的,但文件扩展名为MF。
CERT.SF:该是对摘要文件的摘要文件。对MANIFEST.MF中的每一条内容分别进行SHA1计算,然后再用Base64编码转换。此外,把MANIFEST.MF的内容也进行SHA1计算,并且计算BASE64编码。将上述内容写入CERT.SF文件中。该文件的名字是可变的,但文件扩展名为SF。
CERT.RSA:该文件包括公钥、采用的加密算法等信息,以及使用私钥和CERT.SF生成的签名。该文件的名字是可变的,但文件扩展名为RSA。
判断压缩子文件是否为RSA文件例如可以包括:
获取压缩子文件的文件头部;
识别文件头部是否指示该压缩子文件为RSA文件。
步骤230,如果是,则解析RSA文件,得到远端APK的签名。
本申请实施例中,通过解析RSA文件得到远端APK的签名。RSA文件是一个PKCS7格式的文件。根据不同的签名应用得到的APK文件,在解析RSA文件之后,得到结果也不同,例如,利用Eclipse签名或者Dodo APKtools签名。
解析RSA文件的方式,例如可以采用OpenSSL或者Java接口解析RSA文件或者其他等同的方式。OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
解析得到结果中,例如可以包括所有者,签发人,序列号,有效期,证书指纹等等。
如果不是,则按序地读取ZIP压缩文件序列中下一个压缩子文件。
例如ZIP压缩文件序列中按序排列多个压缩子文件,对第一个压缩子文件进行识别后,如果第一个压缩子文件不是RSA文件,则继续识别第二个压缩子文件,直到识别出RSA文件。然后,解析RSA文件,得到远端APK的签名,通过解析得到的签名判断远端APK文件是否已经被下载过。
如果APK文件中任何一个文件发生变化,则MF文件中的摘要会发生变化,进而导致SF文件对应的摘要发生变化,RSA文件的签名也就会发生变化。因此,可以认为如果两个APK文件的签名相同,则两个APK文件相同。相对于现有技术,判断MF文件是否相同的方式,本申请实施例还可以进一步地识别APK文件是否为盗版,或仿冒文件,其安全性更好。
步骤240,判断该签名是否存在于预先建立的签名列表中。
步骤250,如果存在,则放弃下载远端APK。
本申请实施例中,预先建立的签名列表,例如可以是预先在本地服务器上建立的一个有序的线性列表,在该列表中依次存储本地APK文件的签名信息。本地APK文件是已经从某个远端服务器的应用市场中下载得到的。将本地APK文件的签名提取出来后,可以按照一定顺序存储到预先建立的线性列表中。也可以随机的存储到预先建立的线性列表中。
在从RSA文件中获取签名后,可以按照二分查找法从线性列表中查找是否存在该签名。如果存在,表示远端APK文件已经下载过,无需下载。如果不存在,则继续下载远端APK。
本申请实施例中,通过基于ZIP流的解压缩方式可以减少APK文件的下载量,从而节省本地服务器的下载资源成本,例如宽带资源成本,时间资源成本等。在基于ZIP流解压缩基础上,通过识别RSA文件中的签名来判断远端APK文件是否已经被下载到本地服务器,或者被存储到本地数据库中,从而更快速的发现APK文件是否存盗版、恶意行为、仿冒等问题。
应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
进一步参考图3,图3示出了根据本申请一个实施例的基于ZIP流解压缩比较APK文件装置300的示例性结构框图。
如图3所示,该装置可以布置在本地服务器侧执行,该装置300包括:
读取单元310,用于按序地读取远端APK文件中的压缩子文件。
本申请实施例中,压缩子文件是远端APK文件中的ZIP压缩文件序列的文件实体。APK文件实质是一个ZIP压缩文件序列,如图3所示,其包括多个压缩子文件,每个压缩子文件为一个文件实体,文件实体包括文件头部和压缩后文件数据。文件头部也可以称为文件的元信息。
读取压缩子文件,例如可以采用Java提供的ZipInputStreamAPI从ZIP压缩文件序列中按序地读取压缩子文件,例如ZIP压缩文件序列包括第一压缩子文件,第二压缩子文件,第三压缩子文件,以及核心目录。
本申请实施例中,例如可以通过ZipInputStream API解析远端APK文件,APK文件实质是压缩包,其格式例如可以是ZIP格式。例如,可以通过zip.getNextEntry()循环得到远端APK文件中的一个个压缩子文件,或者称为文件对象(例如FileEntry,或者ZipEntry)。
第一判断单元320,用于判断压缩子文件是否为RSA文件。
在本申请实施例中,可以通过getName可以得到每个FileEntry的文件名称。通过识别压缩子文件的文件名称的后缀,来判断压缩子文件是否为RSA文件。例如,文件名称可以在压缩子文件的文件头部。可以通过识别文件头部中指示的文件名称的后缀,来判断是否指示该压缩子文件为RSA文件。
现有技术中,安卓***对每一个APK文件都会进行签名。对于一个APK文件,解压后可以得到一个META-INF文件夹,该文件夹下例如可以包括MANIFEST.MF、CERT.SF和CERT.RSA文件。
MANIFEST.MF:该文件是摘要文件。程序遍历APK文件包内所有压缩子文件,逐个用SHA1生成摘要信息,再用Base64进行编码。如果APK文件中子文件发生改变,则在APK安装校验时,改变后的文件摘要信息与MANIFEST.MF的检验信息不同,程序就不能成功安装。该文件的名字是可变的,但文件扩展名为MF。
CERT.SF:该是对摘要文件的摘要文件。对MANIFEST.MF中的每一条内容分别进行SHA1计算,然后再用Base64编码转换。此外,把MANIFEST.MF的内容也进行SHA1计算,并且计算BASE64编码。将上述内容写入CERT.SF文件中。该文件的名字是可变的,但文件扩展名为SF。
CERT.RSA:该文件包括公钥、采用的加密算法等信息,以及使用私钥和CERT.SF生成的签名。该文件的名字是可变的,但文件扩展名为RSA。
第一判断单元例如可以包括:
获取子单元,用于获取压缩子文件的文件头部;
识别子单元,用于识别文件头部是否指示该压缩子文件为RSA文件。
解析单元330,用于如果是,则解析RSA文件,得到远端APK的签名。
本申请实施例中,通过解析RSA文件得到远端APK的签名。RSA文件是一个PKCS7格式的文件。根据不同的签名应用得到的APK文件,在解析RSA文件之后,得到结果也不同,例如,利用Eclipse签名或者Dodo APKtools签名。
解析RSA文件的方式,例如可以采用OpenSSL或者Java接口解析RSA文件或者其他等同的方式。OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
解析得到结果中,例如可以包括所有者,签发人,序列号,有效期,证书指纹等等。
读取单元还可以用于如果不是,则按序地读取ZIP压缩文件序列中下一个压缩子文件。
例如ZIP压缩文件序列中按序排列多个压缩子文件,对第一个压缩子文件进行识别后,如果第一个压缩子文件不是RSA文件,则继续识别第二个压缩子文件,直到识别出RSA文件。然后,解析RSA文件,得到远端APK的签名,通过解析得到的签名判断远端APK文件是否已经被下载过。
如果APK文件中任何一个文件发生变化,则MF文件中的摘要会发生变化,进而导致SF文件对应的摘要发生变化,RSA文件的签名也就会发生变化。因此,可以认为如果两个APK文件的签名相同,则两个APK文件相同。相对于现有技术,判断MF是否相同的方式,本申请实施例还可以进一步地识别APK文件是否为盗版,或仿冒文件,其安全性更好。
第二判断单元340,用于判断该签名是否存在于预先建立的签名列表中。
终止单元350,用于如果存在,则放弃下载远端APK。
本申请实施例中,预先建立的签名列表,例如可以是预先在本地服务器上建立的一个有序的线性列表,在该列表中依次存储本地APK文件的签名信息。本地APK文件是已经从某个远端服务器的应用市场中下载得到的。将本地APK文件的签名提取出来后,可以按照一定顺序存储到预先建立的线性列表中。也可以随机的存储到预先建立的线性列表中。
在从RSA文件中获取签名后,可以按照二分查找法从线性列表中查找是否存在该签名。如果存在,表示远端APK文件已经下载过,无需下载。如果不存在,则继续下载远端APK。
本申请实施例中,通过基于ZIP流的解压缩方式可以减少APK文件的下载量,从而节省本地服务器的下载资源成本,例如宽带资源成本,时间资源成本等。在基于ZIP流解压缩基础上,通过识别RSA文件中的签名来判断远端APK文件是否已经被下载到本地服务器,或者被存储到本地数据库中,从而更快速的发现APK文件是否存盗版、恶意行为、仿冒等问题。
应当理解,装置300中记载的诸单元或模块与参考图2描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于装置300及其中包含的单元,在此不再赘述。装置300可以预先实现在电子设备的浏览器或其他安全应用中,也可以通过下载等方式而加载到电子设备的浏览器或其安全应用中。装置300中的相应单元可以与电子设备中的单元相互配合以实现本申请实施例的方案。
下面参考图4,其示出了适于用来实现本申请实施例的服务器的计算机***400的结构示意图。
如图4所示,计算机***400包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有***400操作所需的各种程序和数据。CPU 401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
特别地,根据本公开的实施例,上文参考图2描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,上述计算机程序包含用于执行图2的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括读取单元、第一判断单元、解析单元、第二判断单元以及终止单元。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,读取单元还可以被描述为“用于按序地读取压缩子文件的单元”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中前述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,前述程序被一个或者一个以上的处理器用来执行描述于本申请的基于ZIP流解压缩比较APK文件方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种基于ZIP流解压缩比较APK文件方法,其特征在于,该方法包括:
按序地读取远端APK中的压缩子文件,所述压缩子文件是所述远端APK的ZIP压缩文件序列的文件实体;
判断所述压缩子文件是否为RSA文件;
如果是,则解析所述RSA文件,得到所述远端APK的签名;
判断所述签名是否存在于预先建立的签名列表中;
如果存在,则放弃下载所述远端APK。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
如果不存在,则继续下载所述远端APK。
3.根据权利要求1所述的方法,其特征在于,该方法包括:
如果不是,则按序地读取所述ZIP压缩文件序列中下一个压缩子文件。
4.根据权利要求1所述的方法,其特征在于,所述判断所述压缩子文件是否为RSA文件,包括:
获取所述压缩子文件的文件头部;
识别所述文件头部是否指示该压缩子文件为RSA文件。
5.根据权利要求1所述的方法,其特征在于,所述读取压缩子文件包括:
采用ZipInputStream接口API按序地读取所述压缩子文件。
6.一种基于ZIP流解压缩比较APK文件装置,其特征在于,该装置包括:
读取单元,用于按序地读取远端APK文件中的压缩子文件,所述压缩子文件是所述远端APK的ZIP压缩文件序列的文件实体;
第一判断单元,用于判断所述压缩子文件是否为RSA文件;
解析单元,用于如果是,则解析所述RSA文件,得到所述待下载APK的签名;
第二判断单元,用于判断所述签名是否存在于预先建立的签名列表中;
终止单元,用于如果存在,则终止下载所述APK。
7.根据权利要求6所述的装置,其特征在于,该装置还包括:
继续下载单元,用于如果不存在,则继续下载所述APK。
8.根据权利要求6所述的装置,其特征在于,该装置包括:
读取单元,还用于如果不是,则按序地读取所述ZIP压缩文件序列中下一个压缩子文件。
9.根据权利要求6所述的装置,其特征在于,所述第一判断单元,包括:
获取子单元,用于获取所述压缩子文件的文件头部;
识别子单元,用于识别所述文件头部是否指示该压缩子文件为RSA文件。
10.根据权利要求6所述的装置,其特征在于,所述读取单元用于采用ZipInputStream接口API按序地读取所述压缩子文件。
11.一种服务器,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任一所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811226605.7A CN109495271A (zh) | 2018-10-19 | 2018-10-19 | 比较apk文件方法、装置、服务器及其存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811226605.7A CN109495271A (zh) | 2018-10-19 | 2018-10-19 | 比较apk文件方法、装置、服务器及其存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109495271A true CN109495271A (zh) | 2019-03-19 |
Family
ID=65692209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811226605.7A Pending CN109495271A (zh) | 2018-10-19 | 2018-10-19 | 比较apk文件方法、装置、服务器及其存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109495271A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597155A (zh) * | 2020-05-20 | 2020-08-28 | 北京数科网维技术有限责任公司 | 一种适用于zip文件的文件线性化方法 |
CN112099840A (zh) * | 2020-08-28 | 2020-12-18 | 广州掌淘网络科技有限公司 | 应用程序包中的特征提取方法及设备 |
CN114422499A (zh) * | 2021-12-27 | 2022-04-29 | 北京奇艺世纪科技有限公司 | 一种文件下载方法、***及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559056A (zh) * | 2013-11-05 | 2014-02-05 | 广东欧珀移动通信有限公司 | 文件下载方法和装置 |
CN103873438A (zh) * | 2012-12-12 | 2014-06-18 | 鸿富锦精密工业(深圳)有限公司 | 压缩包上传去重***及方法 |
CN104346167A (zh) * | 2014-08-25 | 2015-02-11 | 腾讯科技(深圳)有限公司 | 生成应用渠道包的方法及装置 |
CN104794167A (zh) * | 2015-03-27 | 2015-07-22 | 北京洋浦伟业科技发展有限公司 | 获取相似应用的方法及装置 |
CN106331009A (zh) * | 2015-06-26 | 2017-01-11 | 广州市动景计算机科技有限公司 | 一种应用程序下载方法、装置及*** |
US20170270319A1 (en) * | 2014-11-28 | 2017-09-21 | Thomson Licensing | Method and device for providing verifying application integrity |
CN108111555A (zh) * | 2016-11-25 | 2018-06-01 | 阿里巴巴集团控股有限公司 | 用于控制安装包下载过程的方法及*** |
-
2018
- 2018-10-19 CN CN201811226605.7A patent/CN109495271A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103873438A (zh) * | 2012-12-12 | 2014-06-18 | 鸿富锦精密工业(深圳)有限公司 | 压缩包上传去重***及方法 |
CN103559056A (zh) * | 2013-11-05 | 2014-02-05 | 广东欧珀移动通信有限公司 | 文件下载方法和装置 |
CN104346167A (zh) * | 2014-08-25 | 2015-02-11 | 腾讯科技(深圳)有限公司 | 生成应用渠道包的方法及装置 |
US20170270319A1 (en) * | 2014-11-28 | 2017-09-21 | Thomson Licensing | Method and device for providing verifying application integrity |
CN104794167A (zh) * | 2015-03-27 | 2015-07-22 | 北京洋浦伟业科技发展有限公司 | 获取相似应用的方法及装置 |
CN106331009A (zh) * | 2015-06-26 | 2017-01-11 | 广州市动景计算机科技有限公司 | 一种应用程序下载方法、装置及*** |
CN108111555A (zh) * | 2016-11-25 | 2018-06-01 | 阿里巴巴集团控股有限公司 | 用于控制安装包下载过程的方法及*** |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597155A (zh) * | 2020-05-20 | 2020-08-28 | 北京数科网维技术有限责任公司 | 一种适用于zip文件的文件线性化方法 |
CN111597155B (zh) * | 2020-05-20 | 2023-07-14 | 北京数科网维技术有限责任公司 | 一种适用于zip文件的文件线性化方法 |
CN112099840A (zh) * | 2020-08-28 | 2020-12-18 | 广州掌淘网络科技有限公司 | 应用程序包中的特征提取方法及设备 |
CN114422499A (zh) * | 2021-12-27 | 2022-04-29 | 北京奇艺世纪科技有限公司 | 一种文件下载方法、***及装置 |
CN114422499B (zh) * | 2021-12-27 | 2023-12-05 | 北京奇艺世纪科技有限公司 | 一种文件下载方法、***及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8799662B2 (en) | Method and apparatus for validating the integrity of installer files prior to installation | |
US8429643B2 (en) | Secure upgrade of firmware update in constrained memory | |
CN109495271A (zh) | 比较apk文件方法、装置、服务器及其存储介质 | |
US20050234909A1 (en) | Method, computer program product, and data processing system for source verifiable audit logging | |
US8839446B2 (en) | Protecting archive structure with directory verifiers | |
US20160381075A1 (en) | Methods and apparatus for generating and using security assertions associated with containers in a computing environment | |
US8875303B2 (en) | Detecting pirated applications | |
CN112507328B (zh) | 一种文件签名方法、计算设备及存储介质 | |
US20070204165A1 (en) | Techniques for digital signature formation and verification | |
US8433906B2 (en) | Method and system for microlocking web content | |
CN109784058A (zh) | 版本强一致性校验方法、客户端、服务器及存储介质 | |
US8819361B2 (en) | Retaining verifiability of extracted data from signed archives | |
JP5106643B2 (ja) | Webページ改竄検知装置及びプログラム | |
WO2014049504A1 (en) | Detecting malicious advertisements using source code analysis | |
WO2017146094A1 (ja) | 攻撃コード検知装置、攻撃コード検知方法及び攻撃コード検知プログラム | |
CN106709281B (zh) | 补丁发放和获取方法、装置 | |
US7685511B2 (en) | Framework for providing and using schema data for markup languages | |
CN109033818B (zh) | 终端、验证方法和计算机可读存储介质 | |
CN113177193A (zh) | 水印添加方法、校验方法及终端设备 | |
KR101624387B1 (ko) | 소프트웨어 버스마크에 기반한 소프트웨어 자산 관리 방법 및 그 장치 | |
CN108255503A (zh) | 测量仪器的固件升级方法及装置 | |
CN114756837B (zh) | 一种基于区块链的数字内容溯源方法及*** | |
CN109002710A (zh) | 一种检测方法、装置及计算机可读存储介质 | |
Bento et al. | Full characterization of a class of graphs tailored for software watermarking | |
CN112183552A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190319 |