一种Android平台应用的安全防护方法、装置及存储介质与流程

文档序号:17863468发布日期:2019-06-11 23:01阅读:169来源:国知局
一种Android平台应用的安全防护方法、装置及存储介质与流程

本发明涉及应用安全技术领域,特别是一种android平台应用的安全防护方法、装置及存储介质。



背景技术:

目前在android系统上主流的安全防护技术较多,有签名校验、混淆、反调试、应用加壳、内存防dump等,这些技术都可以在一定程度上防止逆向破解者对应用进行逆向分析。下面介绍部分防护技术,对其进行简单的介绍。

签名校验,签名是指签名者通过某种密码运算生成的新数据来表示自己的身份,接收者可以通过验证数字签名来确认签名者。android系统要求所有应用程序必须要有数字签名,没有数字签名的应用程序无法进行安装。签名校验技术指的是在程序启动时,在启动代码中添加一段用来验证当前应用签名信息的代码,在程序运行时检测当前应用的签名是否与发布时的签名一致,如果是继续运行,否则表示应用已经被恶意修改,签名已经发生了改变,此时直接终止程序的运行。

混淆介绍,混淆策略是每个应用必须增加的一种防护策略,使用混淆不仅是为了防护,也是为了减小应用安装包的大小,所以它是每个应用发布之前必须要添加的一项功能。现在的混淆策略一般都是分为两种,一种是代码的混淆,一种是资源文件混淆。

应用加壳,应用加壳这种方法是目前市场上使用广泛,发展迅速,安全性较高的一种防护技术。这种技术的核心之处就是隐藏需要加密的apk(源apk)的代码,使逆向人员反编译apk后无法直接得到相关的代码,从而对源apk的代码进行保护。应用加壳经过一代代的发展,到目前为止已经演变出了dex整体加密、dex方法抽离、vmp等加壳技术。

这些技术都可以在一定程度上防止应用被恶意破解,增加了代码的安全性。然而混淆与签名校验安全性较低,加壳缺点也是不容忽视的,其兼容性存在比较大的问题,同时由于在应用运行之前需要应用自身先将源程序dex解密或者方法还原,所以运行效率较低,同时对源应用进行解密或方法还原的代码还是保存在了发布的apk中,破解者还是可以通过逆向分析解密代码来进行脱壳的。



技术实现要素:

本发明针对上述现有技术中的缺陷,提出了如下技术方案。

一种android平台应用的安全防护方法,该方法包括:

加密步骤,对获取的apk进行反编译后进行加密得到加密apk;

加载步骤,在加载引擎中对所述加密apk进行解密后安装;

运行步骤,在运行引擎中运行所述安装的解密的apk。

更进一步地,所述加密步骤的操作包括:对获取的apk进行反编译获取该apk源文件,遍历apk源文件获取res资源文件夹,并将res资源文件夹进行拷贝,在拷贝的过程中对拷贝后的res资源文件夹中的资源文件进行重命名,得到混淆后的res资源文件夹,在拷贝的同时对所拷贝的资源文件进行加密;在遍历apk文件时获取dex文件和so文件后对dex文件和so文件进行加密;将所述apk的资源索引表修改为引用了混淆后res资源文件夹的资源索引表;使用加密后的dex文件、so文件和资源文件进行重打包得到加密apk。

更进一步地,所述加载步骤的操作包括:将需要安装的apk的路径作为参数传递至所述加载引擎的第一安装进程,所述第一安装进程通过所述路径参数获取apk;在第一安装进程中判断所述apk是否为加密apk,如果是,则将所述加密apk进行解密获得解密后的dex文件、so文件和资源文件,并将解密dex文件、so文件和资源文件重打包生成解密apk;第一安装进程将所述解密apk的路径作为参数传递给第二安装进程,第二安装进程基于路径参数获取解密apk并进行安装。

更进一步地,所述运行步骤的操作包括:在运行解密后的apk时,运行引擎检测当前系统环境安全性,判断当前系统是否处于root环境或者调试模式,如果不是,解密后的apk开始运行,否则停止解密后的apk运行。

更进一步地,所述运行引擎中设置有安全判断单元用于判断系统环境是否安全性。

更进一步地,所述加载引擎中设置有判断apk是否加密以及解密apk的判断解密单元。

更进一步地,所述加密apk自身不携带解密代码。

本发明还提出了一种android平台应用的安全防护装置,该装置包括:

加密单元,用于对获取的apk进行反编译后进行加密得到加密apk;

加载单元,用于在加载引擎中对所述加密apk进行解密后安装;

运行单元,用于在运行引擎中运行所述安装的解密的apk。

更进一步地,所述加密单元执行的操作包括:对获取的apk进行反编译获取该apk源文件,遍历apk源文件获取res资源文件夹,并将res资源文件夹进行拷贝,在拷贝的过程中对拷贝后的res资源文件夹中的资源文件进行重命名,得到混淆后的res资源文件夹,在拷贝的同时对所拷贝的资源文件进行加密;在遍历apk文件时获取dex文件和so文件后对dex文件和so文件进行加密;将所述apk的资源索引表修改为引用了混淆后res资源文件夹的资源索引表;使用加密后的dex文件、so文件和资源文件进行重打包得到加密apk。

更进一步地,所述加载单元执行的操作包括:将需要安装的apk的路径作为参数传递至所述加载引擎的第一安装进程,所述第一安装进程通过所述路径参数获取apk;在第一安装进程中判断所述apk是否为加密apk,如果是,则将所述加密apk进行解密获得解密后的dex文件、so文件和资源文件,并将解密dex文件、so文件和资源文件重打包生成解密apk;第一安装进程将所述解密apk的路径作为参数传递给第二安装进程,第二安装进程基于路径参数获取解密apk并进行安装。

更进一步地,所述运行单元执行的操作包括:在运行解密后的apk时,运行引擎检测当前系统环境安全性,判断当前系统是否处于root环境或者调试模式,如果不是,解密后的apk开始运行,否则停止解密后的apk运行。

更进一步地,所述运行引擎中设置有安全判断单元用于判断系统环境是否安全性。

更进一步地,所述加载引擎中设置有判断apk是否加密以及解密apk的判断解密单元。

更进一步地,所述加密apk自身不携带解密代码。

本发明还提出了一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的方法。

本发明的技术效果为:本发明的加密方法中,将资源进行混淆,并对dex文件、so文件和资源文件分别进行加密,然后再将加密的dex文件、so文件和资源文件进行重打包得到加密apk,使得加密apk的安全性更高,提高了应用的安全防护等级,且发布的应用自身不含解密代码,解密代码写在了自己定制的android系统中,破解者想要对源程序进行破解必须同时对加密的应用和定制的android系统同时逆向分析,大大增加了破解难度,同时由于程序安装之前是由定制的android系统对程序进行解密而不是程序自身自解密,所以提高了应用的运行效率。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。

图1是根据本发明的实施例的一种android平台应用的安全防护方法的流程图。

图2是根据本发明的实施例的一种android平台应用的安全防护装置的结构图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了本发明的一种android平台应用的安全防护方法,该方法包括:

加密步骤s101,对获取的apk进行反编译后进行加密得到加密apk。为了提高应用的安全性,在加密步骤s101中,对获取的apk进行反编译后进行加密得到加密apk,加密方法可以使用现有的对称、非对称等加密方法,从而提高应用的安全防护等级。

加载步骤s102,在加载引擎中对所述加密apk进行解密后安装。

加载引擎,为了将加密后的应用运行起来,在加载步骤s102中,通过修改android系统源代码,在android系统安装应用的代码执行之前插入加载引擎。在加载引擎中进行应用的解密与安装。

运行步骤s103,在运行引擎中运行所述安装的解密的apk。

运行引擎,为了防止破解者对应用进行破解,在运行步骤s103中,通过修改android系统源代码,在android系统运行应用的代码执行之前加入运行引擎,在所述运行引擎中进行系统环境安全性的检测,若发现当前系统存在安全风险则停止程序运行。即本发明中将android系统中设置了加载引擎和运行引擎,使得本发明所使用的android系统为定制的android系统,通过加载引擎和运行引擎实现了apk的安装及运行,提高apk运行的安全性。

在本发明方法的一个实施例中,所述加密步骤s101的操作包括:对获取的apk进行反编译获取该apk源文件,遍历apk源文件获取res资源文件夹,并将res资源文件夹进行拷贝,在拷贝的过程中对拷贝后的res资源文件夹中的资源文件进行重命名,得到混淆后的res资源文件夹,在拷贝的同时对所拷贝的资源文件进行加密;在遍历apk文件时获取dex文件和so文件后对dex文件和so文件进行加密;将所述apk的资源索引表修改为引用了混淆后res资源文件夹的资源索引表;使用加密后的dex文件、so文件和资源文件进行重打包得到加密apk。在本加密方法中,将资源进行混淆,并对dex文件、so文件和资源文件分别进行加密,然后再将加密的dex文件、so文件和资源文件进行重打包得到加密apk,使得加密apk的安全性更高,提高了应用的安全防护等级,这是本发明的重要发明点之一。

在本发明方法的一个实施例中,所述加载步骤s102的操作包括:将需要安装的apk的路径作为参数传递至所述加载引擎的第一安装进程,所述第一安装进程通过所述路径参数获取apk;在第一安装进程中判断所述apk是否为加密apk,如果是,则将所述加密apk进行解密获得解密后的dex文件、so文件和资源文件,并将解密dex文件、so文件和资源文件重打包生成解密apk;第一安装进程将所述解密apk的路径作为参数传递给第二安装进程,第二安装进程基于路径参数获取解密apk并进行安装。

本发明的方实施例中,在所述加载引擎中设置有判断apk是否加密以及解密apk的判断解密单元,从而所述加密apk自身不携带解密代码,且在加载过程中,使用第一进程进行解密,使用第二进程进行安装,通过本方法发布的应用自身不含解密代码,解密代码写在了自己定制的android系统中,破解者想要对源程序进行破解必须同时对加密的应用和定制的android系统进行逆向分析,大大增加了破解难度,同时由于程序是由定制的android系统进行解密而不是程序自身自解密,所以运行效率也高于传统的加壳方式,这是本发明的重要发明点之另一。

在本发明方法的一个实施例中,所述运行步骤s103的操作包括:在运行解密后的apk时,运行引擎检测当前系统环境安全性,判断当前系统是否处于root环境或者调试模式,如果不是,解密后的apk开始运行,否则停止解密后的apk运行。破解者要对应用进行逆向分析时基本都需要root系统同时打开调试模式,本运行步骤s103中检测当前系统安全性,若发现系统被root或者打开了调试模式停止运行程序,这种方式可以从系统层面上防止应用被破解,极大地提高了应用的安全性。

为了检测当前系统环境安全性,所述运行引擎中设置有安全判断单元,该安全判断单元用于判断系统环境是否安全性。该安全判断单元通过判断系统是否被root、被破解、被反编译等手段确定系统环境是否安全。

进一步参考图2,作为对上述图1所示装置的实现,本申请提供了一种android平台应用的安全防护装置的一个实施例,该装置实施例与图1所示的装置实施例相对应,该装置具体可以包含于各种电子设备中。

图2示出了本发明的一种android平台应用的安全防护装置,该装置包括:

加密单元201,用于对获取的apk进行反编译后进行加密得到加密apk。为了提高应用的安全性,在加密单元201中,对获取的apk进行反编译后进行加密得到加密apk,加密装置可以使用现有的对称、非对称等加密装置,从而提高应用的安全防护等级。

加载单元202,用于在加载引擎中对所述加密apk进行解密后安装。

加载引擎,为了将加密后的应用运行起来,在加载单元s102中,通过修改android系统源代码,在android系统安装应用的代码执行之前插入加载引擎。在加载引擎中进行应用的解密与安装。

运行单元203,用于在运行引擎中运行所述安装的解密的apk。

运行引擎,为了防止破解者对应用进行破解,在运行单元s103中,通过修改android系统源代码,在android系统运行应用的代码执行之前加入运行引擎,在所述运行引擎中进行系统环境安全性的检测,若发现当前系统存在安全风险则停止程序运行。即本发明中将android系统中设置了加载引擎和运行引擎,使得本发明所使用的android系统为定制的android系统,通过加载引擎和运行引擎实现了apk的安装及运行,提高apk运行的安全性。

在本发明装置的一个实施例中,所述加密单元201执行的操作包括:对获取的apk进行反编译获取该apk源文件,遍历apk源文件获取res资源文件夹,并将res资源文件夹进行拷贝,在拷贝的过程中对拷贝后的res资源文件夹中的资源文件进行重命名,得到混淆后的res资源文件夹,在拷贝的同时对所拷贝的资源文件进行加密;在遍历apk文件时获取dex文件和so文件后对dex文件和so文件进行加密;将所述apk的资源索引表修改为引用了混淆后res资源文件夹的资源索引表;使用加密后的dex文件、so文件和资源文件进行重打包得到加密apk。在本加密装置中,将资源进行混淆,并对dex文件、so文件和资源文件分别进行加密,然后再将加密的dex文件、so文件和资源文件进行重打包得到加密apk,使得加密apk的安全性更高,提高了应用的安全防护等级,这是本发明的重要发明点之一。

在本发明装置的一个实施例中,所述加载单元202执行的操作包括:将需要安装的apk的路径作为参数传递至所述加载引擎的第一安装进程,所述第一安装进程通过所述路径参数获取apk;在第一安装进程中判断所述apk是否为加密apk,如果是,则将所述加密apk进行解密获得解密后的dex文件、so文件和资源文件,并将解密dex文件、so文件和资源文件重打包生成解密apk;第一安装进程将所述解密apk的路径作为参数传递给第二安装进程,第二安装进程基于路径参数获取解密apk并进行安装。

本发明的方实施例中,在所述加载引擎中设置有判断apk是否加密以及解密apk的判断解密单元,从而所述加密apk自身不携带解密代码,且在加载过程中,使用第一进程进行解密,使用第二进程进行安装,通过本装置发布的应用自身不含解密代码,解密代码写在了自己定制的android系统中,破解者想要对源程序进行破解必须同时对加密的应用和定制的android系统进行逆向分析,大大增加了破解难度,同时由于程序是由定制的android系统进行解密而不是程序自身自解密,所以运行效率也高于传统的加壳方式,这是本发明的重要发明点之另一。

在本发明装置的一个实施例中,所述运行单元202执行的操作包括:在运行解密后的apk时,运行引擎检测当前系统环境安全性,判断当前系统是否处于root环境或者调试模式,如果不是,解密后的apk开始运行,否则停止解密后的apk运行。破解者要对应用进行逆向分析时基本都需要root系统同时打开调试模式,本运行步骤中检测当前系统安全性,若发现系统被root或者打开了调试模式停止运行程序,这种方式可以从系统层面上防止应用被破解,极大地提高了应用的安全性。

为了检测当前系统环境安全性,所述运行引擎中设置有安全判断单元,该安全判断单元用于判断系统环境是否安全性。该安全判断单元通过判断系统是否被root、被破解、被反编译等手段确定系统环境是否安全。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。

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