Android studio配置progard工具生成混淆APK,并使用dex2jar、JD反编译查看效果

刚开始查了很多资料(主要是一些博客、简书),这些资料里读给出了具体的步骤,包括一些非常详细的配置代码,可能是对那些内容的理解不太到位,所以就直接将那些配置复制粘贴,但那个非常简单的helloworld程序一直混淆失败——反编译后java代码为空。

下面我将介绍如果混淆一个最简单的程序,并将其反编译查看混淆效果。

工具

1)java混淆器,android studio自带的有

作用:将源代码混淆,使反编译后增加阅读理解的难度

免费下载地址:-

2)反编译工具dex2jar

作用:将安卓 apk中的classes.dex文件转换为 jar 文件

免费下载地址:http://download.csdn.net/detail/zhuang_stark/9923681

3)java反编译工具jd-gui

作用:查看jar文件中的源代码

免费下载地址:http://download.csdn.net/detail/zhuang_stark/9923712


下面我将从混淆APK反编译查看java代码这两块儿来写

一、混淆APK

-1-

打开android studio,选择一个module,打开它的build.gradle文件,将minifyEnable = false改为 minifyEnable = true 就是打开混淆的开关,其他先不用变。nimifyEnable = true 的下一行中的progard--android.txt是默认的配置,一般不需要更改。如图:

Android studio配置progard工具生成混淆APK,并使用dex2jar、JD反编译查看效果

-2-

打开混淆开关后,接着就是在progard-rules.pro里进行混淆配置。其实,只要打开了混淆开关,那么打包的APK就已经是被混淆了的。比如只是想熟悉一下混淆的流程,那么这个文件里面就可以不用写配置内容了。如果是大的应用车程序,要有针对性的混淆的话,请参考链接这篇博客:点击打开链接

Android studio配置progard工具生成混淆APK,并使用dex2jar、JD反编译查看效果

-3-

生成apk。android studio下找到 Build -> Generate Signed APK,选择你要生成哪个module的apk,然后生成apk。


二、java反编译查看代码

-1-

将生成的 .apk 文件后缀改为  .rar 或者 .zip ,具体看你使用什么压缩文件了,将该文件解压,里面有个classes.dex文件,是java代码打包文件。如图:

Android studio配置progard工具生成混淆APK,并使用dex2jar、JD反编译查看效果

-2-

下载dex2jar.zip后,将其解压,找到里面的dex2jar.bat文件所在的位置,一般就在XXXX\dex2jar-0.0.9.15\目录下面。

Android studio配置progard工具生成混淆APK,并使用dex2jar、JD反编译查看效果

-3-

将上面的classes.dex文件放到dex2jar.bat所在的文件夹下。打开cmd,进入dex2jar.bat所在的位置,执行 dex2jar.bat   classes.dex 命令,就会在该位置生成一个jar文件。

Android studio配置progard工具生成混淆APK,并使用dex2jar、JD反编译查看效果

-4-

将下载的jd-gui.zip解压。找到解压文件夹下的jd-gui.exe文件,点击运行,你会发现界面非常简洁。点击右上角的“file”,然后点击“open file”,打开你刚才生成的jar文件,你就可以看到混淆后的java代码了。

混淆后反编译代码:

Android studio配置progard工具生成混淆APK,并使用dex2jar、JD反编译查看效果

源代码:

Android studio配置progard工具生成混淆APK,并使用dex2jar、JD反编译查看效果

对比会发现,源代码别混淆了。并且源代码里面的标注出来的那部分反编译没有出现!因为progard混淆会省略哪些不必要的代码,而标注出来的那写变量根本没有被使用过,所以就被删减了。


其他参考资源:

在Android Studio中的混淆debug与release

Android studio 混淆+打包+验证是否成功

Android Studio混淆模板及常用第三方混淆(看了都说好)

AndroidStudio 混淆打包

Android Studio实现代码混淆

Android APK反编译详解(附图)

如何反编译apk文件得到源码和XML文件

Proguard使用教程

一步步教你使用Proguard混淆Java源代码

Android APK反编译就这么简单 详解(附图)