概括
反编译APK一般会用到以下几个工具:
- apktool:得到apk资源文件,布局文件,AndroidManifest.xml等。
- dex2jar:从dex文件到jar文件。
- jd-gui: 打开并解析jar,得到class文件。
本篇文章记录linux系统中基于以上三个工具对apk进行反解。
apktool
下载
https://bitbucket.org/iBotPeaches/apktool/downloads/
目前最新的是2.4.0版本,建议下这个。
得到的是apktool_2.4.0.jar。
使用
反解apk命令: java -jar apktool.jar d test.apk
test@work:~/Desktop$ java -jar apktool.jar d test.apk
I: Using Apktool 2.4.0 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
S: WARNING: Could not write to (/home/test/.local/share/apktool/framework), using /tmp instead...
S: Please be aware this is a volatile directory and frameworks could go missing, please utilize --frame-path if the default storage directory is unavailable
I: Loading resource table from file: /tmp/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
得到与apk文件夹同名的如下些文件:
-rw-rw-r-- 1 test test 2815 9月 6 15:11 AndroidManifest.xml
-rw-rw-r-- 1 test test 8931 9月 6 15:11 apktool.yml
drwxrwxr-x 5 test test 4096 9月 6 15:11 assets
drwxrwxr-x 3 test test 4096 9月 6 15:11 original
drwxrwxr-x 142 test test 4096 9月 6 15:11 res
drwxrwxr-x 10 test test 4096 9月 6 15:11 smali
drwxrwxr-x 3 test test 4096 9月 6 15:11 unknown
apktool更多使用说明请 --help。
dex2jar
下载
https://sourceforge.net/projects/dex2jar/files/
解压: unzip dex2jar-2.0.zip
用法
- 将test.apk改名为test.zip,然后像平常压缩包一样解压,或者用命令:unzip test.apk。 得到classes.dex文件
- 命令./d2j-dex2jar.sh test/classes.dex 得到classes-dex2jar.jar文件:
dex2jar test/classes.dex -> ./classes-dex2jar.jar
jd-gui
下载
https://github.com/java-decompiler/jd-gui/releases
目前最新的是1.6.3 。
linux系统要.jar后缀的文件,需下载jd-gui-1.6.3.jar 。
用法
- 打开jd-gui: java -jar jd-gui-1.6.3.jar
- 在jd-gui里打开classes-dex2jar.jar文件,就可以看到class文件了,和java基本一样,可以看代码,看流程。
- 可以另存为,保存为想原工程那样结构,只不过是class而已。
十分抱歉,我用的linux系统,截图不方便,用文字有点抽象,请自己多试试。