CN104932902B - 一种生成apk文件的方法及终端 - Google Patents

一种生成apk文件的方法及终端 Download PDF

Info

Publication number
CN104932902B
CN104932902B CN201510405801.0A CN201510405801A CN104932902B CN 104932902 B CN104932902 B CN 104932902B CN 201510405801 A CN201510405801 A CN 201510405801A CN 104932902 B CN104932902 B CN 104932902B
Authority
CN
China
Prior art keywords
file
encryption
executable file
rule
executable
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
CN201510405801.0A
Other languages
English (en)
Other versions
CN104932902A (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.)
Meizu Technology Co Ltd
Original Assignee
Meizu Technology China Co 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 Meizu Technology China Co Ltd filed Critical Meizu Technology China Co Ltd
Priority to CN201510405801.0A priority Critical patent/CN104932902B/zh
Publication of CN104932902A publication Critical patent/CN104932902A/zh
Application granted granted Critical
Publication of CN104932902B publication Critical patent/CN104932902B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明涉及通讯领域,具体涉及一种生成APK文件的方法及终端。本发明实施例方法包括:包括接收安卓虚拟机支持的可执行文件;根据预设校验规则计算可执行文件的校验值;对所述可执行文件的校验值和所述预设校验规则进行编译生成供所述可执行文件调用的第一文件;将可执行文件和第一文件进行打包生成APK文件。本发明实施例通过将可执行文件计算校验值和预设校验规则注入编译生成第一文件,由于可执行文件和第一文件会形成相互依赖的关系,最终打包出来的APK文件中的第一文件只能被当次APK文件打包过程中生成的可执行文件使用,从而提高APK文件的安全性以及提高生成APK文件的java代码的自我保护能力,有效防止反编译篡改java代码的问题。

Description

一种生成APK文件的方法及终端
技术领域
本发明涉及通讯领域,具体涉及一种生成APK文件的方法及终端。
背景技术
随着智能移动终端的出现,涌现出了一批移动终端系统,如android(安卓)系统是一种目前广泛应用的智能移动终端系统,其中APK(Android application package)应用安装文件是一种标准android应用安装程序。
安卓平台的软件使用的编程语言是Java,并通过一些列的编译打包过程将编写的Java代码最终形成APK文件,用于可以从网络上下载这些APK文件进行安装。
然而,由于安卓移动平台发展和壮大,基于安卓平台的软件大量涌现,这些软件的分发方式变得比较混乱,再加上由于安卓平台的软件使用的编程语言是Java,生成的APK文件容易被反编译工具反编译为Java代码,极易出现对APK文件盗版、篡改代码并重打包分发的问题,如对反编译得到的java代码进行分析、篡改或抄袭,如加入恶意代码,添加病毒等,这种反向工程对安卓平台的软件安全构成了很大的威胁,从而如何保护APK文件成为一个亟待解决的问题。
发明内容
本发明实施例提供了一种生成APK文件的方法及终端,能够解决由于生成的APK文件容易被反编译工具反编译,极易出现对APK文件盗版、篡改代码并重打包分发的问题,并能够提高APK文件的安全性。
有鉴于此,本发明实施例第一方面提供一种生成APK文件的方法,可包括:
接收安卓虚拟机支持的可执行文件;
根据预设校验规则计算可执行文件的校验值;
对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的第一文件;
将可执行文件和第一文件进行打包生成APK文件。
结合第一方面,在第一方面的第一种可能的实现方式中,对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的第一文件具体为:
利用NDK对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的so文件。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,创建指纹白名单,指纹白名单包括APK文件的至少一个签名信息对应的指纹;
按照第一加密规则对指纹白名单进行加密生成第一加密数据;
对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的第一文件具体包括:
对可执行文件的校验值、预设校验规则、第一加密数据和第一加密规则进行编译生成供可执行文件调用的第一文件。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,方法还包括:
按照第二加密规则对私钥信息加密生成第二加密数据,私钥信息用于加密Http请求;
对可执行文件的校验值、预设校验规则、第一加密数据和第一加密规则进行编译生成供可执行文件调用的第一文件具体为:
对可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则进行编译生成供可执行文件调用的第一文件。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,第一加密规则包括:
XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法;
预设校验规则包括:CRC校验法、Adler32校验法、MD5校验法或SHA1校验法。
本发明实施例第二方面还提供一种终端,该终端可包括:
接收模块,用于接收安卓虚拟机生成的可执行文件;
计算模块,用于根据预设校验规则计算可执行文件的校验值;
编译模块,对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的第一文件;
打包模块,将可执行文件和第一文件进行打包生成APK文件。
结合第二方面,在第二方面的第一种可能的实现方式中,编译模块具体用于:
利用NDK对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的库文件。
结合第二方面,在第二方面的第二种可能的实现方式中,终端还包括:
创建模块,用于创建指纹白名单,指纹白名单包括APK文件的至少一个签名信息对应的指纹;
第一加密模块,用于按照第一加密规则对指纹白名单进行加密生成第一加密数据;
编译模块具体用于:
对可执行文件的校验值、预设校验规则、第一加密数据和第一加密规则进行编译生成供可执行文件调用的第一文件。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,终端还包括:
第二加密模块,用于按照第二加密规则对私钥信息加密生成第二加密数据,私钥信息用于加密Http请求;
编译模块具体用于:
对可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则进行编译生成供可执行文件调用的第一文件。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,计算模块具体用于:
根据CRC校验法、Adler32校验法、MD5校验法或SHA1校验法计算可执行文件的校验值。
第一加密模块具体用于:
按照XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法对指纹白名单进行加密生成第一加密数据。
从以上技术方案可以看出,本发明实施例具有以下优点:在现有的APK打包流程的基础上,通过对可执行文件计算校验值,并将该校验值和预设校验规则进行编译生成被可执行文件调用的第一文件,由于可执行文件和第一文件形成相互依赖的关系,最终打包出来的APK文件中的第一文件只能被当次APK文件打包过程中生成的可执行文件使用,而反编译产生java代码后,任何对java代码的修改行为都会破坏可执行文件和第一文件之间的依赖关系,使得再次编译输出的可执行文件无法复用第一文件,从而无法运行APK文件,从而提高APK文件的安全性以及提高生成APK文件的java代码的自我保护能力,有效防止反编译篡改java代码的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中方法的一个实施例图;
图2是本发明实施例中方法的另一个实施例图;
图3是本发明实施例中方法的另一个实施例图;
图4是本发明实施例中终端的一个实施例图;
图5是本发明实施例中终端的另一个实施例图。
具体实施方式
本发明实施例提供了一种生成APK文件的方法及终端,用于解决由于生成的APK文件容易被反编译工具反编译,极易出现对APK文件盗版、篡改代码并重打包分发的问题,并能够提高APK文件的安全性。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
以下分别进行详细说明。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
请参阅图1,为本发明实施例的方法的一个实施例图,如图1所示,本发明的一个实施例提供一种生成APK文件的方法,可包括以下内容:
101、接收安卓虚拟机支持的可执行文件。
其中,在进行APK文件生成的过程中,终端首先会接收到可执行文件,该可执行文件是可以在安卓虚拟机上直接运行的文件格式,也即安卓虚拟机支持的文件,如classes.dex文件。
102、根据预设校验规则计算可执行文件的校验值。
其中,在接收到可执行文件后,会对该可执行文件按照预设校验规则进行计算,得到该可执行文件的校验值。
103、对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的第一文件。
其中,将预设的校验规则和生成的校验值加入生成第一文件的编译过程,然后生成供可执行文件调用的第一文件。
104、将可执行文件和第一文件进行打包生成APK文件。
其中,在生成第一文件后,就可进行最后打包的操作,将对可执行文件和第一文件进行打包,最终生成APK文件。
由此可见,通过对可执行文件计算校验值,并将该校验值和预设校验规则注入编译生成被可执行文件调用的第一文件,由于可执行文件和第一文件形成相互依赖的关系,最终打包出来的APK文件中的第一文件只能被当次APK文件打包过程中生成的可执行文件使用,而反编译产生java代码后,任何对java代码的修改行为都会破坏可执行文件和第一文件之间的依赖关系,使得再次编译输出的可执行文件无法复用第一文件,从而无法运行APK文件,从而提高APK文件的安全性以及提高生成APK文件的java代码的自我保护能力,有效防止反编译篡改java代码的问题。
作为可选的,第一文件可以是被可执行文件调用的so文件,此时步骤103具体包括:
利用原生开发工具包(Native Development Kit,简称NDK)对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的so文件。
可以看出,本技术方案可以将用C或C++编写的可执行文件的校验值和预设校验规则在NDK环境下进行编译,生成的第一文件,也即动态库so文件,so文件作为库文件,能够实现java本地调用,在本方案中由于预先设置了可执行文件需要调用第一文件,也即so文件,因此在NDK编译过程中加入可执行文件的校验值和预设校验规则后,生成出的so文件只能被当次打包出来的可执行文件调用,从而只要篡改了可执行文件的代码就不能使用该so文件了,进一步加强了APK文件的安全性。
作为可选的,还可增加对APK文件运行时的Http请求进行加密,可添加在步骤103之前,该方法还包括:
按照第二加密规则对私钥信息加密生成第二加密数据,私钥信息用于加密Http请求;
其中,APK文件运行时,由运行该APK文件的终端发送Http请求至服务器,其中,发送的Http请求进行私钥加密,并将加密的http请求发送给服务器,服务器能通过预存的同样的私钥对接收的Http请求进行加密,而后与终端加密的Http请求进行比较,若相同,则为合法请求,能够进一步增加APK文件的安全性。
此时,步骤103具体可以包括如下步骤:
对可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则进行NDK编译生成供可执行文件调用的so文件。
需要说明的是,对可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则进行NDK编译的过程具体为,首先将可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则加入到待编译数据中,该待编译数据包括生成第一文件的所需数据,第一文件即此处so文件,而后由在NDK环境编译该待编译文件生成so文件。
由此可见,通过添加对APK文件运行时的Http请求进行加密,能够进一步提高APK文件的安全性。
需要说明的是,本发明实施例中还可在生成APK文件的过程中加入指纹白名单验证来进一步增强APK文件的安全性,请参阅图2,图2是本发明实施例中方法的另一个实施例图,如图2所示,本发明实施例提供一种APK文件生成的方法,该方法中步骤201和步骤202与图1所示方法中的步骤101和步骤102类似,步骤206与步骤104类似,此处不再赘述,其中,该方法还包括:
203、创建指纹白名单。
其中,指纹白名单包括APK文件的至少一个签名信息对应的指纹。将APK文件的签名信息设置为多个,每一发布者均对应一个签名信息,每一签名信息均具有一个对应的指纹。
204、按照第一加密规则对指纹白名单进行加密生成第一加密数据。
其中,在生成指纹白名单后,按照第一加密规则对该指纹白名单进行加密,加密后会生成第一加密数据。
205、对可执行文件的校验值、预设校验规则、第一加密数据和第一加密规则进行编译生成供可执行文件调用的第一文件。
其中,在生成第一加密数据后,在编译生成第一文件时,可将可执行文件的校验值、预设校验规则、第一加密数据和第一加密规则均加入到待编译数据中,该待编译数据包括生成第一文件的所需数据,而后通过编译该待编译数据生成第一文件。
由此可见,通过设置指纹白名单可以使多个发布者均可以发布同一版本的APK文件,并且使得APK文件在运行过程中,只要有与指纹白名单中的一个指纹匹配上,就能验证通过,不仅提高APK文件的安全性,还提高本发明实施例方法的可扩展性。
作为可选的,在图2所示的实施例的基础上,还可增加对APK文件运行时的Http请求进行加密,可添加在步骤205之前,请参阅图3,图3是本发明实施例中方法的另一个实施例图,如图3所示,本发明实施例提供一种APK文件生成的方法,步骤301至步骤304与步骤201至步骤204类似,步骤307与步骤206类似,不在赘述,还包括:
305、按照第二加密规则对私钥信息加密生成第二加密数据,私钥信息用于加密Http请求;
此时,步骤205被如下步骤306替换:
306、对可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则进行编译生成供可执行文件调用的第一文件。
由上可见,在加入对APK文件运行时的Http请求进行加密后,能够进一步提高APK文件的安全性,此时对于APK文件来说具有三重保护,其一是计算出的可执行文件的校验值,形成的可执行文件与第一文件之间的相互依赖关系;其二是在对APK文件签名添加白名单校验;最后是在APK文件运行时的Http请求进行加密处理,并且这三重保护产生的校验值和加密数据等均会加入到待编译数据中,该待编译数据包括生成第一文件的所需数据,通过编译该待编译数据生成供执行文件调用的第一文件,使得APK文件的安全性大大增强。
其中,作为可选的,第一加密规则包括:
XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法;
预设校验规则包括:CRC校验法、Adler32校验法、MD5校验法或SHA1校验法。
第一加密规则和预设校验规则可采用多种不同的算法进行,由于会将算法规则加入待编译数据中,从而编译该待编译数据生成第一文件的过程中去,因此只要APK文件中的可执行文件能够调用第一文件,即可获取这些规则,并执行对应的校验过程。
当然,第二加密规则也可采用XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法进行加密。
下面给出在结合了前述实施例中方法的情况下,APK文件运行时验证的具体过程,其中,预设校验规则为CRC校验规则,第一加密规则采用RSA加密算法,第一文件具体为so文件。
在APK文件运行时,首先会进行CRC校验,即从so文件中提取预设校验规则和校验值,并在运行APK文件的终端上重新计算可执行文件的校验值并与提取的so文件中的校验值进行比对,若相同则通过校验,通过CRC校验后会进行指纹白名单的校验;
在指纹白名单的校验中,首先从so文件中提取第一加密数据和第一加密规则,按照第一加密规则中的规则对第一加密数据进行解密,得到指纹白名单,然后提取APK文件的签名信息的指纹,并对比该指纹是否在指纹白名单,若在指纹白名单中,则表示通过指纹白名单验证,在通过指纹白名单验证后,即可进行对Http请求的处理;
在Http请求的校验中,首先运行APK文件的终端将Http请求中的请求参数进行加密处理,通过私钥对请求参数进行加密处理,得到加密参数值,而后通过MD5算法计算该加密参数值得到参数校验值,而后终端将该参数校验值附加到Http请求中上传给服务器,服务器端在接收到该Http请求后,首先会读取其中的请求参数和参数校验值,并通过存储于服务器端的私钥以及相同加密规则对该请求参数进行加密,得到加密参数值,而后同样对这个加密参数值进行MD5运算,得到参数校验值,并将得到的参数校验值与提取的参数校验值进行比对,如果两者相同,则表示该Http请求是合法的,应当理解的是,服务器会对每一条来至终端的APK文件运行过程中的Http请求进行校验,以保证所有的Http请求均为合法请求,进一步增强APK文件的安全性。
当然,该方案中,为了使APK文件中的私钥不被发现,对私钥进行加密后再存储,只有在使用时,临时解密使用,即使汇编出so文件,也无法看到该私钥。
以上对本发明实施例中方法进行了介绍,下面对本发明实施例中终端进行介绍,请参阅图4,图4是本发明实施例中方法的另一个实施例图,如图4所示,本发明实施例提供一种终端,可包括:
接收模块401,用于接收安卓虚拟机生成的可执行文件;
计算模块402,用于根据预设校验规则计算由接收模块401接收的可执行文件的校验值;
编译模块403,对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的第一文件;
打包模块404,将可执行文件和编译模块403生成的第一文件进行打包生成APK文件。
由此可见,通过对可执行文件计算校验值,并将该校验值和预设校验规则注入编译生成能被可执行文件调用的第一文件,由于可执行文件和第一文件会形成相互依赖的关系,最终打包出来的APK文件中的第一文件只能被当次APK文件打包过程中生成的可执行文件使用,而反编译产生java代码后,任何对java代码的修改行为都会破坏可执行文件和库文件之间的依赖关系,使得再次编译输出的可执行文件无法复用第一文件,从而无法运行APK文件,从而提高APK文件的安全性以及提高生成APK文件的java代码的自我保护能力,有效防止反编译篡改java代码的问题。
作为可选的,编译模块403可用于利用NDK对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的so文件。
请参阅图5,图5是本发明实施例中方法的另一个实施例图,如图5所示,本发明实施例提供一种终端,在图4所示结构的基础上,还包括:
创建模块405,用于创建指纹白名单,所述指纹白名单包括所述APK文件的至少一个签名信息对应的指纹;
第一加密模块406用于按照第一加密规则对指纹白名单进行加密生成第一加密数据。
此时,编译模块403具体用于对可执行文件的校验值、预设校验规则、第一加密数据和第一加密规则进行编译生成供可执行文件调用的第一文件。
其中,指纹白名单包括APK文件的至少一个签名信息对应的指纹;将APK文件的签名信息设置为多个,每一发布者均对应一个签名信息,每一签名信息均具有一个对应的指纹,增加创建模块405和第一加密模块406后,使得指纹白名单可以使多个发布者均可以发布同一版本的APK文件,并且使得APK文件在运行过程中,只要有与指纹白名单中的一个指纹匹配上,就能验证通过,不仅提高APK文件的安全性,还提高本发明实施例方法的可扩展性。
作为可选的,本发明实施例中的终端还可包括:
第二加密模块407,用于按照第二加密规则对私钥信息加密生成第二加密数据,私钥信息用于加密Http请求;
此时,编译模块403具体用于对可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则进行编译生成供可执行文件调用的第一文件。
计算模块402具体用于:
根据CRC校验法、Adler32校验法、MD5校验法或SHA1校验法计算所述可执行文件的校验值。
第一加密模块406具体用于:
按照XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法对所述指纹白名单进行加密生成第一加密数据。
由上可见,在加入第二加密模块407后,能够进一步提高APK文件的安全性,此时对于APK文件来说具有三重保护,其一是计算出的可执行文件的校验值,形成的可执行文件与第一文件之间的相互依赖关系;其二是在对APK文件签名添加白名单校验;最后是在APK文件运行时的Http请求进行加密处理,并且这三重保护产生的校验值和加密数据等均会加入到对第一文件进行的编译中去,使得APK文件的安全性大大增强。
作为可选的,第一加密模块406采用的加密算法为XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法,计算模块402采用的预设校验规则为CRC校验法、Adler32校验法、MD5校验法或SHA1校验法。
当然第二加密模块407也可采用XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法进行加密过程。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种生成APK文件的方法,其特征在于,包括:
接收安卓虚拟机支持的可执行文件;
根据预设校验规则计算所述可执行文件的校验值;
创建指纹白名单,所述指纹白名单包括与所述APK文件的一个或多个签名信息对应的指纹,签名信息与APK文件的发布者一一对应,所述指纹与所述签名信息一一对应;
按照第一加密规则对所述指纹白名单进行加密生成第一加密数据;
对所述可执行文件的校验值、所述预设校验规则、所述第一加密数据和所述第一加密规则进行编译生成供所述可执行文件调用的第一文件;
将所述可执行文件和所述第一文件进行打包生成APK文件。
2.根据权利要求1所述的方法,其特征在于,所述对所述可执行文件的校验值和所述预设校验规则进行编译生成供所述可执行文件调用的第一文件具体为:
利用NDK对所述可执行文件的校验值和所述预设校验规则进行编译生成供所述可执行文件调用的so文件。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照第二加密规则对私钥信息加密生成第二加密数据,所述私钥信息用于加密Http请求;
对所述可执行文件的校验值、所述预设校验规则、所述第一加密数据和所述第一加密规则进行编译生成供所述可执行文件调用的第一文件具体为:
对所述可执行文件的校验值、所述预设校验规则、所述第一加密数据、所述第一加密规则、所述第二加密数据和所述第二加密规则进行编译生成供所述可执行文件调用的第一文件。
4.根据权利要求3所述的方法,其特征在于,所述第一加密规则包括:
XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法;
所述预设校验规则包括:CRC校验法、Adler32校验法、MD5校验法或SHA1校验法。
5.一种终端,其特征在于,包括:
接收模块,用于接收安卓虚拟机生成的可执行文件;
计算模块,用于根据预设校验规则计算所述可执行文件的校验值;
创建模块,用于创建指纹白名单,所述指纹白名单包括与APK文件的一个或多个签名信息对应的指纹,签名信息与APK文件的发布者一一对应,所述指纹与所述签名信息一一对应;
第一加密模块,用于按照第一加密规则对所述指纹白名单进行加密生成第一加密数据;
编译模块,对所述可执行文件的校验值、所述预设校验规则、所述第一加密数据和所述第一加密规则进行编译生成供所述可执行文件调用的第一文件;
打包模块,将所述可执行文件和所述第一文件进行打包生成APK文件。
6.根据权利要求5所述的终端,其特征在于,所述编译模块具体用于:
利用NDK对所述可执行文件的校验值和所述预设校验规则进行编译生成供所述可执行文件调用的库文件。
7.根据权利要求5所述的终端,其特征在于,所述终端还包括:
第二加密模块,用于按照第二加密规则对私钥信息加密生成第二加密数据,所述私钥信息用于加密Http请求;
所述编译模块具体用于:
对所述可执行文件的校验值、所述预设校验规则、所述第一加密数据、所述第一加密规则、所述第二加密数据和所述第二加密规则进行编译生成供所述可执行文件调用的第一文件。
8.根据权利要求7所述的终端,其特征在于,
所述计算模块具体用于:
根据CRC校验法、Adler32校验法、MD5校验法或SHA1校验法计算所述可执行文件的校验值;
所述第一加密模块具体用于:
按照XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法对所述指纹白名单进行加密生成第一加密数据。
CN201510405801.0A 2015-07-09 2015-07-09 一种生成apk文件的方法及终端 Active CN104932902B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510405801.0A CN104932902B (zh) 2015-07-09 2015-07-09 一种生成apk文件的方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510405801.0A CN104932902B (zh) 2015-07-09 2015-07-09 一种生成apk文件的方法及终端

Publications (2)

Publication Number Publication Date
CN104932902A CN104932902A (zh) 2015-09-23
CN104932902B true CN104932902B (zh) 2019-07-12

Family

ID=54120078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510405801.0A Active CN104932902B (zh) 2015-07-09 2015-07-09 一种生成apk文件的方法及终端

Country Status (1)

Country Link
CN (1) CN104932902B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105554091A (zh) * 2015-12-11 2016-05-04 电子科技大学 一种移动终端中web应用来源安全的保障方法
CN105740660B (zh) * 2016-01-20 2019-02-15 广州优视网络科技有限公司 一种应用安全性的检测方法及装置
CN106971098B (zh) * 2016-10-11 2020-06-02 阿里巴巴集团控股有限公司 一种防重打包的方法及其装置
CN106778099A (zh) * 2016-11-29 2017-05-31 北京奇虎科技有限公司 防篡改apk的生成方法和装置、安装及运行方法和装置
CN106933695B (zh) * 2017-02-28 2020-06-16 武汉斗鱼网络科技有限公司 一种swf文件的校验方法及系统
CN106934260B (zh) * 2017-03-14 2020-03-17 北京深思数盾科技股份有限公司 代码保护方法、装置、服务器及存储介质
CN107196907B (zh) * 2017-03-31 2018-08-03 武汉斗鱼网络科技有限公司 一种安卓so文件的保护方法及装置
CN108733988B (zh) * 2017-04-19 2023-01-24 北京梆梆安全科技有限公司 安卓平台上可执行程序的保护方法
CN107656742A (zh) * 2017-09-27 2018-02-02 北京奇虎科技有限公司 一种软件产品发布方法和装置
CN107817978B (zh) * 2017-09-28 2020-08-28 聚好看科技股份有限公司 一种可执行文件的生成方法和装置
CN109933325A (zh) * 2017-12-15 2019-06-25 阿里巴巴集团控股有限公司 一种dex文件构建方法、装置及系统
CN110471782B (zh) * 2018-05-09 2023-04-07 杭州海康汽车技术有限公司 一种配置信息一致性处理方法、装置及电子设备
CN110990254B (zh) * 2019-10-25 2023-01-10 苏州浪潮智能科技有限公司 一种基于测试管理平台的脚本自动打包及校验方法及系统
CN111143877B (zh) * 2019-12-20 2023-01-03 国能日新科技股份有限公司 加密基于Python的风光预测算法文件的方法及装置
CN112613033A (zh) * 2020-12-15 2021-04-06 北京鼎普科技股份有限公司 一种可执行文件安全调用的方法及装置
CN113656043B (zh) * 2021-08-24 2023-09-05 北京奇艺世纪科技有限公司 一种代码校验方法、装置、电子设备及存储介质
CN113987470B (zh) * 2021-10-29 2022-12-23 山西大鲲智联科技有限公司 可执行文件处理方法、装置、电子设备和计算机可读介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123481A (zh) * 2013-04-24 2014-10-29 贝壳网际(北京)安全技术有限公司 防止应用程序被篡改的方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102236757A (zh) * 2011-06-30 2011-11-09 北京邮电大学 一种适用于Android系统的软件保护方法及系统
CN104751026B (zh) * 2013-12-25 2018-11-02 中国移动通信集团公司 安卓系统的软件保护方法、软件应用方法及相关装置
CN104408337A (zh) * 2014-11-18 2015-03-11 刘鹏 一种apk文件防逆向的加固方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123481A (zh) * 2013-04-24 2014-10-29 贝壳网际(北京)安全技术有限公司 防止应用程序被篡改的方法及装置

Also Published As

Publication number Publication date
CN104932902A (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
CN104932902B (zh) 一种生成apk文件的方法及终端
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
US10797868B2 (en) Shared secret establishment
JP5996810B2 (ja) 自己書換え基盤のアプリケーションコード難読化装置及びその方法
CN111143869B (zh) 应用程序包处理方法、装置、电子设备及存储介质
CN109862099B (zh) 一种升级校验方法、装置、终端及系统
US20150095653A1 (en) Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package
CN108898008B (zh) 应用程序的运行方法和装置
CN108259479B (zh) 业务数据处理方法、客户端与计算机可读存储介质
CN108111622B (zh) 一种下载白盒库文件的方法、装置及系统
CN101957903A (zh) 一种保护类文件的方法和装置
CN104318135A (zh) 一种基于可信执行环境的Java代码安全动态载入方法
CN108710500A (zh) 资源发布方法、更新方法和装置
CN108134673B (zh) 一种生成白盒库文件的方法及装置
CN112269970A (zh) 一种脚本加密方法、装置、服务器及存储介质
CN109214146A (zh) 应用软件的签名方法、验签方法和装置
WO2023029447A1 (zh) 模型保护方法、装置、设备、系统以及存储介质
CN109241707A (zh) 应用程序的混淆方法、装置和服务器
CN104200137A (zh) 一种保护java程序自身安全的方法
CN107257282A (zh) 一种基于rc4算法的代码全包加密方法
CN112257046A (zh) 一种用软件库实现可信数字身份解密和验签的方法、系统和设备
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
CN109995534B (zh) 一种对应用程序进行安全认证的方法和装置
Bahaa-Eldin et al. A comprehensive software copy protection and digital rights management platform
CN115964681A (zh) 目标应用程序的证书文件的生成方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 519085 Guangdong Zhuhai science and technology innovation coastal Meizu Technology Building

Patentee after: MEIZU TECHNOLOGY Co.,Ltd.

Address before: 519000 technology innovation coastal Meizu science and technology building, Zhuhai, Guangdong

Patentee before: Meizu Technology (China) Co.,Ltd.

CP03 Change of name, title or address