(图片来源网络,侵删)
目前针对移动应用市场上安卓APP被破解、反编译、盗版丛生的现象,很多APP开发人员已经意识到保护APP的重要性。而对于移动应用APP加密保护的问题,如何对DEX文件加密尤为重要。那么接下来,我们就先介绍一下什么是App加壳和加壳的原理,利与弊等。一、为什么要加壳?如果你的应用要发布到市场上,那些想从你应用上获取漏洞点的黑客们(包括内购破解,加广告等等),肯定要分析你的代码,还有你有一个核心的算法不想被友商分析,这个时候代码保护就比较重要,当然代码保护手段很多,加壳是其中一项。加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。是应用加固的一种手法对原始二进制原文进行加密/隐藏/混淆。二、什么是加壳,加壳的原理是什么?APP加壳很多时候说的是dex的保护,但是我们知道APP中除了一个核心文件dex以外还有so文件。加壳可以理解为在你的应用包体上套了一层壳,来包裹你的核心东西也就是代码不显露出来。2.1 先来说dex壳:即:把你的核心字节码文件、二进制文件进行加密隐藏,等到运行的时候进行还原,保障运行不出问题。知道点技术的就知道了这里面就有一个安全问题:运行的时候还原不就不安全了嘛?对,还原多少以及什么时机进行还原,这就是我们通俗意义上理解的APP中dex的整体加密和方法加密。也是dex加固的一代和二代加固。毕竟这种壳运行存在还原,就一定被攻击者还原,这个时候就有了dex加固的第三代也就是主流的dexVMP壳,在内存中不还原,而是自解释。同上大家都知道VMP可能存在一个性能问题,为了去兼容解决这个问题,有了算第四代加固java2c,通过下沉的方式将dex层面的指令下沉到Native层面,不仅安全性高,性能也得到了比较大的提升。跟dex壳其实通俗理解上是一样的,只不过dex要借助于Android虚拟机进行加载,so通过自定义linker加载。接下来简单谈一下soVMP,对于手机上so文件目前虽然支持的架构指令集比较多,但是如果我们在自己的so壳上用VMP保护就会相对容易,通过白盒vmp进行处理,攻击者去分析壳的难度也会很大。上面说完了加壳的基本原理,其中必然存在优点和缺点。优点:保护应用中的核心算法,防止被通过各种手段进行破解分析,从而损害到产品的利益。缺点:性能和兼容性损失,首先说性能,由于加壳完以后会首先启动壳,必然存在性能问题,但是看要怎么看这个问题,比如加壳前启动用时1ms,加完壳用时3ms,这个时间对于人来说是无感的。再来说兼容性问题,虽然Android上有各个版本以及严重碎片化问题,但是兼容性都是人做出来的,都是可以通过时间累积进行解决的。加壳的技术和原理已经介绍了,那么接下来我们再介绍一下什么样的应用需要加密呢?金融软件/病毒木马/游戏等敏感度高的应用需要加密,其他的看自己的需要,个人认为简单的,不是很重要的应用没必要加密,毕竟道高一尺,魔高一丈,只要想脱,总能有办法。Android上的加壳技术发展至今也不过三年,而PC端的加壳技术已经有十多年的发展。我们相信它能发展的更好,攻防是动态的对抗,技术一直在进步,反正技术的趋势肯定是做攻的,攻破后都认为守的不行,此消彼长,后面又加强又不好搞了。目前市面上有很多第三方加壳的平台, 如果应用需要加壳选哪一种好?免费版强度都很一般,建议自己测试下商业版的兼容性然后再选择,接触到的壳有apkprotect,梆梆加固,爱加密,娜迦,阿里,百度,腾讯,360等。用户根据自己的需要可以选择一种试试。
0 评论