最近反编译了几个app,简单记录下apktool、dex2jar、jd-gui这三个工具的使用。

工具简介

  • apktool:用于反编译出res下的各种资源文件
  • dex2jar:这个命名程序员一看就懂,就是将dex文件转成jar文件,简单理解就是反编译出java代码(注:jvm可执行文件是.class, 而android的dalvik虚拟机可执行文件就是.dex。转换过程:自己编写的.java代码→.class文件→.dex文件(APK中))
  • jd-gui:用于查看jar文件(上一步转换出来的jar文件)

 

1.ApkTool配置

下载地址:https://ibotpeaches.github.io/Apktool/install/ (不需要翻墙)

步骤如下图:

apktool 转java 代码 apk转jar格式转换器_jar文件

第5步环境变量就是直接把你那两个文件的目录添加到path变量中。

配置完成之后把apk拷贝到apktool目录中,然后打开命令行切换到apktool目录,输入:

apktool.bat d -f [apk文件全称,带后缀] [解包之后文件保存路径,可不填,默认为当前目录]

示例:apktool.bat d -f mt.apk

运行结果如图:

apktool 转java 代码 apk转jar格式转换器_apktool 转java 代码_02

这时在apktool目录中就可以看到反编出来的资源文件了,如下图:

apktool 转java 代码 apk转jar格式转换器_反编译_03

OK,大功告成。

 

2.dex2jar和jd-gui配置

dex2jar下载地址:https://sourceforge.net/projects/dex2jar/ (不需要翻)

jd-gui下载地址:http://java-decompiler.github.io/ (不需要翻)

这两个不用配置什么,直接解压出来就行了。如图:

 

apktool 转java 代码 apk转jar格式转换器_jar_04

一家人要整整齐齐。

 

2.1 使用

1.先将需要反编译的apk后缀改为.zip ,然后解压出来。如下图:

apktool 转java 代码 apk转jar格式转换器_反编译_05

其中会有一个或多个classes.dex文件。

 

2.将上面解压出来的classes.dex文件拷贝到dex2jar-2.0目录中。然后打开命令行,切换到dex2jar-2.0目录下。

运行 d2j-dex2jar.bat classes.dex

apktool 转java 代码 apk转jar格式转换器_反编译_06

运行完之后会在当前目录中生成两个文件 classes-dex2jar.jar(反编译出来的jar文件)、classes-error.zip(报错信息)

这里报错 “can not merge I and Z” 这个是App的一种屏蔽dex2jar解压的手段。通过添加一种错误代码使dex2jar反编译报错。

参考链接:https://www.jianshu.com/p/0306cb947d7a

 

3.找到解压的jd-gui-windows-1.5.0文件夹,双击运行jd-gui.exe。然后直接将上面反编出来的classes-dex2jar.jar拖进去就行了。

(注:很多主流app都做了加密,很难看到全部代码。小app倒是可以反编看看源码。当然如果你能看懂.smali代码的话倒是可以直接看.smali代码,smali代码在第一步通过apktool反编出来的有。)