APK反编译

Creative Commons
本作品采用知识共享署名

本文说明如何在ubuntu下进行apk的反编译

工具

apktool

https://ibotpeaches.github.io/Apktool/install/ 下载linux版本的文件,分别为apktool和apktool.jar
将以上文件放在/home/frank/opt/android-tool/disass

dex2jar

https://github.com/pxb1988/dex2jar 下载最新的release版本,解压缩到/home/frank/opt/android-tool/disass

jd-gui

http://jd.benow.ca/ 下载linux版本放到/home/frank/opt/android-tool/disass
jd-gui需要libgtk-x11-2.0.so.0,且jg-gui只有32bit版本,需要安装

1
sudo apt-get install libgtk2.0-0:i386

配置

/home/frank/opt/android-tool/disass添加到环境变量,修改~/.bashrc在最后加入一句

1
export PATH=$PATH:/home/frank/opt/android-tool/disass/

使用

apktool

从apk中提出资源

1
apktool d app-debug.apk

会在当前目录下产生app-debug目录,里面保存反编译出来的资源

1
2
3
4
5
6
7
.
├── AndroidManifest.xml
├── apktool.yml
├── original
├── res
├── smali
└── smali_classes2

dex2jar

将dex转为jar
先将app-debug.apk改为app-debug.zip,并解压缩得到dex文件

1
unzip app-debug.zip

再将dex文件转换为jar

1
2
d2j-dex2jar.sh classes.dex
d2j-dex2jar.sh classes2.dex

生成的文件为classes-dex2jar.jar和classes2-dex2jar.jar

jd-gui

查看转化为jar的源文件
执行jd-gui开启classes2-dex2jar.jar, 可以查看各个class及代码
jdgui