Java反编译xml实现_如何反编译apk⽂件得到源码和XML⽂件相信很多开发者都知道反编译APK,正常情况下,如果我们想要看看xml,看看java源代码,是看不了的。⽤压缩⼯具解压apk得到的⽂件也都是⼆进制⽂件,打开后全是乱码。
开发者能够⽤的也仅仅是图⽚资源,这往往也满⾜不了开发者的需求。
下⾯我就给⼤家详细讲解⼀下Android-apk的反编译步骤:
注意:反编译的前提是:开发者没有使⽤proguard(java代码混淆的⼯具)。
1.下载反编译⼯具
需要下载四个⼯具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot
dex2jar:将apk中的classes.dex转化成Jar⽂件。
JD-GUI:反编译⼯具,可以直接查看Jar包的源代码。
apktool:反编译⼯具,通过反编译APK中XML⽂件,直接可以查看。
apktool-install-windows-r05-ibot:辅助windows批处理⼯具。
下载地址:
dex2jar:le/p/dex2jar/downloads/list
JD-GUI:le/p/innlab/downloads/lis
apktool:le/p/android-apktool/downloads/list
⼯具截图:
2.解压缩APK包
apk⽂件也是⼀种常见的zip,常⽤的压缩软件就可轻松地解压apk⽂件。⽤压缩软件将apk⽂件中的⽂件解压到⼀个⽂件夹中,得到APK中的资源包括XML⽂件和classes.dex⽂件,classes.dex就是java⽂
件编译再通过dx⼯具打包⽽成的。
解压截图:
3.反编译dex⽂件
解压apk⽂件后,你会发现res⽬录的图⽚没有加密,但java源码编译成了⼀个classes.dex⽂件,⽆法⽤普通的反编译class⽂件的⽅法来处理,dex2jar可以将dex⽂件转换成普通的jar包。
解压下载的dex2jar,把解压后的⽂件夹放到系统盘跟⽬录中并把这个⽬录加到系统path变量中,就可以直接⽤:dex2jar.bat或dex2jar.sh 转换dex⽂件了。
DOS⾏命令如下:dex2jar.bat  xx\classes.dex(xx是classes.dex⽂件所在的路径)。
将在同⽬录得到普通jar包:classes_dex2jar.jar,就可以⽤处理普通jar包的⽅法来反编译这个jar包得到原⽂件。
编译截图:xml文件怎么打开
⽣成jar⽂件的截图如下:
4.反编译jar包
得到jar包后,下载⾃已喜欢的反编译⼯具,推荐使⽤JD-GUI,有⽐较简单的图形界⾯,可以反编译单个class⽂件,也可以反编译jar包,⽐较⽅便。
打开压缩⽂件JD-GUI,运⾏,打开上⾯⽣成的jar包,即可看到源代码了。
截图如下:
5.反编译xml⽂件
打开解压的res\layout⽬录,有很多xml⽂件,如果你想看下作者是如何设计界⾯的,你会很失望,因为你看到的是⼀⼤堆乱码!这个时候我们需要⽤到的是apktool。
具体操作⽅法:将下载的apktool和apktool-install-windows-r05-ibot两个包解压到同⼀个⽂件夹下,这
个⽂件夹有三个⽂件:
<,apktool.bat,apktool.jar。把这个⽂件夹也放到系统盘的根⽬录中并把这个⽬录加到path变量中。以HelloWord.apk为例:
在DOS命令⾏中输⼊:apktool d xx\HelloWord.apk HelloWord得到HelloWord⽂件夹,此⽂件夹中的xml⽂件就是编译好的可以正常查看的⽂件。
截图如下:
⽣成的⽂件:
这样就得到了可以得到编译的源码和XML资源。
注意:⽂件的路径中最好不要出现中⽂!