作者:郭孝星
微博:郭孝星的新浪微博
邮箱:[email protected]
博客:http://blog.csdn.net/allenwells
github:https://github.com/AllenWell
【Android应用保护技术探索之路系列】章节目录
【Android应用保护技术探索之路系列】之一:Android应用保护技术开篇
【Android应用保护技术探索之路系列】之二:对抗反编译
【Android应用保护技术探索之路系列】之三:对抗静态分析
【Android应用保护技术探索之路系列】之四:对抗动态调试
【Android应用保护技术探索之路系列】之五:对抗重编译
我们可以通过以下几个方法来对抗静态分析。
一 代码混淆技术
自Android2.3以后,GGoggle就在SDK中正式加入了ProGuard代码混淆工具,我们可以利用这个工具进行代码混淆。
ProGuard提供了压缩、混淆、优化和反混淆栈跟踪等功能,关于ProGuard的详细内容,可以参见的我的。
二 NDK保护
这种方法的思路就是讲核心的Java代码逻辑转移到Native程序中进行实现,使得破解的难度由应用级别提高到汇编级别。但是这样也有弊端,Java几行代码就能完成的事情,Native程序可能需要几十行甚至更多才能完成,这会带来饿代码量激增,开发成本的增加以及调试难度的增加。所有在代码安全和开发成本上也需要寻找一个平衡点。
三 外壳保护
外壳保护是一种代码加密技术,Java代码由于其语言的特殊性, 没有外壳保护这个概念。外壳保护主要是针对Native程序,
开源加壳框架upx
它是一款用于ARM Linux内核程序加壳的开源框架,支持多平台和多类型的文件加壳。
版权声明:本文为博主原创文章,未经博主允许不得转载。