【Android】Android APK反编译JAVA代码
出于学习的目的,参考、借鉴、学习优秀开发者的代码,提高自我开发水平,便有捣腾起了,以前初中时候,略微接触过的安卓(Android)反编译,不过那时候仅仅是更换下图标、壁纸... 再用幸运破解器破解安装回手机,而如今则稍微高一点点层次,反编译 apk 的源代码,本文大部分内容跟网上及参考文章内容相似,主要不同为最后查看反编译的 jar 文件一步。
# 准备软件
- apktool (opens new window)
获取apk资源文件(图片、XML)
- dex2jar (opens new window)
获取反编译的apk的jar
- Luyten (opens new window)
查看反编译得到的jar文件里的源代码
# 下载
# apktool (opens new window)
点击下载最新版即可
# dex2jar (opens new window)
点击下载最新版即可
# Luyten (opens new window)
如果你和我一样,目前系统 JDK 环境为 JAVA 11 或者是 8(1.8)以上的版本,我建议你下载 jar 文件的,因为 Luyten 目前只支持到 jdk 1.8。
# 获取 apk 资源文件(图片、XML)
将刚刚下载的三个文件以及要反编译的 apk 文件放到一个文件夹下,方便整理,并将压缩包解压。
在放置 apktool_2.3.4.jar 的文件夹下,按住 Shift
+ 右击
—— 点击 在此处打开Powershell窗口(S)
(也可能是 CMD 窗口),输入
java -jar apktool_2.3.4.jar d -f cloud189_v7.3.0.apk -o cloud189
其中 apktool_2.3.4.jar 为你下载的 apktool 文件名,cloud189_v7.3.0.apk 为你要反编译的 apk 文件名,cloud189 为反编译的文件安放的文件夹,目录在 apktool_2.3.4.jar 同目录下。
生成的文件和文件夹当中,我们关心的是【res】文件夹中和 AndroidManifest.xml 文件,打开 res 文件夹,里面就有我们想要看到的东西了(参考文章原文)
由于这些反编译的 xml、图片资源暂时对我而言,不是我想要的,因此并没有过多的研究。
# 获取反编译的 apk 的 Java 源代码
# 解压 apk
有一些解压工具是可以直接解压 apk 的,如果不行,就先将 apk 的后缀.apk 改成.zip 再解压。
找到 classes.dex 文件,可能不止一个
# 提取 jar
进入解压了的 dex2jar 文件夹,找到 d2j-dex2jar.bat
,将 classes.dex 文件复制到该目录下
在该目录下按住 Shift
+ 右击
—— 点击 在此处打开Powershell窗口(S)
(也可能是 CMD 窗口),输入
.\d2j-dex2jar.bat classes.dex
有多个 dex 文件,则分别反编译
就得到反编译的 jar 文件,我们需要一个工具是查看这些 jar 里的代码
# 查看 jar 代码
很多教程都讲到 jd-gui
这个软件,但这个软件 15 年至今已多年没更新,仅支持到 jdk 1.7,如果你和我一样,使用更高版本的 jdk,则打不开。
这里我推荐 Luyten,当然他并不是说支持所有高版本的 jdk,他目前也只是支持到 1.8,但这也比 1.7 稍微好一点。
下载好 JDK 1.8 并安装好后,并不需要去配置环境,找到 JDK 1.8 的 bin 目录,找到 java.exe,在该目录下打开 powershell,输入
.\java -jar C:\Users\NipGeihou\Desktop\luyten-0.5.3.jar
jar 路径以实际为准
最后发现,安装了 1.8 版本的 JDK 后,直接可以双击 jar 文件即可打开,不用执行命令也可以。
最后打开 jar 文件即可