在 ADB Shell 中以 Root 身份运行命令的 Bash 脚本

在 ADB Shell 中以 Root 身份运行命令的 Bash 脚本

我正在尝试使用 netcat 转储 Android 设备的分区。我创建了 3 个 bash 脚本来支持该过程。我在第二个脚本中遇到了麻烦,即通过 netcat 转储特定分区。在命令行上,我曾经输入以下命令:

  1. adb shell
  2. (在根目录) dd if=/dev/block/mmcblk0 | /sdcard/nc -l -p 8888

根据上述命令,我尝试编写一个 bash 脚本,详细信息如下:

   #!/bin/bash
   adb shell "su
   dd if=/dev/block/mmcblk0 | /dev/examiner/nc -l -p 8888"

但结果却是文本文件,大小为零。我尝试更改用于标识变量的引号,但结果仍然相同。

提前致谢。

答案1

#!/bin/bash
adb shell "su
dd if=/dev/block/mmcblk0 | /dev/examiner/nc -l -p 8888"

问题是,这样管道就在非特权adbshell 中执行,而不是在由 生成的 root shell 中su执行;这导致管道在没有 root 权限的情况下执行,并且文件长度为 0(可能是由于命令if无法在没有 root 权限的情况下读取块设备)。

su使用su选项直接在生成的 root shell 中运行命令-c,该选项允许直接在生成的 shell 中运行命令:

#!/bin/bash
adb shell "su -c 'dd if=/dev/block/mmcblk0 | /dev/examiner/nc -l -p 8888'"

相关内容