有人说Android程序用Java代码写的,再怎么弄都是不安全的,很容易破解的,现在晚上关于应用加固的技术也很多了,当然这些也可以用于商业发展的,梆梆加密和爱加密就是很好的例子,当然这两家加固的Apk也是被很多geeker拿来练手和研究的主要对象,没有绝对的安全,只有相对的攻防。那么今天就来介绍一下关于Android中的加壳原理,当然这些技术是指大体上的原理介绍,和那些商业加固差距还是很大的,性能优化和加密难度上都是有差别的,开始今天的主题吧:

之前介绍了一篇关于Android中Apk加固的原理介绍的文章:

http://blog.csdn.net/jiangwei0910410003/article/details/48415225

这篇文章主要介绍了如何对dex加密来实现加固,这里就不做太多的介绍了,下面我们来看一下如何对native层进行加密,从而增加破解难度。我们在使用native层的时候,我们都知道一般是和Java层调用native层函数,那么我们就需要对native层函数进行加密,把重要的功能实现存放到native层,加大破解难度,那么我们来看一下如何对so中的函数进行加密?

这里有两种方案:

1、我们知道so文件中有很多section,我们可以将我们的目标函数存到指定的section中,然后对section进行加密即可。

关于这里的实现,参见这篇文章:

http://blog.csdn.net/jiangwei0910410003/article/details/49962173

2、直接对目标函数进行加密

关于这里的实现,参见这篇文章:

http://blog.csdn.net/jiangwei0910410003/article/details/49966719

这两篇文章都详细介绍了具体的实现方案和原理,这里就不做太多的介绍了,后续我将开始介绍破解的相关知识,那时候我们会发现,我们做的这些加固其实并没有什么卵用,所以在研究逆向的时候,弄不好会变疯的,因为在你研究完了加固之后,还要去破解它,没有绝对的安全,只有相对的攻防。唯一的收获是在这个过程中学习到更多。其他下期的破解文章吧~~

PS: 关注微信,最新Android技术实时推送

Android中对Apk加固(加壳)续篇之---对Native层(so文件)进行加固-LMLPHP

05-11 13:09