一站解决反编译
JADX是一个可以直接反编译apk的程序,无需下面繁琐的步骤。推荐使用!
准备材料
- dex2jar Android .dex 文件和Java的.class文件的转换
- ApkTool 反编译APK工具
- Luyten 是Java反编译工具(procyon的GUI)
- smali 的源码以及下载目录,用于处理smali文件
以上是反编译需要用的基本工具,也是本文的所有工具。
反编译步骤
- 用ApkTool反编译APK到指定目录:java -jar .\apktool_2.5.0.jar d -o xxxx .\xxxx.apk
执行后目录如图:
- 将反编译出来的smali文件编译成dex文件:java -jar .\smali-2.5.2.jar a .\xxxx\smali\ -o xxxx.dex
注意可能有多个smali文件夹如图:
这样就需要多执行两条指令:
java -jar .\smali-2.5.2.jar a .\xxxx\smali_classes2\ -o xxxx2.dex
java -jar .\smali-2.5.2.jar a .\xxxx\smali_classes3\ -o xxxx3.dex
执行后目录如图:
其实也可以一条指令:java -jar .\smali-2.5.2.jar a .\xxxx\ -o xxxx.dex 不过这样执行生成dex文件可能会失败更多的文件。生成的dex没有每个文件夹单独执行指令大。 - 将dex转换为jar包:.\dex2jar-2.0\d2j-dex2jar.bat .\xxxx.dex .\xxxx2.dex .\xxxx3.dex
这样会生成3个jar包如下图(画红线处):
xxxx*-error.zip是一些错误日志 - 用Luyten看jar包的源码,如下图:
图片的包名和类名有涂改过[○・`Д´・ ○]
不过现在的反编译会有很多报错,无法完全反编译所有源码。如果有谁有更好的反编译办法,望告知。o(* ̄︶ ̄*)o