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

时间:2017-07-23 19:48:52

标签: android linux sockets root unix-socket

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

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

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

是否可以在不安装/开发本机二进制工具的情况下做我想做的事情?

也许可以对iptables / netfilter做一些事情,但这似乎不支持这种套接字。

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

0 个答案:

没有答案