记录下apk反编译,方便后续使用
快速使用:进入
/usr/local/bin
文件夹,将apk拷贝到dex2jar文件夹中,执行命令sh d2j-dex2jar.sh xxx.apk
,打开JD-GUI工具,将生成jar包拖进去即可。
一:如何从Google Play上下载apk
- 打开Google Play官网
- 在界面中选择应用,可以在这里找自己想要的目标apk,也可以点击右上角的搜索框,在搜索框中搜索自己想要找的apk
3. 点击目标应用图标,进入应用的安装页面
- 复制当前页面的链接
- 打开apk downloader页面,将刚才复制的页面链接粘贴到输入框中 apps.evozi.com/apk-downloa…
- 点击Analyze,出现下方页面
- 点击Zip files,出现download.zip,点击即可下载压缩包
二:工具准备
1. 相关工具下载
2.apktool工具准备
1. 把下载好的apktool脚本和apktool.jar文件移动到 /usr/local/bin 文件夹下
2.使用命令chmod +x
分别对apktool和apktool.jar文件进行提权
//先进入到/usr/local/bin文件夹下
cd /usr/local/bin
//执行命令
chmod +x apktool
//执行命令
chmod +x apktool.jar
3.测试是否成功,终端输入apktool,若成功,如下图
3.dex2jar工具准备
1.解压缩下载好的zip文件即可
4.JD-GUI工具准备
- 双击文件
2.双击.app安装
3.如果正常启动就完成了这部分的准备工作,如果出现下方的弹窗,则需要继续解决JD-GUI的安装问题
4.显示包内容
- 找到文件
universalJavaApplicationStub
,使用文本编辑器打开
- 使用这个链接中的内容替当前换这个文件中的内容(来源于参考资料中的文章) 这个链接也可以: github.com/tofi86/univ…
找到 jd-gui.app 右键“显示包内容” 进入Contents目录,用记事本打开Info.plist文件 找到以下这一行
<key>MainClass</key> <string>org.jd.gui.OsxApp</string>
把OsxApp改成App即可
<key>MainClass</key> <string>org.jd.gui.App</string>
链接:www.jianshu.com/p/57a011174…
- 保存后,重新打开即可
三. 使用工具开始反编译
第一步: 使用apktool
反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件.
1. 把你需要反编译的apk文件也复制到 /usr/local/bin
文件夹下,确保apktool
、apktool.jar
以及apk文件都在/usr/local/bin
目录下
2. 执行 apktool d -s xxx.apk
,命令行添加-s
,表示禁止将dex文件解码成smali
//如果当前已在/usr/local/bin 目录下,忽略此步
cd /usr/local/bin
//开始反编译目标APK文件为dex
apktool d -s xxx.apk
3. (可选)将dex解码成smali
//如果当前已在/usr/local/bin 目录下,忽略此步
cd /usr/local/bin
//开始反编译目标APK文件为smali
apktool d xxx.apk
第二步:使用dex2jar工具把classes.dex文件转化成.jar文件
1. 进入到你解压后的dex2jar文件夹下
2. 把classes.dex文件复制到解压后的dex2jar文件夹下,终端执行命令sh d2j-dex2jar.sh classes.dex
sh d2j-dex2jar.sh classes.dex
3. 执行完毕后,会在文件夹下生成一个.jar文件,里面就是java源码
第三步:使用JD-GUI软件查看jar包下的java源码
1. 打开安装好的JD-GUI,直接把第二步生成的.jar文件拖进去,就能看到反编译出来的java源码了
多dex情况下如何只输出一个jar包?
- 把apk放到dex2jar文件夹下
- 执行命令
sh d2j-dex2jar.sh XXX.apk
可以看到最终输出了一个jar包。如果我们反编译时不需要apk中的资源文件,只关心class文件,可以直接使用这种方式,方便快捷。
参考文章