Android apk反编译教程

一、工具安装

反编译apk查看源码需要用到 dex2jar 和 jd-gui 工具。下面介绍这两种工具的作用以及安装方法

dex2jar:用于把dex文件转为jar文件

下载链接:https://sourceforge.net/projects/dex2jar/

下载完成后解压即可,解压后如下图
在这里插入图片描述
jd-gui:用于查看jar包源码

下载链接: http://jd.benow.ca/

同样下载完后解压即可,解压后如下图
在这里插入图片描述
如果想修改源码并且重新打包可以继续下载apktool工具,这里只讲解如何查看源码

二、反编译apk

1、解压apk

把apk的后缀名改为zip,然后解压缩得到apk内容文件夹
在这里插入图片描述
apk文件介绍:

assets:静态资源文件主要存放一些附件,例如,一些音频文件,其它的用户业务需求定义的配置文件等,可以以文件的方式被读取或访问。

META-INF:签名文件所在的目录。Android apk文件只有在正式签名后,才可以发布到应用市场。

res:即资源文件。程序写在开发时用到的字体,图片,布局文件等,都在这个目录中。

AndroidManifest.xml:就是项目的配置文件。

classes.dex和classes2.dex:是源码通过编译器先编译为.class文件然后再用dex工具将所有class文件打包成dex文件,反编译主要围绕着这种文件执行。

2、dex转jar

2.1、把上面解压得到的classes.dex文件放在dex2jar路径下(classes2.dex同理)
在这里插入图片描述
2.2、打开命令行转到dex2jar路径下,然后执行 d2j-dex2jar.bat classes.dex
在这里插入图片描述
这里有个Error,我也不清楚是什么原因造成的先不管它,然后回到dex2jar路径下,就可以看到多出来一个classes-dex2jar.jar文件
在这里插入图片描述
到这里我们就拿到了需要的jar包。

3、查看jar包

来到jd-gui安装目录,打开jd-gui.exe,直接把刚生成的jar包拖进去就可以查看jar包源码了
在这里插入图片描述
现在就可以随心所欲看代码了(如果是经过混淆的代码当我没说这句话)

三、遇到的问题

在dex转jar时可能会遇到下面这种问题,导致jar包转不出来。
在这里插入图片描述
从网上查询的信息来看是由于Android 版本的原因,高版本的Android版本编译成的dex文件开头字节会有区别,导致出现dex2jar的版本兼容问题,而目前官网的dex2jar工具只更新到2.0的版本,据了解dex2jar-2.0版本的工具只支持dex开头字节为035和036的Android版本,由于高版本的Android编译生成的dex开头字节不同,如Android 7.0的dex开头字节是037,Android 8.0的dex开头字节是038,Android9.0的dex的开头字节是039,所以目前网上能找到的dex2jar版本应该都无法兼容Android的高版本了吧,通过网上查询资料验证,得以下可行方法解决该问题。

解决办法一:

利用文本工具软件,如notepad++打开APK解压得到的dex文件,将dex文件的开头字节改成当前dex2jar工具可支持的字节,如改成036,保存,再执行dex2jar生成jar的命令,即可正常运行。

解决办法二:下载新版本工具用于AndroidN以后的版本

下载链接:http://qiniu.jplayer.top/dex2jar-2.1-AndroidN%E4%BB%A5%E5%90%8E%E4%BD%BF%E7%94%A8.zip

参考文档:https://blog.youkuaiyun.com/q1581375053/article/details/118694511

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值