Android如何禁止其它应用程序联网

2023-08-18 15:38:56  阅读 2414 次 评论 0 条

在 Android 上,禁止其他应用程序访问网络是一个涉及系统级权限和安全性的复杂任务。一般情况下,普通应用程序无法直接禁止其他应用程序访问网络。

但是如果有ROOT就可以好办了


使用su执行以下命令即可禁止第三方应用联网

iptables -A OUTPUT -m owner --uid-owner 应用程序的UID -j REJECT

应用程序的UID获取方法

dumpsys package 包名 | grep userId

恢复联网

iptables -D OUTPUT -m owner --uid-owner 应用程序的UID -j REJECT


应用程序的 UID 在安装时会分配,并且通常在应用程序的生命周期中保持不变。但是,也有一些情况下应用程序的 UID 可能会发生变化,例如:

1、应用程序被卸载后重新安装:在重新安装应用程序时,系统可能会分配一个新的 UID 给该应用程序。

2、用户在设备上进行用户数据重置或恢复出厂设置:在执行此类操作后,应用程序的 UID 可能会发生变化。


假如应用的UID变了,我又忘了之前的UID,咋办?如果以后新安装的APP点背,分配了之前被禁的UID,导到APP无法联网就麻烦了

使用此种方式禁止联网后,在iptables里面无法直接看到应用的包名,所以无法直接找到,此时,可以使用以下命令查看当前网络控制

camellia:/ # iptables -L -n -v --line-numbers | grep REJECT                                                                                          
5       19  8757 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            owner UID match 9802 reject-with icmp-port-unreachable
6        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            owner UID match 9802 reject-with icmp-port-unreachable
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           match bpf pinned /sys/fs/bpf/prog_netd_skfilter_blacklist_xtbpf reject-with icmp-port-unreachable
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            connmark match  0x2000000/0x2000000 reject-with icmp-port-unreachable
3        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

看到了喵(喵看到,往右边滚滚,上面是有滚动条的),9802就是我用上面命令禁用掉的APP UID,再使用恢复命令删掉这9802的控制就行了


另外补充一下,对同一个uid 多次执行iptables -A ,会添加多条禁用规则,什么意思呢,比如我上方的有两条

owner UID match 9802 reject-with icmp-port-unreachable
owner UID match 9802 reject-with icmp-port-unreachable

这个就是执行了2次iptables -A, 那么删除的时候也要执行2次 iptables -D,不然还是会继续拦截。懂了哈,我猜你懂了。

本文地址:http://bloguan.com/?id=610
版权声明:本文为原创文章,版权归 博观网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?