文章

APK反编译工具

APK反编译工具

反编译工具

apktool + dex2jar+ jadx 三件套

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

apktool 提取 apk 资源

安装

Mac homebrew 安装:

brew install apktool

参数 CLI Parameters

Decoding Options 反编译

apktool d(decode) file.apk _{options}_

  • -f, –force 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)
  • -s, –no-src 不反编译 dex 文件,也就是说 classes.dex 文件会被保留(默认会将 dex 文件解码成 smali 文件)
  • -r, –no-res

apktool decode app-release-agp4.1.0.apk –force

APkTool 只能将资源文件提取处理,对于.dex 类型的文件是无法查看的,这里就需要用到 dex2jar 了
h726e

Building Options 重新打包
  • -o :指定解码目标文件夹的名称(默认使用 APK 文件的名字来命名目标文件夹)
  • -r :不反编译资源文件,也就是说 resources.arsc 文件会被保留(默认会将 resources.arsc 解码成具体的资源文件)

示例:使用 apktool 将我们反编译的 app-debug.apk.zip.out 文件夹重新打包成 apk

apktool b app-debug.apk.zip.out -o new_app_debug.apk

dex2jar

安装

https://sourceforge.net/projects/dex2jar/files/

使用

sh d2j-dex2jar.sh classes.dex

问题:不支持 Android8 及以上

现象:安卓 8 以上的 apk 需要修改版本号才能识别到,否则反编译会报错,有些类反编译不出

解决 1:用 SublimeText
0uiac

改成
ui8s9

解决 2:
支持Android8的dex2jar

jadx

https://github.com/skylot/jadx
mac homebrew 安装:

brew install jadx

ClassyShark

下载:
https://github.com/google/android-classyshark/releases

jar -jar ClassyShark.jar -open apk 路径

其他工具

TTDeDroid

一键反编译工具 (不需要手动安装 Python) One key for quickly decompile apk/aar/dex/jar, support by jadx/dex2jar/enjarify.

本文由作者按照 CC BY 4.0 进行授权