android的代码混淆与反编译

以下适用场景:eclipse中的maven项目

为什么将这两个问题放在一起讲?

因为反编译才能将代码混淆的效果直接展现。

这两个问题网络上的参考资料很多,我的这一份也就是从这么多资料中遴选出对我帮助较大的一些,并记录当前的解决进度,分享给大家。

参考资料及所需工具:

代码混淆——

1.Eclipse+ADT进行Android应用程序的代码混淆和签名

讲述了如何启动代码混淆功能:在project.properties中添加

proguard.config=proguard.cfg

及生成签名发布apk(附图)


2.混淆打包及出错信息的解决方法       

讲述了可能出现的问题:

例1(由于混淆找不到所需的类):Warning: com.baidu.frontia.api.FrontiaPush$a$1: 

can't find superclass orinterfacecom.baidu.frontia.module.push.

FrontiaPushListenerImpl$CommonMessageListenerImpl

解决(将所需的类排除):添加

-dontwarn com.baidu.**

-keep class com.baidu.** { *; }

例2(依赖的文件被混淆):Warning: libraryclassandroid.graphics.drawable.

NinePatchDrawable depends on programclassorg.xmlpull.v1.XmlPullParser

解决(将依赖文件排除):在proguard.cfg中添加

-dontwarn org.xmlpull.v1.**

-keep class org.xmlpull.v1.** { *; }

提供了proguard.cfg文件的示例


3.Unable to execute dex: GC overhead limit exceeded

解决的一个问题 在export的最后一步可能出现 需要修改eclipse.ini

添加

-vm

C:\Program Files\Java\jdk1.7.0_21\bin\javaw.exe

-Xms40m   

-Xmx512m           

修改为

-Xms256m

-Xmx1024m


4.android混淆代码总结                     

总结及另一份proguard.cfg文件示例


5.android 通过eclipse混淆代码 打包 + proguard 总结

对proguard.cfg文件中可能用到的内容的参数描述及配置选项


反编译——

Android APK反编译详解(附图) 

过程简述:将apk文件后缀改为zip并解压,得到其中的classes.dex,将classes.dex复制到dex2jar.bat所在文件夹,在命令行下定位到dex2jar.bat所在目录,运行

dex2jar.bat classes.dex

生成classes_dex2jar.jar

然后,进入jdgui,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码

工具下载

JD-GUI(Java反编译工具)                                           

反编译工具包(包含Androidfby、apktool、dex2jar)           

dex2jar官网下载(没有试过)                                           

jdgui官网下载(没有试过)                                                                                                   

你可能感兴趣的:(android的代码混淆与反编译)