如果看到一个好的应用,作为一个开发者,是不是很有兴趣去分析它是怎么实现的。尤其是Android应用,通常都是通过反编译来分析其中的结构。
分析一个Android应用,一是Android的资源,另一个就是源码。
资源工具
Apktool
Apktool是目前强大的反编译工具,可以反编译出apk,解析出resources.arsc, classes.dex, 9.png. and XMLs
资源,Smali文件,并且可以重新进行打包
工具地址:http://ibotpeaches.github.io/Apktool/
使用方式:
1
| apktool d test.apk
|
反编译出apk
1
| apktool b test
|
对反编译出的进行逆向apk
源码工具
dex2jar
从Apk中解压出class.dex,使用dex2jar进行源码解析。
1
| dex2jar class.dex
|
在当前目录生成classes.dex.dex2jar.jar,可以在jd-gui中查看源码。
dex2jar:https://github.com/pxb1988/dex2jar
jd-gui下载:http://jd.benow.ca/http://jd.benow.ca/
jd-gui源码:https://github.com/java-decompiler/jd-gui
enjarify
这是是谷歌出品的一款反编译工具,它可以将dalvik字节码转化成 java 字节码。
使用方式:
1 2 3 | enjarify yourapp.apk enjarify classes2.dex enjarify yourapp.apk -o yourapp.jar |
跟dex2jar相比,成功率更高,具体的查看:why-not-dex2jar