反编译一个APK需要那些工具?

无论是在Windows平台还是在Mac平台,反编译APK都离不了ApkTool、dex2jar、JD-GUI 这三种工具,那么这三种工具都是做什么用的呢?

  • ApkTool:是一款应用在Apk上的逆向工程的工具,它有编译、反编译、签名等功能,在这篇文章中会讲解如何利用ApkTool查看apk的xml文件、AndroidManifest.xml和图片等。
  • dex2jar:顾名思义,这款工具的作用主要是将dex文件转换成jar文件,转换成jar后我们才好借助JD-GUI来查看反编译dex后的代码;
  • JD-GUI:一款Java反编译器GUI,通过它我们能查看到反编译后的dex的代码,通常需要配合dex2jar使用;

(安装ApkTool、dex2jar、JD-GUI的具体流程)

  • ApkTool
    apktool下载地址
  • 安装apktool
    1.将下载好的apktool.sh文件与apktool_2.9.3.jar文件准备好,并将apktool_2.9.3.jar更名为apktool.jar;
    2.将apktool.jar与apktool.sh移动到/usr/local/bin目录下(可以通过在终端中输出命令open /usr/local/bin来打开这个目录,如果没有该目录可以手动创建);
    3.进入到/usr/local/bin目录下 依次执行如下命令给与权限:
chmod +x apktool.jar
chmod +x apktool

使用ApkTool反编译APK得到xml文件、AndroidManifest.xml和图片

cd /你存放apk的目录

apktool d xxx.apk

该命令执行后会在同级目录下生成一个与你编译的apk同名的目录,此时文件夹中的AndroidManifest.xml文件和资源文件已经是可读状态。

dex2jar将dex反编译成jar

修改apk后缀为.zip或者.rar 然后解压文件 会看到文件夹中有一个或者多个.dex文件 这个.dex文件就是代码文件。

下载dex2jar

  • dex2jar
    dex2jar下载地址 dex2jar 下载完成后是个.zip的文件 直接解压出来即可 然后将上述解压缩得到的.dex文件拷贝到dex2jar目录下。
    cd /dex2jar解压目录 执行如下代码获取权限 会得到对应的 class-dex2jar.jar class2-dex2jar.jar 等文件。
sudo chmod +x d2j_invoke.sh
sh d2j-dex2jar.sh classes.dex
sh d2j-dex2jar.sh classes2.dex

下载JD-GUI

  • JD-GUI
    JD-GUI下载地址 双击运行JD-GUI 因MAC系统权限限制需要在设置中隐私与安全中打开
    然后将上述步骤得到的class-dex2jar.jar 拖拽到JD-GUI界面上即可。

温馨提示:此方法只能用与未混淆的apk 如果混淆或加固的apk不一定好使 感兴趣的可以自行尝试。