1. 问题
- 使用 Android Killer 进行 apk 文件反编译时,遇到“反编译失败,无法继续下一步源码反编译!” 报错。
报错内容:
当前 Apktool 使用版本:android 2.4.1
正在反编译 APK,请稍等...
I: Using Apktool 2.4.1 on chelaile_app.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Administrator\AppData\Local\apktool\framework\1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values / XMLs...
I: Baksmaling classes.dex...
I: Baksmaling classes2.dex...
I: Baksmaling classes3.dex...
I: Baksmaling classes4.dex...
I: Baksmaling assets/A3AEECD8.dex...
Exception in thread "main" org.jf.dexlib2.dexbacked.DexBackedDexFile1.getDexFile(ZipDexContainer.java:181)
at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:90)
at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:39)
at brut.androlib.Androlib.decodeSourcesSmali(Androlib.java:96)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:164)
at brut.apktool.Main.cmdDecode(Main.java:170)
at brut.apktool.Main.main(Main.java:76)
APK 反编译失败,无法继续下一步源码反编译!
2. 更新 APKTOOL
- 下载地址:https://connortumbleson.com/apktool/,此处下载最新版本 apktool_2.4.1.jar;
注意:如果 APKTOOL 已经是 apktool_2.4.1.jar 版本,则直接跳到第三步!
3. 输入 APKTOOL 参数
- 报错中提示是由于非法 dex,这是因为 apk 里有加密过后的 dex 文件,比如有些 apk 的 assets 目录下有加密后的 dex 文件,添加 –only-main-classes 参数即可;
- 在 编辑 APKTOOL 弹窗 参数 输入框,输入参数 --only-main-classe;
注意:这一步是关键,一定不能省略!
- 在 APKTOOL 管理器 弹窗尾部,重新选择默认的 Apktool 版本为 apktool_2.4.1.jar;
4. 重启 AndroidKiller 并再次编译
- 重启AndroidKiller,并再次编译 apk 文件,得到下图,编译成功。