我目前正在尝试将数据写入我在手机上运行的 HID 驱动程序。如果我在 shell(通过 adb)中运行以下命令,echo -e \\x00\\x00\\x07\\x04\\x00\\x00\\x00 > /dev/hidg0 && echo -e \\x00\\x00\\x00\\x00\\x00\\x00\\x00 > /dev/hidg0
则在连接到设备的计算机上键入正确的字符,在这种情况下是 da。但是,如果我像这样在 android 应用程序中发送相同的命令
Runtime shell = Runtime.getRuntime();
Process p = shell.exec("su");
DataOutputStream out = new DataOutputStream(p.getOutputStream());
out.writeBytes("echo -e \\x00\\x00\\x07\\x04\\x00\\x00\\x00 > /dev/hidg0 && echo -e \\x00\\x00\\x00\\x00\\x00\\x00\\x00 > /dev/hidg0\n");
打印了 2 个单引号,但仅此而已。我已经证明该应用程序通过将文件写入只能由 root 访问的位置来获得 root 权限。
那么为什么像这样的命令在 shell 中的行为方式与抛出进程类的方式不同呢?是否有人对我应该如何将数据发送到我的设备驱动程序有任何建议?
谢谢阿德里安
PS我也尝试过shell.exec("echo -e \\x00\\x00\\x07\\x04\\x16\\x06\\x00 > /dev/hidg0 && echo -e \\x00\\x00\\x00\\x00\\x00\\x00\\x00 > /dev/hidg0");
,但这没有给我任何东西