防止应用程序被逆向工程的加密方法与流程

文档序号:23305859发布日期:2020-12-15 11:36阅读:329来源:国知局
防止应用程序被逆向工程的加密方法与流程

本发明属于加密技术领域,具体涉及一种防止应用程序被逆向工程的加密方法。



背景技术:

如今android(安卓)手机已是全球范围内占有市场份额最多的手机,而手机上的app更是超过了1000万个,可以说一个手机app的是否安全直接影响到用户的使用。逆向工程,就是将已经打包好的andoridapp(应用程序)还原成dex文件(被编译的代码文件)和res文件(文件资源),再将dex文件转化为jar文件,然后使用可视化代码工具进行代码的修改,此时便可以对andoridapp进行广告植入、界面修改、重新二次打包等操作。

虽然android官方有配置特定的规则写入文件,对生产的apk包(android应用程序包)和jar包进行基础加密,但是在市面上有各式各样的逆向工程andoridapp软件(例如android逆向助手,安卓修改大师等),轻而易举就能将andoridapp的源码逆向工程出来,而且android是基于java语言的,java语言的逆向工程工具更是数不胜数,基本能做到100%反编译,导致andoridapp被盗用、篡改、调试等。



技术实现要素:

为了解决上述问题,本发明提供一种防止应用程序被逆向工程的加密方法,首先对安装包文件进行二进制解释,然后对二进制安装包文件字节码进行独有的加密算法,最后再增加一层加密算法的外壳,在一定程度上保护了安装包文件里的核心代码算法,防止安装包文件被二次打包。

本发明所采用的技术方案是:

一种防止应用程序被逆向工程的加密方法,包括如下步骤:

s1、将应用程序对应的安装包文件进行二进制读取得到二进制安装包文件以及外壳dex文件;

s2、对所述二进制安装包文件内容进行加密后得到加密后dex文件;

s3、将所述外壳dex文件与加密后dex文件合并成新的dex文件;

s4、对所述新的dex文件重新打包获得加密后的安装包文件。

优选地,所述s2具体包括如下步骤:

s21、将所述二进制安装包文件内的每一个字节通过加密算法加密得到加密后dex文件;

s22、将所述加密后dex文件进行二进制读取得到读取长度,并在读取长度末尾加空白字节,得到带有空白字节的加密后dex文件。

优选地,所述s3具体为:将所述外壳dex文件添加到带有空白字节的加密后dex文件末尾的空白字节内,进而合并成新的dex文件。

优选地,所述s21具体包括如下步骤:

s211、将二进制安装包文件内的每一个字节通过异或运算得到对应的加密代码;

s212、将所述加密代码再进行base64编码得到加密后dex文件。

优选地,所述空白字节的长度为4个字节。

优选地,所述s3中,所述将外壳dex文件添加到带有空白字节的加密后dex文件末尾的空白字节内,具体为:对带有空白字节的加密后dex文件通过安全散列算法修改末尾4位空白字节数据。

优选地,所述安全散列算法为安全散列算法1sha-1。

与现有技术相比,本发明的防止应用程序被逆向工程的加密方法,首先对安装包文件进行二进制解释,然后对二进制安装包文件字节码进行独有的加密算法,最后再增加一层加密算法的外壳,因此在一定程度上保护了安装包文件里的核心代码算法,防止安装包文件被二次打包,解密算法只有自己拥有,相对安全,增大破解的难度,使应用程序内数据得到保护、防止日志被泄露、防止程序被动态调试、防止被备份、防止被动态注入恶意代码。另外,对于用户来说,这是无感知的,不影响用户的正常使用。

附图说明

图1是本发明实施例提供的一种防止应用程序被逆向工程的加密方法的流程图;

图2是本发明实施例提供的一种防止应用程序被逆向工程的加密方法的具体流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

实施例

本发明实施例提供一种防止应用程序被逆向工程的加密方法,如图1-2所示,包括如下步骤:

s1、将应用程序对应的安装包文件进行二进制读取得到二进制安装包文件以及外壳dex文件;

s2、对所述二进制安装包文件内容进行加密后得到加密后dex文件;

s3、将所述外壳dex文件与加密后dex文件合并成新的dex文件;

s4、对所述新的dex文件重新打包获得加密后的安装包文件。

这样,通过将应用程序内未加密的安装包文件进行二进制读取后得到二进制安装包文件以及外壳dex文件,对二进制安装包文件内容进行加密后得到加密后dex文件;将外壳dex文件与加密后dex文件合并成新的dex文件,对新的dex文件重新打包获得加密后的安装包文件,进而防止应用程序被逆向工程,使应用程序内数据得到保护、防止日志被泄露、防止程序被动态调试、防止被备份、防止被动态注入恶意代码。

所述s2具体包括如下步骤:

s21、将所述二进制安装包文件内的每一个字节通过加密算法加密得到加密后dex文件;

s22、将所述加密后dex文件进行二进制读取得到读取长度,并在读取长度末尾加空白字节,得到带有空白字节的加密后dex文件。

这样,首先将二进制安装包文件内的每一个字节通过加密算法加密得到加密后dex文件;然后将加密后dex文件进行二进制读取得到读取长度,并将读取长度末尾加空白字节,得到带有空白字节的加密后dex文件,其中空白字节是用于占用空间的,以便外壳dex文件合并使用。

所述s3具体为:将所述外壳dex文件添加到带有空白字节的加密后dex文件末尾的空白字节内,进而合并成新的dex文件。

这样,首先将外壳dex文件添加到带有空白字节的加密后dex文件末尾的空白字节内,进而合并成新的dex文件,也就是把空白字节替换掉,最后将新的dex文件重新打包得到加密后的安装包文件,从而可以使应用程序内数据得到保护、防止日志被泄露、防止程序被动态调试、防止被备份、防止被动态注入恶意代码。

所述s21具体包括如下步骤:

s211、将二进制安装包文件内的每一个字节通过异或运算得到对应的加密代码;

s212、将所述加密代码再进行base64编码得到加密后dex文件。

这样,通过将二进制安装包文件内的每一个字节通过异或运算进行第一次加密得到加密代码,将加密代码再进行base64编码进行第二次加密得到加密后dex文件,更能保障加密效果,提高安全性。

所述空白字节的长度为4个字节。

因为一般外壳dex文件的长度为4个字节,所以此处空白字节的长度设为4个字节。

所述s21中,所述将外壳dex文件添加到带有空白字节的加密后dex文件末尾的空白字节内,具体为:对带有空白字节的加密后dex文件通过安全散列算法修改末尾4位空白字节数据。

这样,通过对带有空白字节的加密后dex文件通过安全散列算法修改末尾4位空白字节数据(一般为加密后dex文件的第32-35位字节数据),即对带有空白字节的加密后dex文件中的末尾4位空白字节数据也通过安全散列算法进行加密,得到一个经过安全散列算法加密后的外壳dex文件,进而重新打包生成多重加密后的安装包文件。

所述安全散列算法为安全散列算法1sha-1。

sha-1(中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(nist)发布为联邦数据处理标准(fips)。sha-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。

本发明的防止应用程序被逆向工程的加密方法,首先对安装包文件进行二进制解释,然后对二进制安装包文件字节码进行独有的加密算法,最后再增加一层加密算法的外壳,因此在一定程度上保护了安装包文件里的核心代码算法,防止安装包文件被二次打包,解密算法只有自己拥有,相对安全,增大破解的难度,使应用程序内数据得到保护、防止日志被泄露、防止程序被动态调试、防止被备份、防止被动态注入恶意代码。另外,对于用户来说,这是无感知的,不影响用户的正常使用。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1