这阵子因为分析一款android游戏 所以尝试抓包
但发现古歌上 似乎没人提供 "针对指定app"实时"抓包"的方法,本人的方法不限定只抓http包(Fiddler),对网路环境的要求也非常低(标题夸大了些) 且能实时抓,虽然文章叙述冗长 实际上操作很简单的 
在此分享我的方法:




1.在电脑上使用 CCProxy 架设 socks5 server。


2.android端 借由 ProxyDroid,使APP透过电脑的socks5 server代{过}{滤}理联网。


3.电脑执行 Wireshark,并使用Filter功能,过滤出APP和socks5 server间的通讯。


3.1 要过滤出我们要的信息 需要稍 为了解socks5协议,大体上流程:1.socks5 client与socks5 server 的特定port建立连接。2.client告诉 server 欲连结的host的 IP 和 Port,由server 向 host 建立连结。3.此后只要 client send server 什么,server就send host 什么;server从host recv 什么,client 就从 server recv什么,socket协议不会额外包装讯息。


3.2 Capture Filter:(src 192.168.23.1 and src port 10800 and dst 192.168.23.2) or (src 192.168.23.2 and dst 192.168.23.1 and dst port 10800) , 说明: 192.168.23.2 是 android端IP,192.168.23.1是电脑IP,10800是socks5 server的 port。Capture Filter语法很直观,src代表 source ip ; dst代表 destination ip


我表达能力不好,将就将就...文中很可能有错误的理解 还请各位指出 谢谢哦~


补充: 虽然我的网路环境是 android连上电脑分享的 wifi , wireshark对无线网路的介面监听
其实无论 android使用何种方式连网 甚至 android和电脑不同局网 此方法都适用的(例如手机3G上网也可以)
只要你知道 android端的 ip和 socks5 server的 ip(本机 IP),即可透过 wireshark的 filter过滤出来(因为有过滤,不会有其他杂讯的)
缺点是,同时只能对一个 app抓包 若 android上有一个以上的 app透过同一个 socks5 server连网,wireshark将无法分辨是哪一个app的封包。


补充:
关于 Capture Filter, 我认为应该再说清楚些!


src dst
APP -----------------> socks5 server
IP 定值 IP 定值
port 不定 port 定值
因此 (src 192.168.23.2 and dst 192.168.23.1 and dst port 10800)
_______________________________________________________


src dst
socks5 server -----------------> APP
IP 定值 IP 定值
port 定值 port 不定
因此 (src 192.168.23.1 and src port 10800 and dst 192.168.23.2)




转自大胖