安卓android代码混淆研究
最近研究了一下Android代码的混淆,混淆过程比较简单,这里主要说proguard.cfg的编写。
首先要说明的一点是引用第三方类库的问题,因为这个是不能混淆的,要保持,我引用了JAVAMAIL的方法,排除混淆如下:
-libraryjars b/activation.jar
-libraryjars b/additionnal.jar
-libraryjars b/mail.jar
-keep class javax.mail.**{*;}
-keep class com.sun.mail.**{*;}
-keep class javax.activation.**{*;}
-keep class org.apache.harmony.**{*;}
-keep class java.security.**{*;}
下来比较纠结的事情出现了,我发现混淆之后的代码基本就是改了方法名成a,b,c,d,e,f等等,可以说混淆成功了,也能安装并运行;
但是混淆只是改了这些名字,如果我们仔细分析还是可以分析出程序的流程的,于是就在研究proguad配置文件,研究http://proguard.sourceforge.net。
把-keep public class * extends android.app.Activity注释了看看,一下居然成功混淆了,代码的逻辑几乎看不出来,字符串也看不清楚,想着这些万事大吉了,
但是当我打包,安装,之后发现程序根本不能运行,直接出现意外错误。
很纠结啊,这个(继承的活动类Activity)不能混淆啊,但是不混又达不到保护代码的目的,纠结中。。。