我正在做的是尝试构建一个可以在 TWRP 或 ClockWorkMod 等自定义 android 恢复中闪烁的脚本。
开始:因此,在 ADB shell 提示符下使用此命令将修改许多 HTC 设备上的引导加载程序锁定或解锁标志所在的分区 -
echo -ne '\x00\x00\x00\x00' | dd of=/dev/block/mmcblk0p3 bs=1 seek=33796
我试图能够从恢复中做同样的事情(Aroma 脚本,但没关系)
问题是,虽然 CWM 恢复可以使用这两条简单的行来完成它:
echo -ne "\000\000\000\000" > /tmp/data_new
dd if=/tmp/data_new of=/dev/block/mmcblk0p3 bs=1 seek=33796 conv=notrunc
TWRP 环境不能。问题似乎与回声中的引号和/或反斜杠有关。
为了解决这个问题,我尝试使用 echo 的输出(只有 4 个 nul 字节)打包一个名为 data_new 的文件,然后使用 DD 命令,但它没有正确读取 data_new,因为我得到 0+0 条记录输入和 0+0 记录输出。我也尝试过编写一个 shell 脚本来执行命令,但在 TWRP 中存在同样的问题。
为了增加一层复杂性,芳香脚本中的命令引用如下:run_program("/sbin/busybox", "dd", "if=/tmp/data_new", "of=/dev/block/mmcblk0p3" etc
我尝试了许多单引号和双引号以及前导反引号的组合,但仍然失败。
底线 -是否有不同的方式来表达 4 个归零的十六进制值?
反过来不是问题,因为它对 Lock 的回显是这样的:(HTCU 上没有反引号和引号不会起作用,因为有或没有回显输出是相同的)
echo -ne "HTCU" | dd of=/dev/block/mmcblk0p3 bs=1 seek=33796
问题在于获取 DD 命令以将 HTCU 值更改为 4 个零,而无需在回显中使用反引号。
任何人都可以帮忙吗?
PS - 我认为这可以通过将带有DD的分区拉到/tmp然后找到HTCU字符串(48 54 43 55)并替换为00 00 00 00来完成,但是分区很大,只有少量数据实际上在其中,因此该过程将花费一些时间,并且脚本会比我想象的要复杂得多,因为是的,我是编码的菜鸟。谢谢
编辑:我尝试使用 /dev/null ,因为这似乎是一个好主意,也是一种完全避免回声的方法。然而,这也失败了。与使用预加载的 4 nul 字节文件的结果相同。我知道这不是恢复,因为 /dev/null 方法在 ADB shell 中产生了同样的故障。
0+0 records in
0+0 records out
0 bytes copied
这是完整的代码字符串:
run_program("/sbin/busybox", "dd", "if=/dev/null", "of=/dev/block/mmcblk0p3", "bs=1", "count=4", "seek=33796", "conv=notrunc")
在 dd 之后,进行快速十六进制编辑的最佳替代方法可能是什么?这是我的要求:在偏移量 0x8404 处写入分区 mmcblk0p3。HTCU 用于解锁,HTCL 用于重新锁定或 0x00000000 用于锁定 再次感谢