Android 基于linux开发,所以linux的基本命令在android手机上是可以执行的,基于这个原理,可以使用 Linux 的dd命令进行移动端磁盘读取与保存。
1.首先进入如下目录:
/dev/block/platform/7824900.sdhci/by-name
在该目录下ls,就可以看到分区名称和对应的磁盘,如下:
rwxrwxrwx root root 1970-02-05 09:10 DDR -> /dev/block/mmcblk0p21
rwxrwxrwx root root 1970-02-05 09:10 aboot -> /dev/block/mmcblk0p2
rwxrwxrwx root root 1970-02-05 09:10 abootbak -> /dev/block/mmcblk0p3
rwxrwxrwx root root 1970-02-05 09:10 autobak -> /dev/block/mmcblk0p19
rwxrwxrwx root root 1970-02-05 09:10 boot -> /dev/block/mmcblk0p20
rwxrwxrwx root root 1970-02-05 09:10 cache -> /dev/block/mmcblk0p26
rwxrwxrwx root root 1970-02-05 09:10 config -> /dev/block/mmcblk0p28
rwxrwxrwx root root 1970-02-05 09:10 devinfo -> /dev/block/mmcblk0p30
rwxrwxrwx root root 1970-02-05 09:10 fsc -> /dev/block/mmcblk0p15
rwxrwxrwx root root 1970-02-05 09:10 fsg -> /dev/block/mmcblk0p22
rwxrwxrwx root root 1970-02-05 09:10 hyp -> /dev/block/mmcblk0p10
rwxrwxrwx root root 1970-02-05 09:10 hypbak -> /dev/block/mmcblk0p11
rwxrwxrwx root root 1970-02-05 09:10 keystore -> /dev/block/mmcblk0p27
rwxrwxrwx root root 1970-02-05 09:10 misc -> /dev/block/mmcblk0p14
rwxrwxrwx root root 1970-02-05 09:10 modem -> /dev/block/mmcblk0p1
rwxrwxrwx root root 1970-02-05 09:10 modemst1 -> /dev/block/mmcblk0p12
rwxrwxrwx root root 1970-02-05 09:10 modemst2 -> /dev/block/mmcblk0p13
rwxrwxrwx root root 1970-02-05 09:10 oem -> /dev/block/mmcblk0p29
rwxrwxrwx root root 1970-02-05 09:10 panic -> /dev/block/mmcblk0p18
rwxrwxrwx root root 1970-02-05 09:10 params -> /dev/block/mmcblk0p17
rwxrwxrwx root root 1970-02-05 09:10 persist -> /dev/block/mmcblk0p25
rwxrwxrwx root root 1970-02-05 09:10 recovery -> /dev/block/mmcblk0p24
rwxrwxrwx root root 1970-02-05 09:10 rpm -> /dev/block/mmcblk0p6
rwxrwxrwx root root 1970-02-05 09:10 rpmbak -> /dev/block/mmcblk0p7
rwxrwxrwx root root 1970-02-05 09:10 sbl1 -> /dev/block/mmcblk0p4
rwxrwxrwx root root 1970-02-05 09:10 sbl1bak -> /dev/block/mmcblk0p5
rwxrwxrwx root root 1970-02-05 09:10 sec -> /dev/block/mmcblk0p23
rwxrwxrwx root root 1970-02-05 09:10 ssd -> /dev/block/mmcblk0p16
rwxrwxrwx root root 1970-02-05 09:10 system -> /dev/block/mmcblk0p31
rwxrwxrwx root root 1970-02-05 09:10 tz -> /dev/block/mmcblk0p8
rwxrwxrwx root root 1970-02-05 09:10 tzbak -> /dev/block/mmcblk0p9
rwxrwxrwx root root 1970-02-05 09:10 userdata -> /dev/block/mmcblk0p32
这个时候可以用dd命令读取分区和对应的磁盘了。
2.使用dd命令读取磁盘
比如我想读取system分区的磁盘,则dd命令格式如下:dd if= /dev/block/mmcblk0p31 of=/dev/system.bin
其中if表示输入文件,of表示输出文件
3.dd的参数表基本如下:
语法:dd [选项]
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。
conv = ASCII 把EBCDIC码转换为ASCIl码。
conv = ebcdic 把ASCIl码转换为EBCDIC码。
conv = ibm 把ASCIl码转换为alternate EBCDIC码。
conv = block 把变动位转换成固定字符。
conv = ublock 把固定位转换成变动位。
conv = ucase 把字母由小写转换为大写。
conv = lcase 把字母由大写转换为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。