Android實時抓包分析 : 善用adb調試橋
談到android網絡抓包,很多人都能想到牛逼轟轟的神器tcpdump。方法就是在android機器上面安裝tcpdump,然后通過-w參數把抓包記錄到本地,再把抓到的.cap文件導到pc上面用wireshark來分析。這里步驟非常多,在和后台聯調的時候,這個效率是非常低的。
能不能在android上面啟動抓包,然后直接在pc端看到實時抓包結果?
有了adb調試橋,我們就可以做到這么便捷。
一、准備工具:
1、android 系統root 2、android上安裝tcpdump 3、android上安裝netcat,可以直接使用busybox的版本 4、pc的wireshark的安裝目錄下需要有nc客戶端 5、把android手機和pc通過usb調試連接上
二、命令:
1、android上先執行:
/data/tcpdump-arm -n -s 0 -w - | nc -l -p 11234
* 11234是示例,端口可以自己定
2、pc上啟動adb forward:
adb forward tcp:11234 tcp:11234 && nc64 127.0.0.1 11234 | wireshark -k -S -i -
* 這里的11234要和前面啟用11234要保持一致
3、如果抓包成功,那么pc端的wireshark是自動啟動的,並且可以看到網絡包
三、實現原理:
關鍵的邏輯在adb forward這個命令,這個命令實現了端口映射的功能:
Forwarding Ports
You can use the forward command to set up arbitrary port forwarding — forwarding of requests on a specific host port to a different port on an emulator/device instance. Here's how you would set up forwarding of host port 6100 to emulator/device port 7100:
adb forward tcp:6100 tcp:7100
You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:
adb forward tcp:6100 local:logd