使用 Android 自带的 proguard 混淆源码

一直以来对于android的项目就没有进行混淆,因为就算混淆了也不能混淆 Activity,Service,BroadcastReceiver 这些类,所以别人反编译也能分析出来。并且自己的代码本来就没有什么牛逼哄哄的地方,因此更没有混淆的理由了。但是最近研究android越多,反编译越多,发现大多数应用都是混淆了的,在分析源码的时候,发现也有一定掩人耳目的价值,故自己也尝试了一下混淆。
我的ADT 版本是 10,因此混淆是有的,我也不知道从 ADT 哪个版本开始有 proguard,因此你要保证你的 “sdk目录\tools\” 下有 proguard 这个文件夹。
使用 Android 自带的 proguard 混淆源码
现在我们在 eclipse 中新建一个项目,一般都会出现 proguard.cfg 这个文件。这个文件 便是我们的混淆脚本文件,好在的是 ADT 提供了懒人解决方案,因此一般乃至于大多数情况下,我们是不需要更改这个 混淆脚本文件。当然如果你想要知道更多有关 proguard 以及混淆脚本的知识可以访问你安装好的SDK文档:
你的SDK安装目录\docs\guide\developing\tools\proguard.html
这里我使用Samples 中的 NotePad 举例
使用 Android 自带的 proguard 混淆源码
大家可能注意到了,没有 proguard.cfg 这个混淆脚本文件,没关系,我们从其他项目中复制一个过来。
然后我们在 default.properties 这个文件里添加一句代码,让编译器在 release 的时候自动运行 ProGuard 调用 proguard.cfg 脚本进行混淆
使用 Android 自带的 proguard 混淆源码
由于在 Debug 下,不可能会有人会混淆代码,因此这只在release中有效。
接下来我们导出此项目的未签名apk
使用 Android 自带的 proguard 混淆源码
然后,我们使用 dex2jar 把本apk中的dex转为jar,再用 jd-gui 进行反编译查看,下面我们就可以发现,我们的apk已经混淆了,HOHO~~~
使用 Android 自带的 proguard 混淆源码
Have fun!
Tags: 

延伸阅读

最新评论

发表评论