CN112257033A - 一种应用的打包方法、装置及其设备 - Google Patents
一种应用的打包方法、装置及其设备 Download PDFInfo
- Publication number
- CN112257033A CN112257033A CN202011096974.6A CN202011096974A CN112257033A CN 112257033 A CN112257033 A CN 112257033A CN 202011096974 A CN202011096974 A CN 202011096974A CN 112257033 A CN112257033 A CN 112257033A
- Authority
- CN
- China
- Prior art keywords
- target
- target application
- application
- data
- encryption algorithm
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000004806 packaging method and process Methods 0.000 title claims abstract description 48
- 238000009434 installation Methods 0.000 claims abstract description 34
- 230000004048 modification Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 7
- 238000012795 verification Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012856 packing Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012536 packaging technology Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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/602—Providing cryptographic facilities or services
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种应用的打包方法、装置及其设备,用于解决现有技术中应用容易被非法篡改的问题。所述方法包括:在对目标应用进行打包时,基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据;将所述加密后数据存储到所述目标应用的字节码中的指定存储位置;将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集;将修改后的所述目标应用和所述第一加密算法对应的解密程序打包得到所述目标应用的安装包,并基于所述目标应用的签名证书对应的私钥对所述目标应用的安装包进行签名。
Description
技术领域
本申请涉及应用打包技术领域,尤其涉及一种应用的打包方法、装置及其设备。
背景技术
在现有的应用分发***中,为了保证发布的应用和该应用的更新数据的来源均是该应用的原始开发者,校验发布至应用市场的应用是否被篡改的主要方法通常是:校验该应用的公钥与该应用首次发布时的公钥是否一致,以保证该应用和其更新数据是被同一私钥加密的。
但是,部分非法应用市场通常不会对发布的应用进行上述校验,使得许多更新数据的公钥与首次发布时的公钥不一致的应用也被分发到用户的电子设备中;并且在电子设备中,通常也只会校验应用安装包中各文件公钥的一致性,而不会验证应用的来源,这就导致被篡改的应用能够轻易地被安装到用户的电子设备中,从而为非法的第三方牟取不法利润。
因此,亟需一种应用的打包方法以有效阻止应用被非法篡改后的二次发行或发布,从而提高应用的安全性和可靠性。
发明内容
本申请实施例提供了一种应用的打包方法、装置及其设备,以解决现有技术中应用容易被非法篡改的问题。
为解决上述技术问题,本申请实施例是这样实现的:
第一方面,提出了一种应用的打包方法,所述方法包括:
在对目标应用进行打包时,基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,所述对称加密密钥基于第二加密算法对所述目标应用的签名证书对应的公钥加密得到;
将所述加密后数据存储到所述目标应用的字节码中的指定存储位置;
将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,所述调整指令集用于读取所述加密后数据并根据所述目标应用的签名证书对应的公钥、所述第二加密算法和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据;
将修改后的所述目标应用和所述第一加密算法对应的解密程序打包得到所述目标应用的安装包,并基于所述目标应用的签名证书对应的私钥对所述目标应用的安装包进行签名。
第二方面,提出了一种应用的打包装置,包括:
加密单元,用于在对目标应用进行打包时,基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,所述对称加密密钥基于第二加密算法对所述目标应用的签名证书对应的公钥加密得到;
存储单元,用于将所述加密后数据存储到所述目标应用的字节码中的指定存储位置;
修改单元,用于将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,所述调整指令集用于读取所述加密后数据并根据所述目标应用的签名证书对应的公钥、所述第二加密算法和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据;
打包单元,用于将修改后的所述目标应用和所述第一加密算法对应的解密程序打包得到所述目标应用的安装包,并基于所述目标应用的签名证书对应的私钥对所述目标应用的安装包进行签名。
第三方面,提出了一种电子设备,包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现如上述第一方面所述的应用的打包方法的步骤。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现如上述第一方面所述的应用的打包方法的步骤。
本申请实施例采用上述技术方案至少可以达到下述技术效果:
本申请实施例中提供的应用的打包方法,能够在对目标应用进行打包时,基于对称加密密钥和第一加密算法对目标应用的字节码中的目标数据进行加密得到加密后数据,该对称加密密钥基于第二加密算法对目标应用的签名证书对应的公钥加密得到;将加密后数据存储到目标应用的字节码中的指定存储位置;将目标应用的字节码中读取目标数据的原始指令修改为调整指令集,调整指令集用于读取加密后数据并根据目标应用的签名证书对应的公钥、第二加密算法和第一加密算法对应的解密程序,对加密后数据进行解码得到目标数据;将修改后的目标应用和第一加密算法对应的解密程序打包得到目标应用的安装包,并基于目标应用的签名证书对应的私钥对目标应用的安装包进行签名。
这样,由于能够对目标应用的字节码中的数据进行加密,使得被篡改后的目标应用在数据紊乱的情况下,即便能够发布至应用市场或被用户下载,但依然无法正常运行,从而既能够防止目标应用被篡改,又能通过确定目标应用是否正常运行来确定目标应用是否被篡改,有效阻止了被篡改应用的二次发行,提高了应用市场中的应用的安全性和可靠性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书一个实施例提供的一种应用的打包方法的实施流程示意图;
图2为本说明书一个实施例提供的应用的打包方法应用在实际场景中的示意图;
图3为本说明书一个实施例提供的一种应用的打包装置的结构示意图;
图4为本说明书一个实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
为解决现有技术中应用容易被非法篡改的问题,本说明书实施例提供一种应用的打包方法。
可选地,本说明书一个或多个实施例提供的一种应用的打包方法的实现流程示意图如图1所示,包括:
步骤110,在对目标应用进行打包时,基于对称加密密钥和第一加密算法对目标应用的字节码中的目标数据进行加密得到加密后数据;
其中,该对称加密密钥基于第二加密算法对目标应用的签名证书对应的公钥加密得到;目标应用的字节码是对目标应用的代码进行编译得到的;目标数据为目标应用的字节码中可编辑的数据,具体可包括字符串等在应用的运行过程中一直保持不变的常量数据。
其中,在Android***中,允许Android应用在运行时直接读取自己的签名证书对应的公钥。
可选地,在生成对称加密密钥时,可对加密密钥进行截取等操作,从而得到满足第一加密算法对应的加密程序和解密程序对密钥长度要求的对称加密密钥。基于同一个公钥p,当第二加密算法f(p)改变时,生成的对称加密密钥k也会改变。第二加密算法f(p)可包括消息摘要算法5(message digest algorithm5,MD5)、安全散列算法1(Secure HashAlgorithm 1,SHA1)、安全散列算法256(Secure Hash Algorithm 256,SHA 256)等哈希算法。
可选地,将对称加密密钥k和二进制的目标数据data_raw输入第一加密算法encrypt(k,data_raw)中,可输出加密后数据,其中,当输入输出都是二进制数据的第一加密算法和生成的对称加密密钥是二进制数据的第二加密算法的共同作用下,加密后数据可以是二进制数据。
应理解,数字签名是一种广泛使用的用于解决数字内容的伪造、抵赖、冒充和篡改问题的信息安全技术。数字签名技术通常需要使用到签名证书,一般情况下,签名证书由一组公钥和私钥组成,其中,私钥由签名方私密保存,私钥可用于对任何文件件或信息进行签名;而公钥是公开的,或被任何可信第三方公开保存的公钥可用于对被私钥签名过的文件或信息进行校验。
目标应用的签名证书对应的公钥是指与对目标应用进行签名的私钥相对应的公钥,即被该私钥签名过的目标应用可通过目标应用的签名证书对应的公钥的校验。
一般情况下,若被私钥签名过的应用被篡改,被篡改的应用将无法通过被篡改的应用首次发布时公布的原始公钥的校验;即便对应用进行篡改的非法第三方想要对被篡改应用重新进行签名,但在该非法第三方没有被篡改应用首次发布时公布的原始公钥对应的私钥时,对被篡改应用重新进行的签名还是无法通过该原始公钥的校验。
此外,对于任何加密技术而言,只要加密和解密的方法相匹配,解密密钥正确,对密文解密通常能得到和原文一致的明文;当密钥错误时,解密也能得到一个结果,但是得到的内容是与原文不匹配的。
本申请实施例提供的方法采用对称加密技术,对称加密技术是一种广泛使用的加密技术,该技术的特征是,加密和解密的密钥是能互相推导或者完全相同,这样,能够减少生成密钥和加解密时的计算量,提高了加解密的速度和效率。
需要说明的是,本申请实施例提供的方法中,可基于一个对称加密密钥对目标数据进行加密和解密,也可基于一对能够相互推导的加密密钥和解密密钥(即一对对称的密钥)进行加密和解密。此外,对目标数据进行加密和解密的密钥可以但不仅限于对称加密密钥,也可以是其他加密密钥和解密密钥的组合。
可选地,由于,所有的应用中都存在大量的字符串,包括作为文案展示给用户的字符串、用于请求访问服务端的网址、程序内部控制流程的字符串以及加载必要代码组件的字符串等。如果应用中的字符串变得紊乱(包括字符串被篡改的情况),字符串的作用将会受到致命影响,应用可能无法正常运行。为了能够通过对目标应用的字节码中的部分数据进行加密,阻止被篡改的应用正常运行,本申请实施例提供的方法中目标数据可以包括字符串。
那么,当目标数据包括一个目标应用的字节码中的目标字符串时,基于对称加密密钥和第一加密算法对目标应用的字节码中的目标数据进行加密得到加密后数据,包括:
基于对称加密密钥和第一加密算法,对目标应用的字节码中的目标字符串进行加密得到加密后的目标字符串。
可选地,为了避免被加密的目标数据量过小,而导致目标应用在加密后数据未被解密的时候能够实现部分功能的情况,可对目标应用的字节码中的多个表达不同意义和/或用处不同的字符串进行加密。那么,当目标数据包括多个不同的目标字符串时,基于对称加密密钥和第一加密算法对目标应用的字节码中的目标数据进行加密得到加密后数据,包括:
基于对称加密密钥和第一加密算法,分别对目标应用的字节码中的多个目标字符串进行加密,得到多个目标字符串对应的多个加密后的目标字符串。
步骤120,将加密后数据存储到目标应用的字节码中的指定存储位置;
可选地,为了减少对目标应用的字节码的修改,以及便于目标应用的运行,可将加密后数据存储到目标数据的位置,即在对目标数据进行加密后不改变数据的位置。
例如,当目标数据是字符串s时,对字符串s进行加密得到二进制的加密后数据d,此时,将目标应用字节码中的字符串s删除,并将二进制的加密数据d添加到字符串s被删除前所在的位置,即目标应用的字节码中的字符串s替换为二进制数据d。
可选地,也可将加密后数据集中存储到同一路径下的同一位置,以便于后续进行二次加密或限制获取加密后数据的权限。
步骤130,将目标应用的字节码中读取目标数据的原始指令修改为调整指令集;
其中,调整指令集用于读取加密后数据并根据目标应用的签名证书对应的公钥、第二加密算法和第一加密算法对应的解密程序,对加密后数据进行解码得到目标数据,调整指令集可包括多个调整指令。
应理解,在将加密后数据存储到目标应用的字节码中的指定存储位置之后,为了成功运行目标应用并完整实现目标应用的功能,可以对所有加密后数据进行解码,才能基于得到的目标数据,运行目标应用。这就需要将读取目标数据的原始指令,修改为能够读取并解密相应的加密后数据得到目标数据的调整指令集
可选地,当目标数据包括多个不同的目标字符串时,读取该多个不同的目标字符串的原始指令也可以不同,因此,本申请实施例提供的方法中,可将读取不同目标数据的原始指令,分别修改为相应的调整指令集。那么,将目标应用的字节码中读取目标数据的原始指令修改为调整指令集,包括:
将目标应用的字节码中读取多个目标字符串中第一目标字符串的第一原始指令修改为第一调整指令集。
其中,第一目标字符串可以是多个目标字符串中的任意一个或一种字符串,那么,第一原始指令是原始指令中用于读取第一目标字符串的原始指令,第一调整指令集是调整指令集中用于读取并解密加密后的第一目标字符串的指令集。
可选地,为了能够基于加密后数据得到目标数据,从而使得目标应用能够成功完整地运行,需要对加密后数据进行解码。那么,调整指令集执行的步骤包括:
从目标应用的字节码中的指定存储位置读取加密后数据;
基于第二加密算法和目标应用的签名证书对应的公钥,确定对称加密密钥;
基于对称加密密钥和第一加密算法对应的解密程序,对加密后数据进行解码得到目标数据。
可选地,在基于对称加密密钥和第一加密算法对目标应用的字节码中的目标数据进行加密得到加密后数据之前,本申请实施例提供的方法还包括:
将第二加密算法、第一加密算法对应的解密程序添加到目标应用的代码中。
应理解,在本申请实施例提供的方法中,目标应用运行时对加密后数据进行解码的过程需要使用的目标应用的签名证书对应的公钥是公开的,且可以保存在运行目标应用的客户端中,而第二加密算法和第一加密算法对应的解密程序被预先存储在目标应用的代码中。这样,在运行目标应用时,对加密后数据进行解码的过程不需要通过网络获取数据或程序,可在客户端离线(包括无网络连接和/或无蓝牙连接)的情况下,生成对称加密密钥,并基于第一加密算法对应的解密程序将加密后数据解密为目标数据。
步骤140,将修改后的目标应用和第一加密算法对应的解密程序打包得到目标应用的安装包,并基于目标应用的签名证书对应的私钥对目标应用的安装包进行签名。
可选地,在基于目标应用的签名证书对应的私钥对目标应用的安装包进行签名之后,本申请实施例提供的方法还包括:
将签名后的目标应用的安装包发布至应用市场,以等待应用市场对目标应用的安装包的验证和用户的下载。
可选地,为了保证对称加密密钥不会被非法第三方或非法用户获取,在每次对加密后数据的解码完成之后,可删除对称加密密钥,从而保证加密的有效性。
如图2所示,为本说明书一个实施例提供的一种应用的打包方法应用在一种实际场景中的流程示意图,其中,第一加密算法为高级加密标准(Advanced EncryptionStandard 256,AES256)算法,第二加密算法为MD5,其具体实施过程包括下述主要步骤:
步骤201,在基于Gradle工具对目标应用进行打包时,获取zip压缩文件的/META-INF/目录中文件名结尾为rsa文件中的签名证书对应的公钥p,其中,该zip压缩文件是调用客户端的***命令pm path$package,获取到的目标应用在客户端中的存储路径;
步骤202,基于第二加密算法MD5和目标应用的签名证书对应的公钥p,生成数据长度为256bit的对称加密密钥k;
步骤203,基于Java字节码编辑工具Javassist,在目标应用的字节码中查找目标字符串s;
步骤204,基于该数据长度为256bit的对称加密密钥k和第一加密算法AES256对应的加密程序encrypt(k,data_raw)对目标应用的字节码中的目标字符串s进行加密得到二进制的加密后数据d;
步骤205,将目标应用的字节码中的目标字符串s替换为二进制的加密后数据d;
步骤206,将目标应用的字节码中读取目标字符串s的原始指令修改为调整指令集,其中,该调整指令集用于读取二进制的加密后数据d,并根据公钥p、第二加密算法AES256和第一加密算法AES256对应的解密程序decrypt(data_hide),对二进制的加密后数据d进行解码得到目标字符串s;
步骤207,将修改后的目标应用和第一加密算法AES256对应的解密程序decrypt(data_hide)打包得到目标应用的apk文件(即安装包),并基于目标应用的签名证书对应的私钥,对目标应用的apk文件进行签名;
步骤208,将签名后的目标应用的apk文件发布至应用市场,以等待应用市场对目标应用的安装包的验证和用户的下载。
本申请实施例中提供的应用的打包方法,能够在对目标应用进行打包时,基于对称加密密钥和第一加密算法对目标应用的字节码中的目标数据进行加密得到加密后数据,该对称加密密钥基于第二加密算法对目标应用的签名证书对应的公钥加密得到;将加密后数据存储到目标应用的字节码中的指定存储位置;将目标应用的字节码中读取目标数据的原始指令修改为调整指令集,调整指令集用于读取加密后数据并根据目标应用的签名证书对应的公钥、第二加密算法和第一加密算法对应的解密程序,对加密后数据进行解码得到目标数据;将修改后的目标应用和第一加密算法对应的解密程序打包得到目标应用的安装包,并基于目标应用的签名证书对应的私钥对目标应用的安装包进行签名。
这样,由于能够对目标应用的字节码中的数据进行加密,使得被篡改后的目标应用在数据紊乱的情况下,即便能够发布至应用市场或被用户下载,但依然无法正常运行,从而既能够防止目标应用被篡改,又能通过确定目标应用是否正常运行来确定目标应用是否被篡改,有效阻止了被篡改应用的二次发行,提高了应用市场中的应用的安全性和可靠性。
图3是本说明书一个或多个实施例提供的应用的打包装置300的结构示意图。请参考图3,在一种软件实施方式中,应用的打包装置300可包括加密单元301、存储单元302、修改单元303和打包单元304,其中:
加密单元301,用于在对目标应用进行打包时,基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,所述对称加密密钥基于第二加密算法对所述目标应用的签名证书对应的公钥加密得到;
存储单元302,用于将所述加密后数据存储到所述目标应用的字节码中的指定存储位置;
修改单元303,用于将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,所述调整指令集用于读取所述加密后数据并根据所述目标应用的签名证书对应的公钥、所述第二加密算法和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据;
打包单元304,用于将修改后的所述目标应用和所述第一加密算法对应的解密程序打包得到所述目标应用的安装包,并基于所述目标应用的签名证书对应的私钥对所述目标应用的安装包进行签名。
可选地,在一种实施方式中,所述目标数据包括一个目标字符串,所述加密单元301,用于:
基于所述对称加密密钥和所述第一加密算法,对所述目标应用的字节码中的所述目标字符串进行加密得到加密后的目标字符串。
可选地,在一种实施方式中,所述目标数据包括多个不同的目标字符串,所述加密单元301,用于:
基于所述对称加密密钥和所述第一加密算法,分别对所述目标应用的字节码中的所述多个目标字符串进行加密,得到所述多个目标字符串对应的多个加密后的目标字符串。
可选地,在一种实施方式中,所述修改单元303,用于:
将所述目标应用的字节码中读取所述多个目标字符串中第一目标字符串的第一原始指令修改为第一调整指令集。
可选地,在一种实施方式中,所述调整指令集执行的步骤包括:
从所述目标应用的字节码中的指定存储位置读取所述加密后数据;
基于所述第二加密算法和所述目标应用的签名证书对应的公钥,确定所述对称加密密钥;
基于所述对称加密密钥和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据。
应用的打包装置300能够实现图1~图2的应用的打包方法实施例的方法,具体可参考图1~图2所示实施例的应用的打包方法,不再赘述。
本申请实施例中提供的应用的打包方法,能够在对目标应用进行打包时,基于对称加密密钥和第一加密算法对目标应用的字节码中的目标数据进行加密得到加密后数据,该对称加密密钥基于第二加密算法对目标应用的签名证书对应的公钥加密得到;将加密后数据存储到目标应用的字节码中的指定存储位置;将目标应用的字节码中读取目标数据的原始指令修改为调整指令集,调整指令集用于读取加密后数据并根据目标应用的签名证书对应的公钥、第二加密算法和第一加密算法对应的解密程序,对加密后数据进行解码得到目标数据;将修改后的目标应用和第一加密算法对应的解密程序打包得到目标应用的安装包,并基于目标应用的签名证书对应的私钥对目标应用的安装包进行签名。
这样,由于能够对目标应用的字节码中的数据进行加密,使得被篡改后的目标应用在数据紊乱的情况下,即便能够发布至应用市场或被用户下载,但依然无法正常运行,从而既能够防止目标应用被篡改,又能通过确定目标应用是否正常运行来确定目标应用是否被篡改,有效阻止了被篡改应用的二次发行,提高了应用市场中的应用的安全性和可靠性。
本申请实施例还提供了一种电子设备,图4为本说明书一个或多个实施例提供的电子设备的结构示意图。如图4所示,电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器401和存储器402,存储器402中可以存储有一个或一个以上存储应用程序或数据。其中,存储器402可以是短暂存储或持久存储。存储在存储器402的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对内存数据加载设备中的一系列计算机可执行指令。更进一步地,处理器401可以设置为与存储器402通信,在内存数据加载设备上执行存储器402中的一系列计算机可执行指令。内存数据加载设备还可以包括一个或一个以上电源403,一个或一个以上有线或无线网络接口404,一个或一个以上输入输出接口405,一个或一个以上键盘406等。
在一个具体的实施例中,电子设备400包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现以下流程:
在对目标应用进行打包时,基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,所述对称加密密钥基于第二加密算法对所述目标应用的签名证书对应的公钥加密得到;
将所述加密后数据存储到所述目标应用的字节码中的指定存储位置;
将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,所述调整指令集用于读取所述加密后数据并根据所述目标应用的签名证书对应的公钥、所述第二加密算法和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据;
将修改后的所述目标应用和所述第一加密算法对应的解密程序打包得到所述目标应用的安装包,并基于所述目标应用的签名证书对应的私钥对所述目标应用的安装包进行签名。
可选地,所述计算机可执行指令被所述处理器执行时,
所述目标数据包括一个目标字符串,所述基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,包括:
基于所述对称加密密钥和所述第一加密算法,对所述目标应用的字节码中的所述目标字符串进行加密得到加密后的目标字符串。
所述目标数据包括多个不同的目标字符串,所述基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,包括:
基于所述对称加密密钥和所述第一加密算法,分别对所述目标应用的字节码中的所述多个目标字符串进行加密,得到所述多个目标字符串对应的多个加密后的目标字符串。
所述将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,包括:
将所述目标应用的字节码中读取所述多个目标字符串中第一目标字符串的第一原始指令修改为第一调整指令集。
所述调整指令集执行的步骤包括:
从所述目标应用的字节码中的指定存储位置读取所述加密后数据;
基于所述第二加密算法和所述目标应用的签名证书对应的公钥,确定所述对称加密密钥;
基于所述对称加密密钥和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据。
本申请实施例中提供的应用的打包方法,能够在对目标应用进行打包时,基于对称加密密钥和第一加密算法对目标应用的字节码中的目标数据进行加密得到加密后数据,该对称加密密钥基于第二加密算法对目标应用的签名证书对应的公钥加密得到;将加密后数据存储到目标应用的字节码中的指定存储位置;将目标应用的字节码中读取目标数据的原始指令修改为调整指令集,调整指令集用于读取加密后数据并根据目标应用的签名证书对应的公钥、第二加密算法和第一加密算法对应的解密程序,对加密后数据进行解码得到目标数据;将修改后的目标应用和第一加密算法对应的解密程序打包得到目标应用的安装包,并基于目标应用的签名证书对应的私钥对目标应用的安装包进行签名。
这样,由于能够对目标应用的字节码中的数据进行加密,使得被篡改后的目标应用在数据紊乱的情况下,即便能够发布至应用市场或被用户下载,但依然无法正常运行,从而既能够防止目标应用被篡改,又能通过确定目标应用是否正常运行来确定目标应用是否被篡改,有效阻止了被篡改应用的二次发行,提高了应用市场中的应用的安全性和可靠性。
进一步地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现以下流程:
在对目标应用进行打包时,基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,所述对称加密密钥基于第二加密算法对所述目标应用的签名证书对应的公钥加密得到;
将所述加密后数据存储到所述目标应用的字节码中的指定存储位置;
将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,所述调整指令集用于读取所述加密后数据并根据所述目标应用的签名证书对应的公钥、所述第二加密算法和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据;
将修改后的所述目标应用和所述第一加密算法对应的解密程序打包得到所述目标应用的安装包,并基于所述目标应用的签名证书对应的私钥对所述目标应用的安装包进行签名。
可选地,所述计算机可执行指令被所述处理器执行时,
所述目标数据包括一个目标字符串,所述基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,包括:
基于所述对称加密密钥和所述第一加密算法,对所述目标应用的字节码中的所述目标字符串进行加密得到加密后的目标字符串。
所述目标数据包括多个不同的目标字符串,所述基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,包括:
基于所述对称加密密钥和所述第一加密算法,分别对所述目标应用的字节码中的所述多个目标字符串进行加密,得到所述多个目标字符串对应的多个加密后的目标字符串。
所述将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,包括:
将所述目标应用的字节码中读取所述多个目标字符串中第一目标字符串的第一原始指令修改为第一调整指令集。
所述调整指令集执行的步骤包括:
从所述目标应用的字节码中的指定存储位置读取所述加密后数据;
基于所述第二加密算法和所述目标应用的签名证书对应的公钥,确定所述对称加密密钥;
基于所述对称加密密钥和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据。
本申请实施例中提供的应用的打包方法,能够在对目标应用进行打包时,基于对称加密密钥和第一加密算法对目标应用的字节码中的目标数据进行加密得到加密后数据,该对称加密密钥基于第二加密算法对目标应用的签名证书对应的公钥加密得到;将加密后数据存储到目标应用的字节码中的指定存储位置;将目标应用的字节码中读取目标数据的原始指令修改为调整指令集,调整指令集用于读取加密后数据并根据目标应用的签名证书对应的公钥、第二加密算法和第一加密算法对应的解密程序,对加密后数据进行解码得到目标数据;将修改后的目标应用和第一加密算法对应的解密程序打包得到目标应用的安装包,并基于目标应用的签名证书对应的私钥对目标应用的安装包进行签名。
这样,由于能够对目标应用的字节码中的数据进行加密,使得被篡改后的目标应用在数据紊乱的情况下,即便能够发布至应用市场或被用户下载,但依然无法正常运行,从而既能够防止目标应用被篡改,又能通过确定目标应用是否正常运行来确定目标应用是否被篡改,有效阻止了被篡改应用的二次发行,提高了应用市场中的应用的安全性和可靠性。
其中,所述的计算机可读存储介质包括只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种应用的打包方法,其特征在于,所述方法包括:
在对目标应用进行打包时,基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,所述对称加密密钥基于第二加密算法对所述目标应用的签名证书对应的公钥加密得到;
将所述加密后数据存储到所述目标应用的字节码中的指定存储位置;
将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,所述调整指令集用于读取所述加密后数据并根据所述目标应用的签名证书对应的公钥、所述第二加密算法和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据;
将修改后的所述目标应用和所述第一加密算法对应的解密程序打包得到所述目标应用的安装包,并基于所述目标应用的签名证书对应的私钥对所述目标应用的安装包进行签名。
2.如权利要求1所述的方法,其特征在于,所述目标数据包括一个目标字符串,所述基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,包括:
基于所述对称加密密钥和所述第一加密算法,对所述目标应用的字节码中的所述目标字符串进行加密得到加密后的目标字符串。
3.如权利要求1所述的方法,其特征在于,所述目标数据包括多个不同的目标字符串,所述基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,包括:
基于所述对称加密密钥和所述第一加密算法,分别对所述目标应用的字节码中的所述多个目标字符串进行加密,得到所述多个目标字符串对应的多个加密后的目标字符串。
4.如权利要求3所述的方法,其特征在于,所述将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,包括:
将所述目标应用的字节码中读取所述多个目标字符串中第一目标字符串的第一原始指令修改为第一调整指令集。
5.如权利要求1所述的方法,其特征在于,所述调整指令集执行的步骤包括:
从所述目标应用的字节码中的指定存储位置读取所述加密后数据;
基于所述第二加密算法和所述目标应用的签名证书对应的公钥,确定所述对称加密密钥;
基于所述对称加密密钥和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据。
6.一种应用的打包装置,其特征在于,所述装置包括:
加密单元,用于在对目标应用进行打包时,基于对称加密密钥和第一加密算法对所述目标应用的字节码中的目标数据进行加密得到加密后数据,所述对称加密密钥基于第二加密算法对所述目标应用的签名证书对应的公钥加密得到;
存储单元,用于将所述加密后数据存储到所述目标应用的字节码中的指定存储位置;
修改单元,用于将所述目标应用的字节码中读取所述目标数据的原始指令修改为调整指令集,所述调整指令集用于读取所述加密后数据并根据所述目标应用的签名证书对应的公钥、所述第二加密算法和所述第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据;
打包单元,用于将修改后的所述目标应用和所述第一加密算法对应的解密程序打包得到所述目标应用的安装包,并基于所述目标应用的签名证书对应的私钥对所述目标应用的安装包进行签名。
7.如权利要求6所述的装置,其特征在于,所述目标数据包括一个目标字符串,所述加密单元,用于:
基于所述对称加密密钥和所述第一加密算法,对所述目标应用的字节码中的所述目标字符串进行加密得到加密后的目标字符串。
8.如权利要求6所述的装置,其特征在于,所述目标数据包括多个不同的目标字符串,所述加密单元,用于:
基于所述对称加密密钥和所述第一加密算法,分别对所述目标应用的字节码中的所述多个目标字符串进行加密,得到所述
多个目标字符串对应的加密后的目标字符串。
9.如权利要求8所述的装置,其特征在于,所述修改单元,包括:
将所述目标应用的字节码中读取所述多个目标字符串中第一目标字符串的第一原始指令修改为第一调整指令集。
10.如权利要求6所述的装置,其特征在于,所述调整指令集执行的步骤包括:
从所述目标应用的字节码中的指定存储位置读取所述加密后数据;
基于第二加密算法和所述目标应用的签名证书对应的公钥,确定所述对称加密密钥;
基于所述对称加密密钥和第一加密算法对应的解密程序,对所述加密后数据进行解码得到所述目标数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011096974.6A CN112257033A (zh) | 2020-10-14 | 2020-10-14 | 一种应用的打包方法、装置及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011096974.6A CN112257033A (zh) | 2020-10-14 | 2020-10-14 | 一种应用的打包方法、装置及其设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112257033A true CN112257033A (zh) | 2021-01-22 |
Family
ID=74243223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011096974.6A Pending CN112257033A (zh) | 2020-10-14 | 2020-10-14 | 一种应用的打包方法、装置及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112257033A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021321A (zh) * | 2014-06-17 | 2014-09-03 | 北京奇虎科技有限公司 | 软件安装包的加固保护方法和装置 |
CN104331658A (zh) * | 2014-11-14 | 2015-02-04 | 北京视博数字电视科技有限公司 | 一种智能终端应用程序的安装验证方法及*** |
CN104462959A (zh) * | 2014-12-04 | 2015-03-25 | 北京奇虎科技有限公司 | 一种安卓应用的加固保护方法、服务器和*** |
CN106203002A (zh) * | 2015-05-06 | 2016-12-07 | 朗新科技股份有限公司 | 软件产品保护方法 |
CN106295255A (zh) * | 2015-05-27 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 应用程序的加固方法和装置 |
-
2020
- 2020-10-14 CN CN202011096974.6A patent/CN112257033A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021321A (zh) * | 2014-06-17 | 2014-09-03 | 北京奇虎科技有限公司 | 软件安装包的加固保护方法和装置 |
CN104331658A (zh) * | 2014-11-14 | 2015-02-04 | 北京视博数字电视科技有限公司 | 一种智能终端应用程序的安装验证方法及*** |
CN104462959A (zh) * | 2014-12-04 | 2015-03-25 | 北京奇虎科技有限公司 | 一种安卓应用的加固保护方法、服务器和*** |
CN106203002A (zh) * | 2015-05-06 | 2016-12-07 | 朗新科技股份有限公司 | 软件产品保护方法 |
CN106295255A (zh) * | 2015-05-27 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 应用程序的加固方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170270319A1 (en) | Method and device for providing verifying application integrity | |
WO2022160733A1 (zh) | 一种文件签名方法、计算设备及存储介质 | |
CN111475824B (zh) | 数据访问方法、装置、设备和存储介质 | |
US20170262656A1 (en) | Method and device for providing verifying application integrity | |
EP3026560A1 (en) | Method and device for providing verifying application integrity | |
KR19980081644A (ko) | 정보처리장치, 방법 및 기록매체 | |
CN109992987B (zh) | 基于Nginx的脚本文件保护方法、装置及终端设备 | |
CN104866739A (zh) | 安卓***中应用程序加密方法及*** | |
KR20150035249A (ko) | 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 | |
US20140059341A1 (en) | Creating and accessing encrypted web based content in hybrid applications | |
EP3224721A1 (en) | Method and device for providing verifying application integrity | |
US20050154899A1 (en) | Mobile software authentication and validation | |
CN102289632A (zh) | 一种在软件源代码未知情况下对可执行文件进行加密方法 | |
US7552092B2 (en) | Program distribution method and system | |
JP2007233426A (ja) | アプリケーション実行装置 | |
JP4664055B2 (ja) | プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法 | |
CN107257282B (zh) | 一种基于rc4算法的代码全包加密方法 | |
US8745375B2 (en) | Handling of the usage of software in a disconnected computing environment | |
CN117436043A (zh) | 待执行文件的来源验证方法、设备以及可读存储介质 | |
CN112115430A (zh) | 一种apk的加固方法、电子设备及存储介质 | |
CN111522555B (zh) | apk文件的加固方法、解密方法及相关装置 | |
CN112257033A (zh) | 一种应用的打包方法、装置及其设备 | |
CN107689934B (zh) | 一种保障信息安全的方法、服务器及客户端 | |
JP7230598B2 (ja) | 情報処理装置、暗号化データの復号方法及び電子機器 | |
CN111061495A (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 |
Application publication date: 20210122 |
|
RJ01 | Rejection of invention patent application after publication |