问题:如何直接从植根了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可执行文件的工作解决方案:
- 使c代码成为可执行文件。
- 在android中创建新用户。
- 使可执行文件所有者是带有'su shell'的新用户ID。
- 使/ dev / diag端口所有者是带有'su shell'的新用户ID。
- 在没有su许可的情况下,但在新用户外壳程序中运行可执行文件。
经过上面编写的一次过程,我每次都能从/ dev / diag端口获取数据。
因此,我不再需要root用户的shell来运行我的可执行文件并从/ dev / diag端口读取数据。
具有根ADB Shell和Android应用程序的非工作解决方案:
- 在具有UI的设备中安装apk,以在JNI端调用所需的功能以开始从端口读取数据。
- 找到已安装应用程序的用户ID。我在data / system / packages.list文件中找到它。
- 使/ dev / diag端口所有者是带有'su shell'的新用户ID。
- 在应用程序中调用所需的功能,然后进一步尝试打开/ dev / diag端口。
无法通过代码打开dev / diag端口,并取消设置它-8002。
我没有足够的Linux知识,但是有点想法,如果我已经扎根了shell,那么我肯定可以在/ dev / diag端口上为我的android应用程序提供访问权限。
请帮助我。我真的很感谢你。