掌桥专利:专业的专利平台
掌桥专利
首页

Android应用加固保护方法

文献发布时间:2023-06-19 09:51:02


Android应用加固保护方法

技术领域

本发明涉及Android应用安全技术领域,特别是涉及一种Android应用加固保护方法。

背景技术

Android是google公司于2007年推出的开源手机操作系统,由于其强大的功能和灵活的定制能力,使其在短短几年内便跃居智能手机操作系统市场份额的首位,据著名市场研究机构IDC的最新数据表明,2015年第三季度,Android系统智能手机的市场份额高达84.7%,远超其他系统。

随着Android应用和用户规模不断增长,Android应用攻击数量也在逐年攀升,并形成完整的灰色产业。大量Android应用程序面临着应用程序遭逆袭破解、知识产权被侵犯、被二次打包签名等安全问题。为解决此类相关问题,我们分别从代码安全、资源文件安全、数据安全等安全维度提供安全保护,来满足不同客户的安全需求。

虽然Android系统在设计之初便充分考虑到了安全问题,但随着其广泛应用,诸多潜在的安全问题还是逐渐地暴露出来,对其安全性的研究开始受到人们的广泛关注。由于Android平台软件使用的编程语言是Java,而Java源代码编译后的二进制代码极易被反编译,导致其破解难度远小于其他使用编译性语言编写的程序。虽然Android2.3以后加入了代码混淆机制,但通过逆向工程,其API级别上的代码仍是难以隐藏,对攻击者来说,破解的可能性仍是很大。

现有的一些Android应用程序加固方法,大多采用静态处理的方法,即对dex文件进行一些修改来增加攻击的难度。这种加固方法只是增加了代码阅读难度。或者基于JNI调用机制,通过加密原so文件,使用壳程序加载并解密原so文件,间接调用原so文件的函数。然而,由于基于JNI调用机制该方案,不可避免地会在硬盘短暂的留下解密后的明文so文件,攻击者使用Hook系统API、自动化脚本可以轻易地破解此方案。因此攻击者依然能够得到程序的代码,无法保证应用程序的安全性。

还有一部分Android应用加固处理方法是采用编译器自带混淆,但是此类方式只是基于对基础代码混淆,对代码反编译、篡改技术没有起到良好的防范作用。所以当前需要解决防反编译、防程序逻辑破解、防恶意代码注入、防API接口暴露。

发明内容

本发明的目的是针对现有技术中存在的Android应用防护不够全面的问题,提供一种集DEX文件保护、SO文件保护、资源文件保护以及数据文件保护于一体的全方位安全加固保护方法。

具体的,本发明提供的技术方案是一种Android应用加固保护方法,具体包含DEX文件保护、SO文件保护、资源文件保护以及数据文件保护。

所述DEX文件保护通过使用DEX壳、JAVA代码反编译、JAVA指令虚拟化、JAVA字符常量加密等技术对DEX文件进行全面性保护。

所述SO文件保护通过对SO文件进行反编译、防篡改、防盗用、虚机保护、代码压缩对SO文件进行全面保护。

所述资源文件保护是对应用中的资源文件以及JS文件进行加密保护和防篡改保护。

所述数据文件保护是对应用使用到的本地文件、数据库、配置文件进行加密保护。

所述加固保护方法通过安卓APP安装包编译工具进行一键加密。

所述加固保护方法中用到的语言包括Java,Kotlin,C#,Lua,Js,Html,C/C++。

与现有技术相比,本发明的有益效果具体表现在以下几个方面:

一、强大的安全保护:

1. 集DEX文件保护、SO文件保护、资源文件保护以及数据文件保护于一体的全方位安全加固保护以及独创的虚机源码保护技术,安全系数以及破解成本极高,破解难度提高数个数量级。

2. 无需上传源代码,无需担心代码泄漏问题。

3. SAAS平台及私有化部署两种方案,满足不同客户的安全需求。

二、全平台多语言支持:

1. 平台兼容性高,自动适配应用,无需额外开发适配,且不存在兼容性问题。

2. 语言支持丰富,支持包括Java,Kotlin,C#,Lua,Js,Html,C/C++等在内的多种

三、一键加固:

1. 操作流程便捷,App上传后,一键即可完成整个加固流程,操作简单便捷,非技术人员也能轻松掌握。

2. 性能影响小,加固后对启动时间的影响几乎为零。

附图说明

图1是本发明的Android应用加固保护方法DEX文件整体保护示意图。

图2是本发明的Android应用加固保护方法防Java反编译示意图。

图3是本发明的Android应用加固保护方法Java常量字符串加密示意图。

图4是本发明的Android应用加固保护方法Java代码虚拟化保护示意图。

图5是本发明的Android应用加固保护方法html/js保护示意图。

图6是本发明的Android应用加固保护方法的游戏引擎用脚本文件防篡改保护示意图。

图7是本发明的Android应用加固保护方法本地数据保护示意图一。

图8是本发明的Android应用加固保护方法本地数据保护示意图二。

具体实施方式

下面通过结合附图来对本发明的具体实施方式作进一步详细的阐述,但以下实施例仅起到帮助理解本发明的作用,并不能理解为是对本发明的进一步限定。

一种Android应用加固保护方法,具体包含DEX文件保护、SO文件保护、资源文件保护以及数据文件保护。

DEX文件保护:使用DEX壳、JAVA代码反编译、JAVA指令虚拟化、JAVA字符常量加密等技术对DEX文件进行全面性保护。

SO文件保护:对SO文件进行反编译、防篡改、防盗用、虚机保护、代码压缩对SO文件进行全面保护。

资源文件保护:对应用中的资源文件以及JS文件进行加密保护和防篡改保护。

数据文件保护:对应用使用到的本地文件、数据库、配置文件进行加密保护。

所述加固保护方法通过安卓APP安装包编译工具进行一键加密。

所述加固保护方法中用到的语言包括Java,Kotlin,C#,Lua,Js,Html,C/C++。

本发明实施例采用NDK编程的方式,将语义恢复代码保存在C/C++动态链接库中,然后采用JNI技术调用底层的so库,既能够实现Android应用程序的原功能,又能杜绝原始源代码容易被逆向的隐患,从而能实现加固、提高安全性。

根据新的源代码和语义恢复代码,进行编译打包,生成加固后的Android应用。

Android加固包含dex文件整体保护、java代码虚拟化保护、so文件保护、html/js保护、游戏相关脚本保护、本地数据保护、运行时保护这几大类功能。

1. dex文件整体保护

图1,图2所示,防java反编译,可以使反编译工具无法直接把代码反编译为java,提高逆向分析难度,包括但不限于(JEB、jd-gui、jadx)。

图3所示,JAVA常量字符串加密,会隐藏代码中明文的常量字符串,增加逆向难度。

2. java代码虚拟化保护

通过将原java代码指令转换为DX-VM虚拟机指令,运行在DX虚拟机之上,无法被反编译回可读的源代码,任何工具均无法直接反编译虚拟机指令。

图4所示,采用java代码虚拟化保护后,对源码反编译将无法看到任何与原代码相似的内容,函数体中只有对虚拟机子系统的调用。

3. so文件保护

通过对SO文件进行反编译、防篡改、防盗用、虚机保护、代码压缩等技术对SO文件进行全面性保护。

采用so文件保护后,主流反编译器都无法对被保护过的so进行正常分析。

生成 so库的具体步骤包括:编写Java代码(Java文件),声明本地文件中的函数;

新建 .c文件(语义恢复代码);

编写JNI入口函数,用于加载语义恢复代码;

编写项目配置文件Android .mk文件,用于配置项目信息;

编译生成 so库。

so库之后,将 so库和新的源代码P’编译打包,SDK编译工具可以将so库和新的源代码P’都打包进应用程度的apk文件中,得到加固后的Android应用程序,然后就可以正常运行加固后的Android应用程序。

4. html/js保护

图5所示,通过对html/js文件进行防篡改,加密等技术对html/js进行全面保护。

采用html/js保护后,无法直接获得明文的html/js文件。

5. 游戏相关保护

图6所示,通过对主流游戏引擎所用到的脚本/dll文件进行防篡改,加密等技术,进行全面保护。

6. 本地数据保护

通过对对本地数据文件进行防篡改,加密等技术进行全面保护。

图7,图8所示,采用本地数据保护后,无法直接明文查看db文件或sp文件。

与现有技术相比,本发明集dex文件整体保护、java代码虚拟化保护、so文件保护、html/js保护、游戏相关脚本保护、本地数据保护于一体;安全保护更加强大;一键加固更加灵活;Android兼容系统更加完美。

最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • Android应用加固保护方法
  • 一种基于Dex加载器的Android应用软件加固保护方法
技术分类

06120112327745