无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6709|回复: 23
打印 上一主题 下一主题

请问在windows下有没有工具可以只备份第一扇区的前446字节?

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-26 08:26:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我只想要第一扇区的前446字节,因为我不想破坏分区表信息,在linux下用dd可以但是不可能每次都用linux来备份吧,dd for windows只能备份512字节 请问有没有不破坏分区表但能备份恢复引导信息(446字)的工具?谢谢!
2#
发表于 2010-1-26 08:47:00 | 只看该作者
diskrw应可以,到dos联盟去找。

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

     例子:
      Diskrw 0 0 446 /b 64 mbr.dat 备份第一硬盘(磁盘0)第一扇区(0扇区)中偏移位置446开始 的64个字节到文件 mbr.dat。(这里备份的就是磁盘MBR中的分区表信息)
回复

使用道具 举报

3#
发表于 2010-1-26 09:16:40 | 只看该作者
原帖由 th1nk 于 2010-1-26 08:26 发表
我只想要第一扇区的前446字节,因为我不想破坏分区表信息,在linux下用dd可以但是不可能每次都用linux来备份吧,dd for windows只能备份512字节 请问有没有不破坏分区表但能备份恢复引导信息(446字)的工具?谢谢!



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

[ 本帖最后由 jianliulin 于 2010-1-26 09:18 编辑 ]
回复

使用道具 举报

4#
发表于 2010-1-26 09:17:47 | 只看该作者
可以用winhex拖选前446字节备份
回复

使用道具 举报

5#
 楼主| 发表于 2010-1-26 09:34:21 | 只看该作者
原帖由 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 提示一样得错误!
回复

使用道具 举报

6#
 楼主| 发表于 2010-1-26 09:36:27 | 只看该作者
原帖由 jianliulin 于 2010-1-26 09:16 发表



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




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

使用道具 举报

7#
发表于 2010-1-26 09:40:00 | 只看该作者
原帖由 th1nk 于 2010-1-26 09:36 发表




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


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

使用道具 举报

8#
 楼主| 发表于 2010-1-26 09:44:26 | 只看该作者
原帖由 jianliulin 于 2010-1-26 09:40 发表


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



WINDOWS就行,PE能用就行。谢谢大大!
回复

使用道具 举报

9#
发表于 2010-1-26 09:50:28 | 只看该作者
我觉得4楼说的winhex就很好用啦。
回复

使用道具 举报

10#
 楼主| 发表于 2010-1-26 10:22:15 | 只看该作者
请问怎么用winhex来备份?本人菜鸟,望各位指点指点!
回复

使用道具 举报

11#
发表于 2010-1-26 11:06:16 | 只看该作者
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

回复

使用道具 举报

12#
发表于 2010-1-26 11:26:22 | 只看该作者
原帖由 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、扇区内部处理命令(只处理单个扇区)
回复

使用道具 举报

13#
发表于 2010-1-26 11:50:12 | 只看该作者
看了一下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
复制代码
回复

使用道具 举报

14#
发表于 2010-1-26 12:00:23 | 只看该作者
如果使用GRUB4DOS作引导的话,备份恢复都很简单。

使用dd命令就OK了。
回复

使用道具 举报

15#
 楼主| 发表于 2010-1-26 12:44:23 | 只看该作者
非常感谢楼上各位大大们的热心恢复.收益非浅,我马上测试楼上所说的方法,无忧就是好啊,高手不但多,重要的是难得有热情指导菜鸟!万分感谢!
回复

使用道具 举报

16#
 楼主| 发表于 2010-1-26 14:37:46 | 只看该作者
经过测试Climbing 大大的方法,成功备份了446字节。非常感谢!
回复

使用道具 举报

17#
 楼主| 发表于 2010-1-27 09:47:30 | 只看该作者
新问题来了,恢复MBR前446字节的时候,报错,肯定又是WINDOWS只支持512字节的缘故,请问有没有办法恢复前446字节呢?

命令如下,ddwin  count=1 if=mbr446.bin of=\\?\Device\Harddisk0\DR0 报错
回复

使用道具 举报

18#
发表于 2010-1-27 10:43:27 | 只看该作者

回复 #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
复制代码
回复

使用道具 举报

19#
 楼主| 发表于 2010-1-27 11:27:55 | 只看该作者
原帖由 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

回复

使用道具 举报

20#
发表于 2010-1-27 14:10:55 | 只看该作者
把当前的硬盘512字节mbr先读出来,前面的446字节用你备份的内容覆盖掉,再写回去不就行了?
回复

使用道具 举报

21#
发表于 2010-1-27 14:12:32 | 只看该作者
或者说,把当前读出来的512字节mbr中取最后66个字节,加在前面备份的446字节之后,形成一个完整的扇区,再写回去。
回复

使用道具 举报

22#
 楼主| 发表于 2010-1-27 15:08:31 | 只看该作者
谢谢楼上的,真是一语惊醒梦中人啊!
回复

使用道具 举报

23#
发表于 2010-1-27 16:51:38 | 只看该作者

回复 #19 th1nk 的帖子

我在18楼给出的命令就是先读出当前硬盘的MBR,然后用你的446字节替换掉,然后再写回硬盘,这样不会破坏掉你的分区表啊,是你自己没有仔细看吧
回复

使用道具 举报

24#
发表于 2011-4-25 23:30:10 | 只看该作者

fdisk/mbr试试看。

fdisk/mbr   这个命令网上查查看。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-7 23:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表