Java Android(安卓)APK中Java代码查看方法(Apktool,dex2jar,jd-gui)

在Java Android(安卓)开发时,有时可能要学习一下别人开发的安卓应用(.apk),这时可能需要Apktool,dex2jar,jd-gui这三个工具,来查看一下APK中的Java代码,本文主要介绍一下查看APK中Java代码的方法,以及这三个工具的下载使用。

1、Apktool,dex2jar,jd-gui下载地址

apktoolhttps://ibotpeaches.github.io/Apktool/

dex2jarhttps://github.com/pxb1988/dex2jar

JD-GUIhttp://java-decompiler.github.io/

2、Apktool的使用

使用Apktool可以资源文件获取,可以提取出图片文件和布局文件进行使用查看,修改smali文件及一些资源文件,在进行编译成APK

通过上面下载地址,下载Apktooljar文件,将下载的jar重命名为apktool.jar,调用apktool.jar的脚本如下:

Windows下bat脚本

https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat

如上面地址访问不了,可以访问这个:

https://www.cjavapy.com/download/5e8b2a30dc72d90263e632c8/

Linux下shell脚本

https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool

如上面地址访问不了,可以访问这个:

https://www.cjavapy.com/download/5e8b2b4fdc72d90263e632c9/

Mac下shell脚本

https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/osx/apktool

如上面地址访问不了,可以访问这个:

https://www.cjavapy.com/download/5e8b2bebdc72d90263e632ca/

Llinux和Mac需要将脚本文件和apktool.jar放到/usr/local/bin目录下,也可以将文件所在目录添加到环境变量中。

Windows需要将bat脚本文件和apktool.jar放到C://Windows目录下,也可以将文件所在目录添加到PATH环境变量中。

注意:Linux和Mac下要确保脚本和apktool.jar有执行权限(chmod +x)

1) 反编译命令

apktool.bat d -f [apk文件] [输出文件夹]

2) 编译命令

apktool.bat b 文件夹(反编译的输出文件)

相关文档https://ibotpeaches.github.io/Apktool/install/

3、dex2jar的使用及JD GUI查看Java代码

dex2jar可以将apk反编译成java源码(classes.dex转化成jar文件)

下载文件http://repository-dex2jar.forge.cloudbees.com/release/com/googlecode/d2j/dex-tools/2.0/dex-tools-2.0.zip

解压出来文件说明:

dex-reader/writer:读写Dalvik可执行(.dex)文件。它具有类似于ASM的轻量级API。

d2j-dex2jar:将.dex文件转换为.class文件(压缩为jar)

smali/baksmali:将dex分解为smali文件,并从smali文件中组装dex。与smali / baksmali的实现不同,语法相同,但是我们在desc"Lcom/dex2jar\t\u1234;"类型中支持转义。

Linux和Mac执行dex2jar

sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk

Windows执行dex2jar:

d2j-dex2jar.bat -f D://apk_to_decompile.apk

输出文件名如下:

apk_to_decompile-dex2jar.jar

使用JD-GUI查看Java代码

打开之前下载的jd-gui文件夹里的jd-gui.exe,然后用它打开上一步生成的apk_to_decompile-dex2jar.jar文件,则可以查看Java源码,效果如下:


相关文档https://github.com/pxb1988/dex2jar

推荐阅读
cjavapy编程之路首页