Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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应用程序访问受保护的UNIX域套接字(使用root)_Android_Linux_Sockets_Root_Unix Socket - Fatal编程技术网

从Android应用程序访问受保护的UNIX域套接字(使用root)

从Android应用程序访问受保护的UNIX域套接字(使用root),android,linux,sockets,root,unix-socket,Android,Linux,Sockets,Root,Unix Socket,我需要从Android应用程序访问UNIX域套接字。它的文件位于/dev,因此我需要root权限才能打开它。我的手机已根目录,因此获得此权限不是问题。但是,我未能找到从root访问此套接字并将通信转发到我的应用程序的方法 好了,Android应用程序获得root权限的唯一方法是通过su工具,因此我需要找到一个本机工具(已经安装在手机中),它可以在STDIN/STDOUT和UNIX域数据包之间架起一座桥梁(这样我的应用程序就可以控制通信)。用于此目的的典型工具是nc和socat。前者可通过busy

我需要从Android应用程序访问UNIX域套接字。它的文件位于
/dev
,因此我需要root权限才能打开它。我的手机已根目录,因此获得此权限不是问题。但是,我未能找到从root访问此套接字并将通信转发到我的应用程序的方法

好了,Android应用程序获得root权限的唯一方法是通过
su
工具,因此我需要找到一个本机工具(已经安装在手机中),它可以在STDIN/STDOUT和UNIX域数据包之间架起一座桥梁(这样我的应用程序就可以控制通信)。用于此目的的典型工具是
nc
socat
。前者可通过busybox获得,但该版本不支持UNIX域套接字。后者根本不可用。我宁愿避免修改系统分区来安装不同的工具

我的应用程序还可以从
su
直接启动一个与该套接字通信的脚本,而无需将通信转发到我的应用程序,但同样,如果没有前面提到的工具,我无法编写这样的脚本

在不安装/开发本机二进制工具的情况下,是否可以实现我想要的功能

也许可以使用
iptables
/
netfilter
执行某些操作,但这似乎不支持此类套接字


编辑:我最终开发了一个本地二进制可执行文件,它以root用户身份打开Unix域套接字,并使用另一个Unix域套接字(由Java部件创建)将其转发给Java部件。有一个for LocalSocket,它接受一个文件描述符并将其用作打开的套接字。最大的挑战是找到如何用Android studio(不是库)编译本机可执行文件,但帮助很大。

为什么不能使用该类?@JamesKPolk因为套接字文件不能从非特权进程(如Android应用程序)打开,所以我需要使用
su
工具。。。它不能启动Java代码。也许?@JamesKPolk它不适用于特殊文件,如套接字文件(我已经尝试过)。此外,Unix域套接字需要路径而不是文件描述符。这就是说,如果我编译自己的原生应用程序,我可能会重新使用该库的逻辑,所以感谢链接。