通常我们会看到好的APP,都想知道内部结构是如设计的,希望能借鉴一些好的设计和功能,因此需要找到可以通过反编译的方式去查看一些想看的APP
- META-INF: 存放签名文件签名信息的目录,用于系统签名校验;
- res: 存放资源文件的目录,包含项目中的 xml 和 图片资源等;
- AndroidManifest.xml: Android项目中的配置文件;
- classes.dex: 由Java产生的字节码文件打包生成为虚拟机可以解读的字节码文件,所有的源码都在其中;
- resources.arsc: 资源文件的ID索引表,如:layout、drawable、mipmap都会在R文件生成相应的ID资源;
- 其他目录:开发者自行添加的目录,如:存放资源的 asserts 、存放依赖包的 lib 目录等。
Fiddler
工具名: Fiddler
官网: http://www.telerik.com/fiddler
下载地址: https://www.telerik.com/download/fiddler
使用文档: 直接参考 Trinea 的文章 http://www.trinea.cn/android/android-network-sniffer/ 即可。
功能: 支持对 HTTP 和 HTTPS 两种协议进行抓包。
相比 Tcpdump ,它的好处在于手机不需要 Root,且有自己的 GUI 。不过它只支持 HTTP 和 HTTPS 两种协议。另外在使用时,手机也需要连接 Wi-Fi 并设置好代理,
Fiddler 是本文介绍的最后一个工具,Mac 下使用 Charles,
工具名: WireShark
官网: https://www.wireshark.org/
下载地址: https://www.wireshark.org/#download
使用文档: http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html (非常齐全的文档)
功能:
- 配置 Tcpdump 生成打 pcap 文件,进行分析;
- 或者可以让电脑建立热点,手机连上电脑创建的热点进行抓包,这种方式处理起来更加方便灵活。
工具名: TcpDump
官网: http://www.androidtcpdump.com/
下载地址: http://www.androidtcpdump.com/android-tcpdump/downloads
使用文档:
- Trinea版本:http://www.trinea.cn/android/tcpdump_wireshark/
- MrPeak版本:http://mrpeak.cn/blog/tutorial-tcpdump/
功能: 对手机进行网络抓包,前提是手机已经获取 Root 权限。支持 HTTP 和 HTTPS ,还支持更多其他协议。
工具名: ClassyShark
源码: https://github.com/google/android-classyshark
配置文档: 通过下载链接 https://github.com/google/android-classyshark/releases ,下载 jar 包到本地即可
使用文档:
- Github markdown版本:https://github.com/borisf/classyshark-user-guide
- Github PDF版本:https://github.com/google/android-classyshark/blob/master/CommandLine.pdf
- 简书版本:http://www.jianshu.com/p/8e8b88ea2197
功能: 可直接浏览 Apk,支持对.dex, .aar, .so,.apk, .jar, .class等文件的操作。
工具名: Procyon
源码: https://bitbucket.org/mstrobel/procyon
配置文档: 通过下载链接 https://bitbucket.org/mstrobel/procyon/downloads,下载 jar 包到本地即可。
使用文档: https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
功能: 将反编译得到 jar 包还原成 java 文件,同时能够更强的还原代码的逻辑结构。
Procyon 的优势所在了。直接去到 Procyon 的目录下,并将 enjarify 反编译好的微信 jar 文件放置到同级目录,
enjarify
工具名: enjarify
源码: https://github.com/google/enjarify
配置文档: 下载源码到本地,并安装 Python3 的环境,同时配置好环境变量。
使用文档: 可以参考上面的源码地址中的说明,或者乌云平台的文章 http://wiki.wooyun.org/android:tools:enjarify。
功能: 可直接将 apk 文件还原成为 jar 文件,也可以和 dex2jar 一样,直接操作某个dex。
这是 Google 出品的一个逆向分析工具,从反编译成 jar 包的流程来说,要比 dex2jar 方便得多。下载完工具到本地并配置好 Python 环境后,需要修改 enjarify 目录下的 enjarify.bat 文件,将 python3 改为 python。
jd-gui
工具名: jd-gui
源码: https://github.com/java-decompiler/jd-gui
功能:
- 查看 dex 文件还原成为 jar 文件代码;
- 将 jar 文件中所有的 class 文件转换成为 java 文件。
使用很方便,下载后,直接把用 dex2jar 生成的微信 jar 包拖曳进去即可查看到对应的源代码。
dex2jar
工具名: dex2jar
官网: https://sourceforge.net/projects/dex2jar/
源码:
- Github地址:https://github.com/pxb1988/dex2jar
- Bitbucket地址:https://bitbucket.org/pxb1988/dex2jar
配置文档: 很简单,去官网链接直接下载到本地即可。
使用文档: 同样比较简单,直接看下面示例,或者 Google 一下。
功能:
- 将 dex 文件还原成为 jar 文件;
- 将 dex 文件还原成为 smali 文件;
- 其他一些命令行很少用,喜欢折腾的童鞋,同样自行摸索。
SmaliIdea: https://github.com/JesusFreke/smali/wiki/smalidea
反正我一看到 SmaliIdea 是震惊了。目前 SmaliIdea 最新的版本是 0.03,喜欢玩耍的童鞋可以到下面的下载地址中:
Apktool
工具名: Apktool
官网: http://ibotpeaches.github.io/Apktool/
源码:
- Github地址:https://github.com/iBotPeaches/Apktool
- Bitbucket地址:https://bitbucket.org/iBotPeaches/apktool/downloads
配置文档: http://ibotpeaches.github.io/Apktool/install/, 教你如何配置 Apktool 的使用环境。
使用文档: http://ibotpeaches.github.io/Apktool/documentation/, 教你各种基本的命令的使用。