捕获Android应用程序生成的网络流量

时间:2016-10-03 08:50:48

标签: android

我想捕获由安装在AVD上的Android应用程序(文件.apk)的GUI上激活的事件(例如,按下的按钮)生成的网络流量。首先,我使用adb shell中的strace命令捕获了进程的系统调用(我使用ps命令获取了进程的PID):

strace -f -tt -s 200 -p 27707 -o syscallcap.txt

然后我分析了txt文件,但主线程(27707)接收数据(或发送数据) - 系统调用recvfrom(sendto或sendmsg) - 来自未知进程;最后两个字段是NULL):

  

27707 19:06:29.441356 recvfrom(72,   “nysv \ 0 \ 0 \ 0 \ 0} \ 323 \ 33 {\ 370 \ r \ 0 \ 0W \ 36 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0”,2400,MSG_DONTWAIT,   NULL,NULL)= 24

我如何理解哪些系统调用对我的目的很重要? 如何从系统调用开始捕获模拟器上安装的Android应用程序的http / tcp / udp网络流量? 任何建议或想法都是受欢迎的,因为这是一个论文项目。

1 个答案:

答案 0 :(得分:0)

嗯,我知道有两种方法可以记录设备的网络流量。

IPTABLES

IPTables是linux Netfilter模块的防火墙应用程序,用于配置链和规则。我们使用iptables来拦截流量并将流量重定向到我们的内部代理服务器,然后内部代理服务器将流量中继到配置的代理服务器。

  

需要 ROOT

Android firewall with VpnService

使用此方法,您可以在应用程序中实施隧道,这将记录所有网络流量。

所提供的链接应该为您提供方向

现在,为了映射来自前台应用的流量,所有应用都有一个唯一的应用ID,可用于设置/监控链以记录其流量。