针对没有混淆的android应用,我们可以很方便的做到反编译查看源代码以及修改源代码,主要用到工具为apktool,dex2jar和jd-gui。
1. apktool
下载地址:https://code.google.com/p/android-apktool/
主要作用为反编译apk为res文件和smali文件,通过修改smali文件然后打包会apk再签名,我们可以做到修改原apk的资源文件和代码逻辑。
用法为
apktool d Settings.apk
可以看到在Settings.apk目录生成一个新的目录,包含该apk的所有res文件,manifest文件,smali文件。
2. dex2jar
下载地址:https://code.google.com/p/dex2jar/
主要作用为反编译apk为jar文件,之后可以通过jd-gui工具看到源码。
用法为
./d2j-dex2jar Settings.apk
该命令会在Settings.apk目录生成Settings_dex2jar.jar文件。
3. jd-gui
下载地址:http://jd.benow.ca/
主要作用为查看jar文件对应的源码。
用法为
jd-gui Settings_dex2jar.jar
之后就可以看到源码。
在ubuntu 14.04 64位系统下,可能会提示找不到找不到libgtk-x11-2.0.so.0 ,安装方式如下:
sudo apt-get install libgtk2.0-0:i386
针对具体需求,使用的工具会有所不同。
a. 查看apk的res文件,用apktool解包即可
b. 查看源码实现,用dex2jar工具转化为jar文件,再用jd-gui工具查看jar文件即可
c. 修改源apk,则一般会通过apktool解包为smali文件,同时用dex2jar和jd-gui查看源码逻辑,方便修改smali文件,之后再通过apktool将修改后的res和smali文件打包回apk,再利用其它工具签名。