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