几维资讯> 技术研究

安卓移动应用代码安全加固系统设计及实现

几维安全 2020-05-15 11:12:33  749
分享到:

安卓平台已经逐渐成为最受欢迎的移动终端操作系统,基于安卓系统的软件应用数量众多,同时安全威胁也在不断增加。介绍了Android系统的安全风险及加固的核心技术,据此提出了一种安卓应用程序的安全加固系统,设计和实现了基于代码混淆的加固技术,从而达到了移动应用安全加固的目的。

安卓系统安全风险

在Android应用软件迅速发展的同时,Android用户也面临着许多威胁。常见的恶意威胁如下:

1、恶意扣费

移动应用威胁中最常见的恶意行为是恶意扣费。威胁手段包括用户在不知晓或者不知情的情况下,擅自使用非法手段让用户订购各种收费,活在无意识状态下使用手机支付服务的情况下,它会屏蔽服务短信发送回服务提供商,破坏系统的正常功能。

2、隐私窃取

隐私窃取是近年来流行的一种应用威胁,它是用户不知道的情况下擅自窃取用户的秘密信息。该病毒感染手机后,开始窃取用户隐私信息的背景,包括通话记录、短信内容、地理位置、通讯录、浏览器历史记录信息,然后通过病毒上传信息到远程服务器被黑客控制。如果用户在手机上有网络支付和其他行为,该账户的隐私也将是一个严重的威胁。

3、远程控制

病毒会自动在后台引导载人,并在用户不知道或不授权的情况下与服务器连接。进一步,通过与服务器交互,在没有权限的情况下对受害手机进行控制,从而进一步扣除费用,下载恶意软件和其他恶意行为。

4、资源消耗

在用户不知道或者不授权的情况下,导致用户收费的损失,自动发送短信、多媒体短信、电子邮件、网络连接等。

5、恶意通信

在用户不知道或者不授权的情况下,传播病毒或木马本身,使得它的衍生工具或者其他移动互联网恶意代码可以通过其进行复制、感染或者提供下载。

6、其他

病毒在后台大量下载软件,并消耗用户手机流量,或者执行一些更耗电的操作来消耗手机的功率,从而影响正常手机通信。

几维安全安卓加固系统的实现

1、防逆向保护

针对Android应用的Java、C、C++代码采取混淆、虚拟化、加壳等安全保护措施,防止攻击者通过逆向手段反编译Dex和So文件。同时满足等保2.0中的数据保密性保护要求:应采取加密、混淆等措施,对移动应用程序进行保密性保护,防止被反编译。

2、Dex文件加壳

Dex文件加壳可以防止dex2Jar、Apktool、AndroidKiller、JEB等逆向工具反编译Dex文件,从而避免Java代码被恶意分析、核心技术被窃取。Dex文件加壳基于类加载的方式实现,对Classes.dex文件进行整体加密,并拆解存放在APK的资源中,在APP应用运行时先在内存中解密Classes.dex,并让Dalvik虚拟机动态加载Dex并开始执行。

效果对比:

利用JEB反编译原始Dex文件效果如下,可以清晰看到原始的Java代码。

安卓加固-1.png

利用JEB反编译已加密Dex文件效果如下,只能看到kiwivm壳的代码,无法查看原始Java代码。

安卓加固-2.png

3、Dex-Java2C保护

Dex-Java2C是针对Java函数进行深度加密,将Java自动化翻译为C代码,并进行Native层的虚拟化加密,相比Dex文件加壳粒度更细,安全更高。攻击者无法还原Java函数,从而避免关键Java代码被恶意分析、核心技术被窃取。

Dex-Java2C基于LLVM编译器实现,利用复杂的处理流程将Android-Dex指令代码转换成LLVM-IR,然后利用LLVM后端编译器直接生成【或者与代码虚拟化配合使用】Native指令。该方案的转换是不可逆的,从根本上让逆向工程不具备可行性,从达到保护关键Java代码的目的。

效果对比:

利用JEB反编译原始Dex文件效果如下,可以清晰看到原始的Java代码的函数体。

安卓加固-3.png

4、So文件加壳

So文件加壳可以防止IDA、ghidra等逆向工具的反编译分析,从而避免C/C++代码被恶意分析,核心技术被窃取。So文件加壳技术与Windows平台的加壳技术类似,利用特殊的算法对文件进行加密处理、抹掉ELF格式中的关键节区描述数据,并行文件压缩存储,从而造成IDA等工具解析失败,达到防反编译,保护C/C++代码的目的。

效果对比

采用IDA工具反编译未加壳的So文件,可以看到相关的函数信息。

安卓加固-4.png

采用IDA工具反编译已加壳的So文件,出现解析错误,造成反编译失败

安卓加固-5.jpg

几维安全安卓加固技术优势

1、安全覆盖全面

能够保护应用Dex文件和So文件,并且提供主动防御保护机制,全面保护APP安全;

2、安全强度高

独家Dex-Java2C和源码虚拟化技术配合使用,对Java代码进行高强度加密,可抵挡专业黑客的逆向攻击;

3、加密粒度细

以Java/C/C++代码的函数为单位进行加密保护,粒度细、可控性高、隐蔽性强;

4、兼容性高

适配APP内的各种业务逻辑,并且高级版的Java2C通过中间代码进行加密保护,兼容性与原始应用一致;

5、性能损耗低

Dex加壳方案的启动时间增量小于1s,是业界做得最好的方案。Java函数级加密影响非常小,可以忽略不计。

Android 开发人员已经为广大用户开发出海量的应用程序,这给用户带来方便的同时也带来了巨大的安全隐患。几维安全在长期的攻防实战之中推出了一站式、全生命周期移动安全解决方案,面对中小企业免费提供APP检测与加固服务,登录几维安全官网即可免费申请使用。

分享到:



《安卓应用加密》 《Unity3D手游加密》 《源代码加密》 《移动端的KiwiVM虚拟机》