无忧启动论坛

标题: 请问在windows下有没有工具可以只备份第一扇区的前446字节? [打印本页]

作者: th1nk    时间: 2010-1-26 08:26
标题: 请问在windows下有没有工具可以只备份第一扇区的前446字节?
我只想要第一扇区的前446字节,因为我不想破坏分区表信息,在linux下用dd可以但是不可能每次都用linux来备份吧,dd for windows只能备份512字节 请问有没有不破坏分区表但能备份恢复引导信息(446字)的工具?谢谢!
作者: lianjiang    时间: 2010-1-26 08:47
diskrw应可以,到dos联盟去找。

4、扇区内部处理命令(只处理单个扇区)
      如果Bytes输入0或者输入数据较大(超出扇区边界),则程序处理从Offset开始到扇区结束的字节数

     例子:
      Diskrw 0 0 446 /b 64 mbr.dat 备份第一硬盘(磁盘0)第一扇区(0扇区)中偏移位置446开始 的64个字节到文件 mbr.dat。(这里备份的就是磁盘MBR中的分区表信息)
作者: jianliulin    时间: 2010-1-26 09:16
原帖由 th1nk 于 2010-1-26 08:26 发表
我只想要第一扇区的前446字节,因为我不想破坏分区表信息,在linux下用dd可以但是不可能每次都用linux来备份吧,dd for windows只能备份512字节 请问有没有不破坏分区表但能备份恢复引导信息(446字)的工具?谢谢!



要这个功能有什么特别的用法吗,如果需要ps我给你写个程序

[ 本帖最后由 jianliulin 于 2010-1-26 09:18 编辑 ]
作者: yyjdelete    时间: 2010-1-26 09:17
可以用winhex拖选前446字节备份
作者: th1nk    时间: 2010-1-26 09:34
原帖由 lianjiang 于 2010-1-26 08:47 发表
diskrw应可以,到dos联盟去找。

4、扇区内部处理命令(只处理单个扇区)
      如果Bytes输入0或者输入数据较大(超出扇区边界),则程序处理从Offset开始到扇区结束的字节数

     例子:
      Diskrw 0 ...


报错:Parameter Error!

命令为: diskrw 0 0 1 /b 446 mbr.dat

搞笑得是,他提供的: diskrw 0 0 446 /b 66 mbr.dat 提示一样得错误!
作者: th1nk    时间: 2010-1-26 09:36
原帖由 jianliulin 于 2010-1-26 09:16 发表



要这个功能有什么特别的用法吗,如果需要ps我给你写个程序




如果能专门给我写个程序更好!没什么特别用法,我只想要引导信息,用来修复一键恢复,但是现在软件只能备份512字节,已经包含了分区信息,所以我只想要446字节,便不会破坏分区信息了
作者: jianliulin    时间: 2010-1-26 09:40
原帖由 th1nk 于 2010-1-26 09:36 发表




如果能专门给我写个程序更好!没什么特别用法,我只想要引导信息,用来修复一键恢复,但是现在软件只能备份512字节,已经包含了分区信息,所以我只想要446字节,便不会破坏分区信息了


你要的是dos的程序吗?我不会写dos的程序,只会写windows的
作者: th1nk    时间: 2010-1-26 09:44
原帖由 jianliulin 于 2010-1-26 09:40 发表


你要的是dos的程序吗?我不会写dos的程序,只会写windows的



WINDOWS就行,PE能用就行。谢谢大大!
作者: yjd    时间: 2010-1-26 09:50
我觉得4楼说的winhex就很好用啦。
作者: th1nk    时间: 2010-1-26 10:22
请问怎么用winhex来备份?本人菜鸟,望各位指点指点!
作者: Climbing    时间: 2010-1-26 11:06
winhex似乎不支持命令行方式操作,它是一个图形界面的磁盘编辑工具,理论上,你可以编辑硬盘上的任意一个字节,当然,也可以随意复制保存任何连续的字节。

我看了一下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字节即可。命令如下:

ddwin count=1 if=\\?\Device\Harddisk0\DR0 of=mbr.dat

diskrw 0 0 1 /s mbr.dat

然后:
ddmsys bs=1 count=446 if=mbr.dat of=mbr446.dat

附件中有所有需要的命令行程序。

dd-win.rar

463.45 KB, 下载次数: 83, 下载积分: 无忧币 -2


作者: lianjiang    时间: 2010-1-26 11:26
原帖由 th1nk 于 2010-1-26 09:34 发表


报错:Parameter Error!

命令为: diskrw 0 0 1 /b 446 mbr.dat

搞笑得是,他提供的: diskrw 0 0 446 /b 66 mbr.dat 提示一样得错误!



再次看了原帖的说明,那部分是在for dos部分的,而不是 在for win的说明部分。
因此到dos下试了一下,该命令可以执行。
看来win版与dos版的功能有差别。

2008.11.1
Diskrw for DOS
与原来版本改变

1、增加参数 Offset
4、扇区内部处理命令(只处理单个扇区)
作者: Climbing    时间: 2010-1-26 11:50
看了一下dd for win的源程序,发现程序中并没有限制bs=1的情况,原来这个错误提示是使用微软的系统API时出现的,也就是说,在用dd for win直接读取磁盘时,bs必须是512或其整数倍,否则就会报错,这不是dd for win的缺陷,而是windows的缺陷。因此,只要先用dd for win读出一个扇区并保存成文件,然后再用ddwin读这个文件的前446字节即可。如下:


  1. ddwin count=1 if=\\?\Device\Harddisk0\DR0 of=mbr.dat
  2. ddwin bs=446 count=1 if=mbr.dat of=mbr446.dat
复制代码

作者: chenall    时间: 2010-1-26 12:00
如果使用GRUB4DOS作引导的话,备份恢复都很简单。

使用dd命令就OK了。
作者: th1nk    时间: 2010-1-26 12:44
非常感谢楼上各位大大们的热心恢复.收益非浅,我马上测试楼上所说的方法,无忧就是好啊,高手不但多,重要的是难得有热情指导菜鸟!万分感谢!
作者: th1nk    时间: 2010-1-26 14:37
经过测试Climbing 大大的方法,成功备份了446字节。非常感谢!
作者: th1nk    时间: 2010-1-27 09:47
新问题来了,恢复MBR前446字节的时候,报错,肯定又是WINDOWS只支持512字节的缘故,请问有没有办法恢复前446字节呢?

命令如下,ddwin  count=1 if=mbr446.bin of=\\?\Device\Harddisk0\DR0 报错
作者: Climbing    时间: 2010-1-27 10:43
标题: 回复 #17 th1nk 的帖子
确实如此。解决办法:


  1. ddwin count=1 if=\\?\Device\Harddisk0\DR0 of=mbr.dat
  2. ddwin bs=446 count=1 if=mbr446.bin of=mbr.dat
  3. ddwin count=1 if=mbr.dat of=\\?\Device\Harddisk0\DR0
复制代码

作者: th1nk    时间: 2010-1-27 11:27
原帖由 Climbing 于 2010-1-27 10:43 发表
确实如此。解决办法:


ddwin count=1 if=\\?\Device\Harddisk0\DR0 of=mbr.dat
ddwin bs=446 count=1 if=mbr446.bin of=mbr.dat
ddwin count=1 if=mbr.dat of=\\?\Device\Harddisk0\DR0



谢谢climbing大大的回复,你说的这种方法,我导入回去之后整个分区表都被破坏了。算了,看来WINDOWS下是没希望了。谢谢各位热情的回复。



另想咨询下,如下thinkpad 用于修复一件恢复的boogmgr.bin里面的引导信息部分是否存在于前446字节?

bootmgr.rar

1.96 KB, 下载次数: 26, 下载积分: 无忧币 -2


作者: laozhao    时间: 2010-1-27 14:10
把当前的硬盘512字节mbr先读出来,前面的446字节用你备份的内容覆盖掉,再写回去不就行了?
作者: laozhao    时间: 2010-1-27 14:12
或者说,把当前读出来的512字节mbr中取最后66个字节,加在前面备份的446字节之后,形成一个完整的扇区,再写回去。
作者: th1nk    时间: 2010-1-27 15:08
谢谢楼上的,真是一语惊醒梦中人啊!
作者: Climbing    时间: 2010-1-27 16:51
标题: 回复 #19 th1nk 的帖子
我在18楼给出的命令就是先读出当前硬盘的MBR,然后用你的446字节替换掉,然后再写回硬盘,这样不会破坏掉你的分区表啊,是你自己没有仔细看吧
作者: 2011lionbaby    时间: 2011-4-25 23:30
标题: fdisk/mbr试试看。
fdisk/mbr   这个命令网上查查看。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3