apktool工具
apktool下载地址:http://code.google.com/p/android-apktool/
在downloads里下载目前的最新版,下载apktool1.4.3.tar.bz2 和apktool-install-windows-r04-brut1.tar.bz2(视情况而定,这里下的是windows系统下的,如果是linux系统或macos系统则下载相应的另外一个包)两下文件;
将这两个压缩文件解压到某个目录,得到apktool.jar、aapt.exe、apktool.bat三个文件;
将所要反编译的apk文件也放到这三个文件所在的目录,例如test.apk;
使用:在命令提示符中,cd到这三个文件所在的目录,输入apktool d test.apk 即可在当前目录下得到反编译好的test目录;
用apktool工具反编译出来的结果可以很好的查看.xml文件,assets和res目录下的文件反编译后的效果都不错,但是smali目录下的文件是看不出源代码的;因此需要以下两个工具;
dex2jar和JD-GUI
工具下载地址:dex2jar: http://code.google.com/p/dex2jar/
JD-GUI: http://java.decompiler.free.fr/?q=jdgui
将下载的dex2jar压缩文件解压出来;
将要反编译的文件如test.apk重命名为test.zip,并把test.zip解压出来,将里面的classes.dex复制放到dex2jar.bat所在的目录;
打开命令提示符,cd到dex2jar.bat所在的目录,输入dex2jar.bat classes.dex 即可在这个目录中得到classes_dex2jar.jar文件;
运行jd-gui.exe程序,用其打开上面得到的classes_dex2jar.jar文件就可以得到应用程序的java源码;
其它工具:
其它的反编译工具还有如:可以反编译.xml文件的AXMLPrinter2.jar;
可以反编译.dex文件的baksmali.jar,并将其还原的smali.jar;
但相比于比如AXMLPrinter2.jar一个一个反编译.xml文件,显然apktool效率要高的多,可以一下子就反编译应用程序中所有的.xml文件,感觉效果也更好;
同样地,dex2jar和JD-GUI组合可以反编译.dex文件后并得到java源码,价值肯定也比baksmali.jar好啊,个人是这么觉得,反编译android应用程序用上面两种工具比较好;
当然,有反编译,就会有防止反编译的方法,对于那些加了混淆代码的,我就不知道了。。。