如何配置adb以侦听特定的网络接口?

时间:2017-11-16 02:33:29

标签: android security

我的Android设备有两个网络接口,一个是“公共”,一个是“私有”。如何配置ADB(Android Debug Bridge)只能监听“私有”界面? 我知道有service.adb.tcp.port道具,它有效。 但设置service.adb.tcp.ip的尝试似乎没有任何影响......

1 个答案:

答案 0 :(得分:1)

adbd会监听所有接口,但不幸的是,它现在无法配置。

通过使用属性“service.adb.tcp.port”中定义的端口调用setup_port,在adb/daemon/main.cpp中创建套接字。 函数setup_port定义为here,调用local_init定义here,基本上调用server_socket_thread(已定义here)。 server_socket_thread调用network_inaddr_any_server直到成功。

套接字最终在函数network_inaddr_any_server中创建,定义为there。我们可以看到the address is hardcoded to zero,这意味着它会监听所有接口。

如果你有一个root设备,应该可以添加一个iptables规则来拒绝公共接口上的端口。 Play商店中有应用程序安装iptables。 规则类似于

iptables -A INPUT -i eth1 -p tcp --dport 5555 -j DROP

其中eth1是公共接口。

或者,您也可以尝试编辑函数network_inaddr_any_server,编译adbd并将其替换为您的设备,这也需要root。