CN106971098B - 一种防重打包的方法及其装置 - Google Patents

一种防重打包的方法及其装置 Download PDF

Info

Publication number
CN106971098B
CN106971098B CN201610887188.5A CN201610887188A CN106971098B CN 106971098 B CN106971098 B CN 106971098B CN 201610887188 A CN201610887188 A CN 201610887188A CN 106971098 B CN106971098 B CN 106971098B
Authority
CN
China
Prior art keywords
installation package
digital watermark
watermark information
target file
repackaged
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
Application number
CN201610887188.5A
Other languages
English (en)
Other versions
CN106971098A (zh
Inventor
陈耀光
王加水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610887188.5A priority Critical patent/CN106971098B/zh
Publication of CN106971098A publication Critical patent/CN106971098A/zh
Priority to TW106130944A priority patent/TWI675310B/zh
Priority to PL17859699T priority patent/PL3528149T3/pl
Priority to ES17859699T priority patent/ES2874781T3/es
Priority to EP17859699.5A priority patent/EP3528149B1/en
Priority to PCT/CN2017/103403 priority patent/WO2018068633A1/zh
Priority to SG11201903264RA priority patent/SG11201903264RA/en
Priority to KR1020197013506A priority patent/KR102192880B1/ko
Priority to JP2019520118A priority patent/JP6746156B2/ja
Priority to US16/381,857 priority patent/US10685117B2/en
Priority to PH12019500785A priority patent/PH12019500785A1/en
Application granted granted Critical
Publication of CN106971098B publication Critical patent/CN106971098B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本申请公开了一种防重打包的方法及其装置。该方法包括:运行安装包中的目标文件并加载安装包中的安全动态库;根据目标文件中的代码执行下述步骤:获取目标文件中嵌入的数字水印信息,以及安全动态库中存储的验证信息;根据数字水印信息和验证信息,验证安装包是否是重打包的安装包。由于本申请中安装包本身包含有验证代码,因此,无论对操作系统如何改造,也无法避开系统验证安装包的过程,解决了现有技术系统通过校验安装包自签名来验证安装包是否被重打包时,有时无法有效地验证该安装包是否被重打包的问题。且解决了现有技术系统通过计算安装包哈希值来验证安装包是否被重打包时,有时验证效率较低的问题。

Description

一种防重打包的方法及其装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种防重打包的方法及其装置。
背景技术
目前,许多恶意应用软件通过重打包的方式修改原始的安装包,在原始的安装包中嵌入广告、自动下载恶意软件以及实现root等程序。
重打包的过程如图1所示:首先,对原始安装包进行反编译,获得该原始安装包的源代码,然后,用户对该源代码进行修改,例如,添加其他代码,添加的代码可以是广告,也可以是自动下载恶意软件的程序,等等,最后,对修改后的文件进行重打包,获得重打包的安装包。
由于上述重打包的过程中对源代码进行了修改,因此,重打包的安装包的自签名,不再是原始安装包的自签名。因此,现有技术中,防重打包的方法就可以通过校验安装包的自签名,从而判断该安装包是否是被重打包,具体验证过程如图2所示:
当某安装包被安装时,该安装包中的目标文件就会被运行,同时,在该安装包中的安全动态库也会被加载,通常,为了保证信息的安全性,会将一些验证信息存储在安全动态库中,该验证信息包括:该安装包对应的原始安装包的自签名。由于操作系统提供了验证安装包自签名的接口,因此,操作系统从该目标文件中获取该安装包的自签名,以及从该安全动态库中获取原始安装包的自签名后,验证该安装包的自签名与该原始安装包的自签名是否一致,若一致,则确定该安装包是原始安装包,若不一致,则确定该安装包是重打包的安装包。
现有技术中,防重打包的方法还可以是:操作系统计算本次安装的安装包的哈希(hash)值,并对该哈希值进行校验,具体地,将该哈希值与原始安装包的哈希值进行对比,若一致,则确定该安装包是原始安装包,若不一致,则确定该安装包是重打包的安装包。
上述两种现有技术中的防重打包方法,必须建立在完全信任的操作系统下,才能有效的防止重打包的情形,但由于目前很多操作系统具有开源性,因此,用户可以对原有的操作系统进行改造,使操作系统不进行校验安装包自签名的过程,以及不进行校验安装包哈希值的过程,这样,无论用户下载的安装包是否是经过重打包的安装包,操作系统都会默认该安装包是原始安装包。
另外,上述第二种防重打包的方法中,有时待安装的安装包占用的内存会很大,这样,操作系统在计算该安装包的哈希值时,会影响操作系统的验证效率。
发明内容
鉴于上述问题,本申请提供了一种防重打包的方法及其装置,用于解决现有技术中在系统通过校验安装包自签名,有时无法有效地验证该安装包是否被重打包的问题,以及解决现有技术中系统通过计算安装包的哈希值来校验安装包是否被重打包时,有时由于安装包占用内存较大,导致验证效率较低的问题。
本申请提供了一种防重打包的方法,该方法包括:
运行安装包中的目标文件并加载所述安装包中的安全动态库;
根据所述目标文件中的代码执行下述步骤:
获取所述目标文件中嵌入的数字水印信息,以及所述安全动态库中存储的验证信息;
根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包。
相应地,本申请还提供了一种防重打包的装置,该装置包括:
运行单元和执行单元,其中:
所述运行单元,运行安装包中的目标文件并加载所述安装包中的安全动态库;
所述执行单元,根据所述目标文件中的代码执行下述步骤:
获取所述目标文件中嵌入的数字水印信息,以及所述安全动态库中存储的验证信息;
根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包。
本申请提供防重打包的方法中,安装包本身包含有验证代码,当该安装包被安装时,操作系统就会根据该代码,获取该目标文件中嵌入的数字水印信息,以及获取该安装包中的安全动态库中的验证信息,并根据该数字水印信息和该验证信息,验证该安装包是否是重打包的安装包。采用本申请提供的防重打包的方法,获得的有益效果如下:
1、由于本申请中安装包本身包含有用于验证该安装包是否被重打包的代码,因此,无论对操作系统如何改造,也无法避开验证安装包的过程,解决了现有技术通过系统校验安装包自签名来验证安装包是否被重打包时,由于系统有时会绕过验证安装自签名的过程,导致无法有效地验证该安装包是否被重打包的问题。
2、由于本申请是根据数字水印信息和验证信息,验证该安装包是否被重打包,因此,相比于现有技术通过计算安装包哈希值来验证安装包是否被重打包的方法,本申请验证安装包是否被重打包的效率更高。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为现有技术提供的一种重打包的方法的流程示意图;
图2为现有技术提供的一种防重打包的方法的流程示意图;
图3为本申请实施例提供的一种防重打包的方法的流程示意图;
图4为本申请实施例提供的在目标文件中嵌入数字水印信息的流程示意图;
图5为本申请实施例提供的另一种防重打包的方法的流程示意图;
图6为本申请实施例提供的查找数字水印信息的方法的流程示意图;
图7为本申请实施例提供的再一种防重打包的方法的流程示意图;
图8为本申请实施例提供的又一种防重打包的方法的流程示意图;
图9为本申请实施例提供的一种防重打包的装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
本申请提供了一种防重打包的方法,用于解决现有技术中在系统通过校验安装包自签名,有时无法有效地验证该安装包是否被重打包的问题,以及解决现有技术中系统通过计算安装包的哈希值来校验安装包是否被重打包时,有时由于安装包占用内存较大,导致验证效率较低的问题。该方法的具体流程如图3所示,具体包括以下步骤:
步骤301:运行安装包中的目标文件并加载所述安装包中的安全动态库。
在本步骤中,当用户下载了某个安装包,并对该安装包进行安装时,操作系统就会运行该安装包中的目标文件,并同时加载该安装包中的安全动态库。该目标文件是根据预设的代码编译后得到的目标文件,且在编译后的目标文件中嵌入了数字水印信息。该数字水印信息可以是字符串,还可以是指令,等等,该安全动态库中存储有关该安装包的验证信息,该验证信息用于验证该安装包是否是重打包的安装包。
上述在目标文件中嵌入数字水印信息的方式,可以是在目标文件的末尾嵌入该数字水印信息,或者是在目标文件的其他的位置上嵌入该数字水印信息。
上述操作系统可以是安卓系统,则目标文件可以是dex文件,该dex文件具体为安卓系统下可执行文件的类型,采用java代码编写而成,安全动态库可以是so库,采用c/c++编写而成,通常so库里保存有一些安全信息,例如,验证信息,当可执行的文件加载或运行时,由操作系统加载so库;或者,该操作系统可以是windows,则目标文件可以是exe文件,安全动态库为dll库,等等,这里不对该操作系统、目标文件以及动态安全库进行限定。
如图4所示,如果该目标文件是dex文件,在该目标文件中嵌入数字水印信息时,为了保证该目标文件数据的完整性和准确性,会根据该数字水印信息,重新计算该目标文件头部的校验总和(checksum)、签名(signature)、文件大小(filesize)等对应的值。
需要说明的是:如果该安装包是重打包的安装包,用户在对原始安装包进行重打包时,虽然用户可以修改原始安装包中原始文件的代码,但该原始安装包的安全动态库中的验证信息却不容易被修改,因此,该安装包的安全动态库中仍会保存有原始安装包的验证信息。假设该原始安装包中也嵌入了数字水印信息,则存储在安全动态库中的验证信息可以是嵌入该原始文件中的数字水印信息,具体原因如图5所示:
当对原始安装包重打包时,需要先将该原始安装包进行反编译,获得该原始安装包对应的源代码文件,由于数字水印信息是在根据预设代码编译成原始文件后,才嵌入到该原始文件中的,因此,在对原始安装包反编译的过程中,该数字水印信息A将会丢失,然后,用户对源代码文件进行修改,如图5所示,可以是添加其他代码,同时,用户为了伪装该安装包重打包的身份,还会在源代码文件中嵌入数字水印信息B,最后,对该源代码文件进行重打包,重打包后的安装包的安全动态库中仍存储有验证信息A。因此,可以将数字水印信息A可以作为原始安装包的标识,用于验证该安装包是否被重打包。
为了清楚地说明本申请实施例,下面就以在目标文件的末尾嵌入数字水印信息为例,说明本申请实施例中的各个步骤。
步骤302:根据所述目标文件中的代码执行下述步骤:
获取所述目标文件中嵌入的数字水印信息,以及所述安全动态库中存储的验证信息,并根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包。
在本步骤中,操作系统根据目标文件中的代码,获取目标文件的数字水印信息的方法如图6所示:根据目标文件的原始长度,确定数字水印信息在该目标文件中的起始地址,并根据该起始地址,从该目标文件中获取该数字水印信息,这里的目标文件的原始长度为在嵌入数字水印信息前该目标文件的长度。
当操作系统获得该数字水印信息,以及从安全动态库中获取验证信息后,根据该数字水印信息和验证信息,验证该安装包是否是重打包的安装包,具体的验证方法可以由数字水印信息的类型来决定,如表1所示:
Figure BDA0001128260790000061
表1
当数字水印信息为字符串时,验证该数字水印信息与验证信息是否一致,若一致,则确定该安装包是原始安装包,若不一致,则确定该安装包是重打包的安装包。
在实际应用中,如果数字水印信息为字符串,该字符串可能是固定长度的字符串,也可能是随机长度的字符串。当数字水印信息为固定长度的字符串时,直接验证该字符串与安全动态库中的验证信息是否一致;或者计算当前下载安装包对应的水印值与安全动态库中的验证信息是否一致,如图7所示为dex文件中通过计算水印值来验证安装包是否被重打包的方法,具体如下:
Dex文件包括dex header和dex body,其中,dex header中包含data size和dataoff,dex body中包含data,且data size表示该data的大小,data off表示该data的偏移。假设在原始dex文件中嵌入了数字水印信息,当对该原始dex文件进行重打包时,具体是将dex body中data部分对应的代码进行修改,修改后,不仅嵌入在原始dex文件中的数字水印信息将会丢失,而且data的大小将会发生改变,则dex header中data size对应的值会发生变化;对该原始dex文件进行重打包,还可以是对dex body中除了data以外其它部分对应的代码进行修改,修改后,同样嵌入在原始dex文件中的数字水印信息将会丢失,而且dexbody中data的位置会发生偏移(如图7所示),则dex header中data off对应的值会发生变化。
假设原始安装包对应水印值的计算方法为“data size+data off”,即水印值为data size对应的值加data off对应的值。当用户对该原始安装包重打包时,data off或data size对应的值就会发生改变,则重打包的安装包对应的水印值也会发生变化,这时,操作系统只要验证重打包的安装包对应的水印值与安全动态库中的验证信息是否一致,就可以确定出该安装包是否是被重打包。这里水印值的计算方法只是示例性的说明,在实际应用中,可以根据实际情况进行设定水印值的计算方法,例如,可以是“data size-dataoff”,或者是“data size/data off”,等等。
利用上述方法验证当前下载安装包是否被重打包时,即使是在重打包的安装包中嵌入原始安装包中的数字水印信息,该安装包对应的水印值也会发生变化,因此,操作系统根据该安装包的水印值可以准确地判断出该安装包是否被重打包。
当数字水印信息为随机长度的字符串时,可以先计算该字符串的长度,然后,验证该字符串的长度是否与安全动态库中的验证信息的长度一致,若不一致,则直接确定该安装包是重打包的安装包,若一致,再验证该字符串与安全动态库中的验证信息是否一致,若仍一致,则确定该安装包是原始安装包,若不一致,则确定该安装包是重打包的安装包。
当数字水印信息为指令时,验证安全包的方法有很多种,下面示例性的说明三种验证方法:
第一种方法,与上述数字水印信息为字符串时验证安装包的方法类似,即:操作系统验证该指令与安全动态库中的验证信息是否一致,若一致,则确定该安装包是原始安装包,若不一致,则确定该安装包是重打包的安装包。
第二种方法,操作系统根据该指令执行相应操作,获得操作结果,然后,验证该操作结果与验证信息是否一致,若一致,则确定该安装包是原始安装包,若不一致,则确定该安装包是重打包的安装包。
例如,该指令可以是“查询XX地址中内容,是否与安全动态库中的验证信息一致”,操作系统根据该指令,从目标文件中的XX地址中,查询该地址对应的内容(操作结果),并验证该内容是否与安全动态库中的验证信息一致,若一致,则确定该安装包是原始安装包,若不一致,则确定该安装包是重打包的安装包。
第三种方法,操作系统根据该指令执行相应操作,获得操作结果,验证该操作结果与该验证信息中的操作结果是否一致,以及验证该指令与该验证信息中的指令是否一致,若两次验证的结果均为“一致”,则确定该安装包是原始安装包,若两次验证中任一次验证的结果为“不一致”,或者是两次验证的结果均为“不一致”,则确定该安装包是重打包的安装包。
为了清楚地说明该验证方法,这里通过一个简单的例子来说明该验证方法,假设安全动态库中验证信息中的操作结果为“2”,操作指令为“1+1”,而目标文件中的数字水印信息对应的指令为“3-1”,操作系统根据该指令执行操作后,获得的操作结果也为“2”,如果操作系统只验证该操作结果与验证信息中的操作结果是否一致,就会误认为该装包是原始安装包,但如果操作系统还验证指令与验证信息中的指令是否一致,就会准确地判断出该安装包是否被重打包。
上述目标文件中数字水印信息对应的指令可以是简单的“返回”指令,或者是其他实现与操作系统之间交互的指令,例如,该指令可以是“让操作系统验证目标文件自签名与安全动态库中的验证信息是否一致”,再例如,该指令还可以是“让操作系统验证嵌入数字水印信息前目标文件的长度,与安全动态库中的保存的验证信息是否一致”,等等,可以根据用户的需求进行设定指令。
另外,如果该安装包是重打包的安装包,还可能存在这样一种情形:该安装包对应的原始文件中嵌入了数字水印信息,由前述内容可知,在对该原始安装包重打包的过程中,将会丢失原始安装包中的数字水印信息,如果用户在对该原始文件的代码修改后,没有相应地加入数字水印信息,这时,操作系统只要根据该安装包中的代码,查询该安装包中的目标文件中是否具有该数字水印信息即可。
上述验证安装包的方法只是示例性的说明,在实际应用中,数字水印信息的类型有很多种,对应的验证方法也会有很多种,这里不作具体限定。
本申请提供防重打包的方法中,安装包本身包含有验证代码,当该安装包被安装时,如图8所示,操作系统就会根据该代码,获取该安装包中的安全动态库中的验证信息,以及获取该目标文件中嵌入的数字水印信息,并根据该数字水印信息和该验证信息,验证该安装包是否是重打包的安装包。采用本申请提供的防重打包的方法,获得的有益效果如下:
1、由于本申请中安装包本身包含有用于验证该安装包是否被重打包的代码,因此,无论对操作系统如何改造,也无法避开验证安装包的过程,解决了现有技术通过系统校验安装包自签名来验证安装包是否被重打包时,由于系统有时会绕过验证安装自签名的过程,导致无法有效地验证该安装包是否被重打包的问题。
2、由于本申请是根据数字水印信息和验证信息,验证该安装包是否被重打包,因此,相比于现有技术通过计算安装包哈希值来验证安装包是否被重打包的方法,本申请验证安装包是否被重打包的效率更高。
相应地,本申请还提供了一种防重打包的装置,同样用于解决现有技术中在系统通过校验安装包自签名,有时无法有效地验证该安装包是否被重打包的问题,以及解决现有技术中系统通过计算安装包的哈希值来校验安装包是否被重打包时,有时由于安装包占用内存较大,导致验证效率较低的问题。该装置的具体结构如图9所示,具体包括以下单元:
运行单元901和执行单元902,其中:
所述运行单元901,运行安装包中的目标文件并加载所述安装包中的安全动态库;
所述执行单元902,根据所述目标文件中的代码执行下述步骤:
获取所述目标文件中嵌入的数字水印信息,以及所述安全动态库中存储的验证信息;
根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包。
本装置实施例的工作流程是:首先,运行单元901运行安装包中的目标文件,并加载该安装包中的安全动态库,其次,执行单元902,根据该目标文件中的代码执行下述步骤:获取该目标文件中嵌入的数字水印信息,以及该安全动态库中存储的验证信息,根据该数字水印信息和验证信息,验证该安装包是否是重打包的安装包。
本装置实施例实现防重打包的方式有很多种,例如,在第一种实施方式中,所述目标文件是将预设的代码进行编译后得到的目标文件;所述数字水印信息是在编译后得到的目标文件中的末尾嵌入的。
在第二种实施方式中,获取所述目标文件中嵌入的数字水印信息,具体包括:
根据所述目标文件的原始长度,确定所述数字水印信息在所述目标文件中的起始地址,其中,所述原始长度为嵌入所述数字水印信息前所述目标文件的长度;
根据所述起始地址,从所述目标文件中获取所述数字水印信息。
在第三种实施方式中,根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包,具体包括:
验证所述数字水印信息与验证信息是否一致;
若一致,则确定所述安装包是原始安装包;
若不一致,则确定所述安装包是重打包的安装包。
在第四种实施方式中,根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包,具体包括:
当所述数字水印信息为指令时,根据所述指令执行操作,获得操作结果;
验证所述操作结果与验证信息是否一致;
若一致,则确定所述安装包是原始安装包;
若不一致,则确定所述安装包是重打包的安装包。
在第五种实施方式中,根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包,具体包括:
当所述数字水印信息为指令时,根据所述指令执行操作,获得操作结果;
验证所述操作结果与所述验证信息中的操作结果是否一致,以及验证所述指令与所述验证信息中的指令是否一致;
若均一致,则确定所述安装包是原始安装包;
否则,则确定所述安装包是重打包的安装包。
应用本装置实施例获得的有益效果与前述方法实施例获得的有益效果相同或类似,为避免重复,这里不再赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (13)

1.一种防重打包的方法,其特征在于,该方法包括:
运行安装包中的目标文件并加载所述安装包中的安全动态库;
根据所述目标文件中的验证代码执行下述步骤:
确定所述目标文件中的数字水印信息在所述目标文件中的起始地址;
根据所述起始地址,获取所述目标文件中嵌入的数字水印信息;
获取所述安全动态库中存储的验证信息;
根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包。
2.根据权利要求1所述的方法,其特征在于,所述目标文件是将预设的代码进行编译后得到的目标文件;
所述数字水印信息是在编译后得到的目标文件中的末尾嵌入的。
3.根据权利要求2所述的方法,其特征在于,获取所述目标文件中嵌入的数字水印信息,具体包括:
根据所述目标文件的原始长度,确定所述数字水印信息在所述目标文件中的起始地址,其中,所述原始长度为嵌入所述数字水印信息前所述目标文件的长度;
根据所述起始地址,从所述目标文件中获取所述数字水印信息。
4.根据权利要求1所述的方法,其特征在于,根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包,具体包括:
验证所述数字水印信息与验证信息是否一致;
若一致,则确定所述安装包是原始安装包;
若不一致,则确定所述安装包是重打包的安装包。
5.根据权利要求1所述的方法,其特征在于,根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包,具体包括:
当所述数字水印信息为指令时,根据所述指令执行操作,获得操作结果;
验证所述操作结果与验证信息是否一致;
若一致,则确定所述安装包是原始安装包;
若不一致,则确定所述安装包是重打包的安装包。
6.根据权利要求1所述的方法,其特征在于,根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包,具体包括:
当所述数字水印信息为指令时,根据所述指令执行操作,获得操作结果;
验证所述操作结果与所述验证信息中的操作结果是否一致,以及验证所述指令与所述验证信息中的指令是否一致;
若均一致,则确定所述安装包是原始安装包;
否则,则确定所述安装包是重打包的安装包。
7.根据权利要求1~6任一所述的方法,其特征在于,所述方法应用于安卓操作系统中;
所述目标文件为dex文件;
所述安全动态库为so库。
8.一种防重打包的装置,其特征在于,该装置包括:
运行单元和执行单元,其中:
所述运行单元,运行安装包中的目标文件并加载所述安装包中的安全动态库;
所述执行单元,根据所述目标文件中的验证代码执行下述步骤:
确定所述目标文件中的数字水印信息在所述目标文件中的起始地址;
根据所述起始地址,获取所述目标文件中嵌入的数字水印信息;
获取所述安全动态库中存储的验证信息;
根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包。
9.根据权利要求8所述的装置,其特征在于,所述目标文件是将预设的代码进行编译后得到的目标文件;
所述数字水印信息是在编译后得到的目标文件中的末尾嵌入的。
10.根据权利要求9所述的装置,其特征在于,获取所述目标文件中嵌入的数字水印信息,具体包括:
根据所述目标文件的原始长度,确定所述数字水印信息在所述目标文件中的起始地址,其中,所述原始长度为嵌入所述数字水印信息前所述目标文件的长度;
根据所述起始地址,从所述目标文件中获取所述数字水印信息。
11.根据权利要求8所述的装置,其特征在于,根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包,具体包括:
验证所述数字水印信息与验证信息是否一致;
若一致,则确定所述安装包是原始安装包;
若不一致,则确定所述安装包是重打包的安装包。
12.根据权利要求8所述的装置,其特征在于,根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包,具体包括:
当所述数字水印信息为指令时,根据所述指令执行操作,获得操作结果;
验证所述操作结果与验证信息是否一致;
若一致,则确定所述安装包是原始安装包;
若不一致,则确定所述安装包是重打包的安装包。
13.根据权利要求8所述的装置,其特征在于,根据所述数字水印信息和验证信息,验证所述安装包是否是重打包的安装包,具体包括:
当所述数字水印信息为指令时,根据所述指令执行操作,获得操作结果;
验证所述操作结果与所述验证信息中的操作结果是否一致,以及验证所述指令与所述验证信息中的指令是否一致;
若均一致,则确定所述安装包是原始安装包;
否则,则确定所述安装包是重打包的安装包。
CN201610887188.5A 2016-10-11 2016-10-11 一种防重打包的方法及其装置 Active CN106971098B (zh)

Priority Applications (11)

Application Number Priority Date Filing Date Title
CN201610887188.5A CN106971098B (zh) 2016-10-11 2016-10-11 一种防重打包的方法及其装置
TW106130944A TWI675310B (zh) 2016-10-11 2017-09-11 防止重打包的方法及其裝置
SG11201903264RA SG11201903264RA (en) 2016-10-11 2017-09-26 Method And Apparatus For Anti-Repackaging
ES17859699T ES2874781T3 (es) 2016-10-11 2017-09-26 Procedimiento y dispositivo de prevención de reempaquetado de software
EP17859699.5A EP3528149B1 (en) 2016-10-11 2017-09-26 Software repackaging prevention method and device
PCT/CN2017/103403 WO2018068633A1 (zh) 2016-10-11 2017-09-26 一种防重打包的方法及其装置
PL17859699T PL3528149T3 (pl) 2016-10-11 2017-09-26 Sposób i przyrząd do przeciwdziałania przepakowywaniu
KR1020197013506A KR102192880B1 (ko) 2016-10-11 2017-09-26 소프트웨어 재패키징 방지 방법 및 장치
JP2019520118A JP6746156B2 (ja) 2016-10-11 2017-09-26 ソフトウェアリパッケージング防止方法および装置
US16/381,857 US10685117B2 (en) 2016-10-11 2019-04-11 Method and apparatus for anti-repackaging
PH12019500785A PH12019500785A1 (en) 2016-10-11 2019-04-11 Method and apparatus for anti-repackaging

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610887188.5A CN106971098B (zh) 2016-10-11 2016-10-11 一种防重打包的方法及其装置

Publications (2)

Publication Number Publication Date
CN106971098A CN106971098A (zh) 2017-07-21
CN106971098B true CN106971098B (zh) 2020-06-02

Family

ID=59334735

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610887188.5A Active CN106971098B (zh) 2016-10-11 2016-10-11 一种防重打包的方法及其装置

Country Status (11)

Country Link
US (1) US10685117B2 (zh)
EP (1) EP3528149B1 (zh)
JP (1) JP6746156B2 (zh)
KR (1) KR102192880B1 (zh)
CN (1) CN106971098B (zh)
ES (1) ES2874781T3 (zh)
PH (1) PH12019500785A1 (zh)
PL (1) PL3528149T3 (zh)
SG (1) SG11201903264RA (zh)
TW (1) TWI675310B (zh)
WO (1) WO2018068633A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106971098B (zh) 2016-10-11 2020-06-02 阿里巴巴集团控股有限公司 一种防重打包的方法及其装置
CN107256349B (zh) * 2017-06-13 2020-02-28 广州阿里巴巴文学信息技术有限公司 动态库防盗用方法、装置、电子设备及可读存储介质
KR101920597B1 (ko) * 2017-11-16 2018-11-21 숭실대학교산학협력단 동적 코드 추출 기반 자동 분석 방지 우회 및 코드 로직 해석 장치
CN108304697B (zh) * 2017-12-11 2020-05-19 深圳壹账通智能科技有限公司 检测app二次打包的方法、装置及移动终端
CN109739544B (zh) * 2018-12-25 2022-11-04 北京三快在线科技有限公司 用于生成应用安装包的方法、装置及电子设备
CN109901981A (zh) * 2019-02-28 2019-06-18 北京智游网安科技有限公司 一种截屏泄露处理方法、智能终端及存储介质
CN110704816B (zh) * 2019-09-29 2021-10-22 武汉极意网络科技有限公司 接口破解的识别方法、装置、设备及存储介质
CN113127418A (zh) * 2019-12-30 2021-07-16 Oppo广东移动通信有限公司 文件检测方法、装置、终端及存储介质
CN113132421B (zh) * 2019-12-30 2022-11-04 Oppo广东移动通信有限公司 文件检测方法、装置、终端及存储介质
CN113127859B (zh) * 2019-12-30 2024-04-12 Oppo广东移动通信有限公司 待检测文件的检测方法、装置、终端及存储介质
CN113709195A (zh) * 2020-05-20 2021-11-26 广州汽车集团股份有限公司 一种车辆软件升级方法、装置及系统
CN112069468B (zh) * 2020-08-26 2023-05-30 上海上讯信息技术股份有限公司 一种页面动态水印的方法及设备
CN113641964B (zh) * 2021-10-19 2022-05-17 北京邮电大学 重打包应用检测方法、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
CN104932902A (zh) * 2015-07-09 2015-09-23 魅族科技(中国)有限公司 一种生成apk文件的方法及终端
CN105956456A (zh) * 2016-04-26 2016-09-21 南京邮电大学 一种对Android系统进行四重联合签名验证的实现方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW480439B (en) * 1998-12-17 2002-03-21 Inventec Corp Method for examining correctness of system operation
US7421586B2 (en) * 1999-05-12 2008-09-02 Fraunhofer Gesselschaft Protecting mobile code against malicious hosts
US20060010430A1 (en) * 2001-05-04 2006-01-12 Thales Device and process for the signature, the marking and the authentication of computer programs
WO2004023313A1 (en) * 2002-09-04 2004-03-18 Fraunhofer Crcg, Inc. Protecting mobile code against malicious hosts cross references to related applications
US8024571B2 (en) * 2006-12-22 2011-09-20 Schlumberger Technology Corporation Method of and system for watermarking application modules
US8375458B2 (en) * 2007-01-05 2013-02-12 Apple Inc. System and method for authenticating code executing on computer system
US8950007B1 (en) * 2008-04-07 2015-02-03 Lumension Security, Inc. Policy-based whitelisting with system change management based on trust framework
WO2010067538A1 (ja) * 2008-12-10 2010-06-17 住友ベークライト株式会社 顆粒状の半導体封止用エポキシ樹脂組成物ならびにそれを用いた半導体装置及び半導体装置の製造方法
US8844032B2 (en) * 2012-03-02 2014-09-23 Sri International Method and system for application-based policy monitoring and enforcement on a mobile device
US20120317421A1 (en) * 2012-06-19 2012-12-13 Concurix Corporation Fingerprinting Executable Code
KR101498820B1 (ko) * 2013-11-06 2015-03-05 순천향대학교 산학협력단 안드로이드 환경에서의 어플리케이션 리패키징 탐지 방법
US9619665B2 (en) * 2014-07-22 2017-04-11 Cheng-Han KO Method and system for adding dynamic labels to a file and encrypting the file
KR101695639B1 (ko) * 2014-08-13 2017-01-16 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
CN104239757B (zh) * 2014-09-30 2017-04-19 北京奇虎科技有限公司 应用程序防止逆向的方法及装置、运行方法及终端
CN105205356B (zh) * 2015-09-17 2017-12-29 清华大学深圳研究生院 一种app应用重打包检测方法
CN106971098B (zh) * 2016-10-11 2020-06-02 阿里巴巴集团控股有限公司 一种防重打包的方法及其装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
CN104932902A (zh) * 2015-07-09 2015-09-23 魅族科技(中国)有限公司 一种生成apk文件的方法及终端
CN105956456A (zh) * 2016-04-26 2016-09-21 南京邮电大学 一种对Android系统进行四重联合签名验证的实现方法

Also Published As

Publication number Publication date
PH12019500785A1 (en) 2019-11-11
SG11201903264RA (en) 2019-05-30
ES2874781T3 (es) 2021-11-05
EP3528149A1 (en) 2019-08-21
US20190243974A1 (en) 2019-08-08
TWI675310B (zh) 2019-10-21
JP6746156B2 (ja) 2020-08-26
EP3528149B1 (en) 2021-04-07
TW201814576A (zh) 2018-04-16
KR20190061075A (ko) 2019-06-04
PL3528149T3 (pl) 2021-10-11
KR102192880B1 (ko) 2020-12-22
CN106971098A (zh) 2017-07-21
EP3528149A4 (en) 2019-10-16
WO2018068633A1 (zh) 2018-04-19
US10685117B2 (en) 2020-06-16
JP2019535087A (ja) 2019-12-05

Similar Documents

Publication Publication Date Title
CN106971098B (zh) 一种防重打包的方法及其装置
CN106569859B (zh) 一种目标文件的加载方法及装置
CN109062582B (zh) 一种应用安装包的加密方法及装置
CN105786538B (zh) 基于安卓系统的软件升级方法和装置
CN107092824B (zh) 一种应用程序的运行方法及装置
CN109933350B (zh) 在应用中嵌入代码的方法、装置及电子设备
WO2016119548A1 (zh) 防软件反编译的方法、防反编译软件启动的方法和装置
US20180189313A1 (en) Method and apparatus for compressing an application
CN113326058A (zh) 一种应用的版本更新方法、装置、设备及介质
CN109815682B (zh) 一种对权限进行追踪管理的方法、装置和计算机记录介质
US20150026483A1 (en) Systems and Methods for Mobile Application Protection
CN104915594A (zh) 应用程序运行方法及装置
CN107301105B (zh) 校验热补丁或者动态库的方法及装置
CN106569841B (zh) 一种文件加载方法和装置
KR101863325B1 (ko) 역공학 방지 방법 및 장치
CN107463423B (zh) 依赖包工具的验证方法、存储介质、电子设备及系统
CN105653961A (zh) 一种提高移动终端应用加载安全性的方法和装置
CN113220314B (zh) App资源加载及apk生成方法、装置、设备及介质
CN113641389B (zh) 基于OpenCPU的软件升级方法、装置及设备
CN105260196A (zh) 一种Android系统支持QT APP的实现方法
WO2017039588A1 (en) Software patch fix based on checksums
CN106959870B (zh) Nginx动态模块加载方法和装置
CN106897588B (zh) 一种标签函数的处理方法及装置
CN112698842A (zh) 获取应用程序的额外信息的方法及装置
CN112558944B (zh) 一种app生成方法、装置、处理设备及计算机可读存储介质

Legal Events

Date Code Title Description
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
TR01 Transfer of patent right

Effective date of registration: 20201015

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201015

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.

TR01 Transfer of patent right