一种生成apk文件的方法及终端的制作方法_2

文档序号:9217043阅读:来源:国知局
K文件容易被反编译工具反编译,极易出现对APK文件盗版、篡改代码并重打包分发的问题,并能够提高APK文件的安全性。
[0052]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0053]以下分别进行详细说明。
[0054]本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三?第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
[0055]请参阅图1,为本发明实施例的方法的一个实施例图,如图1所示,本发明的一个实施例提供一种生成APK文件的方法,可包括以下内容:
[0056]101、接收安卓虚拟机支持的可执行文件。
[0057]其中,在进行APK文件生成的过程中,终端首先会接收到可执行文件,该可执行文件是可以在安卓虚拟机上直接运行的文件格式,也即安卓虚拟机支持的文件,如classes,dex文件。
[0058]102、根据预设校验规则计算可执行文件的校验值。
[0059]其中,在接收到可执行文件后,会对该可执行文件按照预设校验规则进行计算,得到该可执行文件的校验值。
[0060]103、对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的第一文件。
[0061]其中,将预设的校验规则和生成的校验值加入生成第一文件的编译过程,然后生成供可执行文件调用的第一文件。
[0062]104、将可执行文件和第一文件进行打包生成APK文件。
[0063]其中,在生成第一文件后,就可进行最后打包的操作,将对可执行文件和第一文件进行打包,最终生成APK文件。
[0064]由此可见,通过对可执行文件计算校验值,并将该校验值和预设校验规则注入编译生成被可执行文件调用的第一文件,由于可执行文件和第一文件形成相互依赖的关系,最终打包出来的APK文件中的第一文件只能被当次APK文件打包过程中生成的可执行文件使用,而反编译产生java代码后,任何对java代码的修改行为都会破坏可执行文件和第一文件之间的依赖关系,使得再次编译输出的可执行文件无法复用第一文件,从而无法运行APK文件,从而提高APK文件的安全性以及提高生成APK文件的java代码的自我保护能力,有效防止反编译篡改java代码的问题。
[0065]作为可选的,第一文件可以是被可执行文件调用的so文件,此时步骤103具体包括:
[0066]利用原生开发工具包(Native Development Kit,简称NDK)对可执行文件的校验值和预设校验规则进行编译生成供可执行文件调用的so文件。
[0067]可以看出,本技术方案可以将用C或C++编写的可执行文件的校验值和预设校验规则在NDK环境下进行编译,生成的第一文件,也即动态库so文件,so文件作为库文件,能够实现java本地调用,在本方案中由于预先设置了可执行文件需要调用第一文件,也即so文件,因此在NDK编译过程中加入可执行文件的校验值和预设校验规则后,生成出的so文件只能被当次打包出来的可执行文件调用,从而只要篡改了可执行文件的代码就不能使用该so文件了,进一步加强了 APK文件的安全性。
[0068]作为可选的,还可增加对APK文件运行时的Http请求进行加密,可添加在步骤103之前,该方法还包括:
[0069]按照第二加密规则对私钥信息加密生成第二加密数据,私钥信息用于加密Http请求;
[0070]其中,APK文件运行时,由运行该APK文件的终端发送Http请求至服务器,其中,发送的Http请求进行私钥加密,并将加密的http请求发送给服务器,服务器能通过预存的同样的私钥对接收的Http请求进行加密,而后与终端加密的Http请求进行比较,若相同,则为合法请求,能够进一步增加APK文件的安全性。
[0071]此时,步骤103具体可以包括如下步骤:
[0072]对可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则进行NDK编译生成供可执行文件调用的so文件。
[0073]需要说明的是,对可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则进行NDK编译的过程具体为,首先将可执行文件的校验值、预设校验规则、第一加密数据、第一加密规则、第二加密数据和第二加密规则加入到待编译数据中,该待编译数据包括生成第一文件的所需数据,第一文件即此处so文件,而后由在NDK环境编译该待编译文件生成so文件。
[0074]由此可见,通过添加对APK文件运行时的Http请求进行加密,能够进一步提高APK文件的安全性。
[0075]需要说明的是,本发明实施例中还可在生成APK文件的过程中加入指纹白名单验证来进一步增强APK文件的安全性,请参阅图2,图2是本发明实施例中方法的另一个实施例图,如图2所示,本发明实施例提供一种APK文件生成的方法,该方法中步骤201和步骤202与图1所示方法中的步骤101和步骤102类似,步骤206与步骤104类似,此处不再赘述,其中,该方法还包括:
[0076]203、创建指纹白名单。
[0077]其中,指纹白名单包括APK文件的至少一个签名信息对应的指纹。将APK文件的签名信息设置为多个,每一发布者均对应一个签名信息,每一签名信息均具有一个对应的指纹。
[0078]204、按照第一加密规则对指纹白名单进行加密生成第一加密数据。
[0079]其中,在生成指纹白名单后,按照第一加密规则对该指纹白名单进行加密,加密后会生成第一加密数据。
[0080]205、对可执行文件的校验值、预设校验规则、第一加密数据和第一加密规则进行编译生成供可执行文件调用的第一文件。
[0081]其中,在生成第一加密数据后,在编译生成第一文件时,可将可执行文件的校验值、预设校验规则、第一加密数据和第一加密规则均加入到待编译数据中,该待编译数据包括生成第一文件的所需数据,而后通过编译该待编译数据生成第一文件。
[0082]由此可见,通过设置指纹白名单可以使多个发布者均可以发布同一版本的APK文件,并且使得APK文件在运行过程中,只要有与指纹白名单中的一个指纹匹配上,就能验证通过,不仅提高APK文件的安全性,还提高本发明实施例方法的可扩展性。
[0083]作为可选的,在图2所示的实施例的基础上,还可增加对APK文件运行时的Http请求进行加密,可添加在步骤205之前,请参阅图3,图3是本发明实施例中方法的另一个实施例图,如图3所示,本发明实施例提供一种APK文件生成的方法,步骤301至步骤304与步骤201至步骤204类似,步骤307与步骤206类似,不在赘述,还包括:
[0084]305、按照第二加密规则对私钥信息加密生成第二加密数据,私钥信息用
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1