如何直接从植根了shell的设备读取/ dev / diag端口数据

时间:2019-05-14 12:23:04

标签: android c linux android-ndk embedded-linux

问题:如何直接从植根了shell的设备读取/ dev / diag端口数据。 代码:

fd = open("/dev/diag", O_RDWR | O_LARGEFILE | O_NONBLOCK);
    if (fd < 0) {
        perror("open diag dev");
        return -8002;
    }

具有根ADB Shell和C可执行文件的工作解决方案:

  1. 使c代码成为可执行文件。
  2. 在android中创建新用户。
  3. 使可执行文件所有者是带有'su shell'的新用户ID。
  4. 使/ dev / diag端口所有者是带有'su shell'的新用户ID。
  5. 在没有su许可的情况下,但在新用户外壳程序中运行可执行文件。 经过上面编写的一次过程,我每次都能从/ dev / diag端口获取数据。 因此,我不再需要root用户的shell来运行我的可执行文件并从/ dev / diag端口读取数据。

具有根ADB Shell和Android应用程序的非工作解决方案:

  1. 在具有UI的设备中安装apk,以在JNI端调用所需的功能以开始从端口读取数据。
  2. 找到已安装应用程序的用户ID。我在data / system / packages.list文件中找到它。
  3. 使/ dev / diag端口所有者是带有'su shell'的新用户ID。
  4. 在应用程序中调用所需的功能,然后进一步尝试打开/ dev / diag端口。 无法通过代码打开dev / diag端口,并取消设置它-8002。

我没有足够的Linux知识,但是有点想法,如果我已经扎根了shell,那么我肯定可以在/ dev / diag端口上为我的android应用程序提供访问权限。

请帮助我。我真的很感谢你。

0 个答案:

没有答案