当前Android系统越来越流行,无论是对于安卓应用的开发人员,还是对于网络安全的研究人员,都有可能需要掌握捕获Android应用通信数据包的方法。根据技术手段不同,常用的抓包方法分两类,一类是通过Android智能移动终端所接入的上层网络设备或线路获取数据流,另一类则是直接在Android移动终端上监听数据流。本文主要探讨第二类方法,下面分别就前期准备、一般步骤、常见问题、扩展说明四方面详谈。(由于本人使用的是Android手机,所以后文在描述的时候都说的是Android手机,但其实本文所说的内容是Android移动终端基本都可以通用的)
所谓学以致用,建议大家看了本文之后还是能实际选择一个安卓应用分析一下。我本人利用本文所说的抓包技术实际分析了百度贴吧安卓客户端的网络通信行为,分析结果参见我的上一篇博文《百度贴吧客户端(Android)网络通信行为分析》,也可直接下载PDF版的完整分析报告,地址是:http://download.csdn/detail/ping_fani07/6028411。
一、前期准备1.1 为Android手机的Root权限解锁Root是Android手机系统中的超级管理员账户,Root权限(即底层权限)和我们在Windows系统下的Administrator权限类似。默认状态下,为了防止系统文件被更改,Android系统并没有把Root账户开放给我们普通用户,我们必须先为Root权限解锁才能获取Root权限。网上一般把Android手机的Root权限是否解锁,简称为Android手机是否root过。
这些年网上涌现了大量手机root工具,使用你自己的手机型号搜,应该能找到合适你的工具。作为一个华为党,俺最后使用了刷机精灵,两次之后成功解锁Root权限。解锁成功后,刷机精灵会在手机上安装一个授权管理工具,以帮助咱们管理哪些应用和程序可以获取Root授权。最新版的授权管理工具还自带了一个工具箱,可以自由卸载手机上的预装软件和系统软件,很省心,很方便!刷机精灵使用教程参照:《手机root权限获取方法:[4]刷机精灵》。
1.2 下载相关工具要用到的工具主要有两个,tcpdump(Android版) 和 adb 。打包下载地址为:http://download.csdn/detail/ping_fani07/6218853。
tcpdump是Linux系统中普遍使用的一款开源网络协议分析工具,使用方法详参:《Tcpdump的详细用法》。
adb是谷歌提供的安卓远程调试工具,应该使用方法详参:《ADB命令介绍》。如果你前面使用了刷机精灵为手机的Root权限解锁,那么可以在刷机精灵的实用工具里找到Adb命令行,直接调用此工具,而无需专门下载;又或者你以前搭建过安卓开发环境,那么应该也可以在***\\platform-tools目录下找到该工具。
二、一般步骤为了让大家看起来方便,我先把所有步骤拉通放在一张图上,给大家一个直观的印象,如图2-0。(考虑到通用性,在上传tcpdump前修改了手机上目的目录权限,部分手机不用。)
图2-0 在某手机上第一次抓包的完整过程
下面是分步解说,其中有些步骤是仅在第一次使用的时候才需要,用【仅需第一次】标注(也就是图2-0中用白色方框圈起来的部分)。
(1)将 adb.exe 放在合适的目录下,并将该目录的完整路径添加到Windows的 PATH 环境变量中。【仅需第一次】【已经搭建过安卓开发环境则不需要此步】(2)打开windows命令提示符窗口,输入命令: adb version ,如果正常显示adb的版本,则说明上一步环境变量设置没有问题,且adb.exe本身完整,如图2-1;反之,则可能是adb.exe本身文件损坏,环境变量设置有误,或者环境变量设置后尚未生效,请自行检查。【仅需第一次】图2-1 检查adb工具是否正常可用
(3)勾选Android手机的\"USB调试\",将Android手机与电脑USB相连,在命令提示符窗口输入命令: adb devices ,若正常显示所连接手机的设备号,则说明连接成功,如图2-2。(注:有些手机的设备号可能读取有问题,显示的是一个问号,这也是可以的,并不会影响后面的操作)图2-2 查看PC与安卓手机是否连接成功
(4)将 tcpdump (for Android)上传至Android手机上,在命令提示符窗口中输入命令:adb push 标签: 手机收银软件有哪些?,手机收银软件有哪些?