学Android开发一段时间了。在此期间,发现直接解压apk得到的xml文件打开是乱码,由于想参考他人软件好的布局美化,所以想到反编译apk。进过多方baidu谷歌,查到apk反编译方法,以下是我的实践过程。
本人在此声明:写出来不是为了破解他人软件,完全是学习的态度。不过,好像通过这种方式也可以去汉化一些外国优秀的软件。
需要工具:
1.dex2jar :是将apk中的classes.dex转化成jar文件。
2.JD-GUI:jar源代码查看工具。
3.apktool:反编译android apk得到AndroidManifest.xml,Drawable下的图片,XML配置,语言资源等文件。
最新下载地址(地址均为官网,自己选择可下载最新版):
1.dex2jar :http://code.google.com/p/dex2jar/downloads/list
2.JD-GUI:http://java.decompiler.free.fr/?q=jdgui
该软件为绿色无需安装,直接打开即可。打开下载地址下拉便可看到根据自己系统选择下载,
如下图,分别为 windows ,linux 和苹果系统。
3.android-apktool:http://code.google.com/p/android-apktool/downloads/list
apktool和apktool-install-windows两个包都要下(如果你是window系统,选择apktool-install-windows,其他系统自行选择),用法下面会讲。
所需文件如下,截止本问发表时,都为最新版,并解压:
步骤:(需安装java jdk且配置好环境变量不详述了这里)
一.反编译apk得到Java源代码
1,首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,我们现在就用上述提到的2个工具来逆向导出java源文并访问。
2, 把得到的classes.dex复制dex2jar.bat所在目录。即我的上图的dex2jar-0.0.9.12-a.zip解压得到文件夹 dex2jar-0.0.9.12。 在命令行模式下(开始 -> 运行,输入cmd,回车)定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar 。如下图红线操作,为cmd命令操作,出现下图提 示:classes.dex->classes_dex2jar.jar即成功。生成classes_dex2jar.jar文件即为java源代 码,在dex2jar.bat所在目录 。
3,运行JD-GUI工具,绿色无须安装的。打开上面的jar文件,即可看到源代码,如下图。
二:反编译android apk得到AndroidManifest.xml,Drawable下的图片,XML配置,语言资源等文件。
1, 解压下载的两个文件包apktool和apktool-install-windows,apktool-install-windows解压缩后得到的 包里有aapt.exe 和apktool.bat.(注意要把apktool-1.0.0.tar.bz2解压后的一个.jar 文件copy进来,即三个文件放在一个文件夹中)。
2.打开命令窗口(开始->运行 输入cmd 回车)进入到apktool.bat的文件夹里。
输入:
apktool.bat d C:***.apk C:***文件夹
命令行解释: d:要反编译的apk路径 输出文件夹
注:要反编译apk放在Capktool盘更目录下。
打开 C:***文件夹 就可以得到我们学院的各种资源了。如下我反编译的android qq。
打开androidManifest.xml如下:
不过如果你愿意上诉复杂操作的话可以把下载到的apktool中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压 缩到你的Windows安装目录下,以方便使用Dos命令.即可简化命令直接cmd下输入apktool d C:***.apk C:***文件夹,原理不说了,熟悉环境变量原理的自然明白,如果想了解可以baidu,这里不在详述了。
来自原文