您的当前位置:首页正文

android的代码混淆与反编译

来源:要发发知识网

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

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

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

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

参考资料及所需工具:

代码混淆——

1.

讲述了如何启动代码混淆功能:在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.

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

添加

-vm

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

-Xms40m   

-Xmx512m           

修改为

-Xms256m

-Xmx1024m


4.                     

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


5.

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


反编译——

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

dex2jar.bat classes.dex

生成classes_dex2jar.jar

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

工具下载