Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法将我的Android代理应用程序从数据使用屏幕中排除?_Android_Sockets_Proxy_Nio - Fatal编程技术网

有没有办法将我的Android代理应用程序从数据使用屏幕中排除?

有没有办法将我的Android代理应用程序从数据使用屏幕中排除?,android,sockets,proxy,nio,Android,Sockets,Proxy,Nio,我有一个在android设备中设置转发代理的系统应用程序。问题是,由于所有流量都被重定向到该应用程序,因此“设置”下的“数据使用情况”屏幕显示的所有流量都来自我的应用程序,而不是其他应用程序 阅读本文:帮助我理解,除非应用程序是使用系统映像构建的,否则不能将其从数据使用中排除。然而,VPN服务能够将自己从数据使用中排除,所以如果我能找到一个黑客来做到这一点,它将对我有用 当查看android系统文件/proc/net/xt_qtaguid/ctrl时,它清楚地显示所有套接字连接都被标记为我的应用

我有一个在android设备中设置转发代理的系统应用程序。问题是,由于所有流量都被重定向到该应用程序,因此“设置”下的“数据使用情况”屏幕显示的所有流量都来自我的应用程序,而不是其他应用程序

阅读本文:帮助我理解,除非应用程序是使用系统映像构建的,否则不能将其从数据使用中排除。然而,VPN服务能够将自己从数据使用中排除,所以如果我能找到一个黑客来做到这一点,它将对我有用

当查看android系统文件/proc/net/xt_qtaguid/ctrl时,它清楚地显示所有套接字连接都被标记为我的应用程序的uid

我查看了qtaguid.c,并尝试实现相同的机制,但问题是我甚至无法从我的socketChannel获取文件描述符。由于android使用SocketChannelImpl,我尝试使用反射来获取fd,但这不起作用:

clientChannel = server.accept();
Class<?> clientChannelImpl = Class.forName("java.nio.SocketChannelImpl");
Method method = clientChannelImpl.getDeclaredMethod("getFD", new Class<?>[0]);
FileDescriptor fd = (FileDescriptor) method.invoke(clientChannel, null);
Class fileDescriptorClass = FileDescriptor.class;
Field field = fileDescriptorClass.getDeclaredField("fd");
field.setAccessible(true);
我想即使这样做有效,我也不知道标记是如何生成的,这样我就可以在每个连接中切换它。我知道这个标签的最后4个字节是创建十六进制套接字的应用程序的uid,但仅此而已


这些都有可能吗?谢谢大家!

我想已经太晚了,但无论如何

您应该标记用于建立远程连接的客户端套接字,而不是服务器套接字