我看了一下diskrw,确实没有提供保存连续字节的功能,通常用到的dd for windows确实不支持将bs设置为1个字节,而linux下的dd是支持的。我从MingW中rip出来一个dd.exe,是支持bs=1的操作的,可惜,它又不支持直接在win下访问物理磁盘。所以,我们可以绕个弯子,先用dd for win(假设名为ddwin.exe)或diskrw将0扇区保存成一个文件,再用MingW的dd(名为ddmsys)取这个文件的前446字节即可。命令如下:
看了一下dd for win的源程序,发现程序中并没有限制bs=1的情况,原来这个错误提示是使用微软的系统API时出现的,也就是说,在用dd for win直接读取磁盘时,bs必须是512或其整数倍,否则就会报错,这不是dd for win的缺陷,而是windows的缺陷。因此,只要先用dd for win读出一个扇区并保存成文件,然后再用ddwin读这个文件的前446字节即可。如下: