我想知道我的 android 上的哪些应用程序连接到哪些 IP 地址。本质上,我想知道这些应用在未经我同意的情况下在后台做什么。
我在我的监控应用程序中尝试了一个 netstat 操作系统调用,它已经为我提供了打开的连接和连接的 IP 地址,但是没有进程名称、pid 或 uid 可以让我将连接映射到特定的应用程序。 'netstat -p' 似乎没有提供进程信息。
最佳答案
如果您阅读 'netstat' 的源代码,它实际上从/proc/net/tcp 中读取数据,其中包含 TCP 套接字表的转储,数据如下所示。
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 0100007F:13AD 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 517 1 cbf19b40 300 0 0 2 -1
您会发现每个连接都有一个 uid,因为 Android 操作系统使用一个用户帐户运行每个应用程序,这意味着拥有一个唯一的 uid,这将有助于将每个连接映射到一个进程。
希望这些信息对您有所帮助。
关于Android:以编程方式确定打开 TCP 连接的应用程序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632314/