Men like wind
驱动牛犊
驱动牛犊
  • 注册日期2003-03-07
  • 最后登录2010-06-24
  • 粉丝0
  • 关注0
  • 积分280分
  • 威望29点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:2361回复:1

自己动手备份主引导区

楼主#
更多 发布于:2003-05-03 19:28
自己动手备份主引导区
风般的男人

主引导扇区,也就是们常说的MBR(MASTER BOOT SECTOR),硬盘的第一个扇区,
位于硬盘的0柱0面1扇,是PC机在系统引导时最先读取的扇区,这个扇包含了两个部
分,一小段装入程序和一个硬盘分区表,其中装入程序的作用是用来将可启动的操作
系统分区的第一个扇区(记住:是操作系统的第一个扇区,不是硬盘的第一个扇区!)
,也就是我们常说的引导区(很多人分不清引导区和主引导区的不同),装入内存,
并将控制权交给引导程序,从而实现操作系统的引导。装入程序一旦被病毒或恶意程序
破坏,硬盘将不能用于引导。硬盘分区表大家可能比较熟悉,其中是硬盘的分区信息,
一旦遭到破坏,其后果是硬盘找不到分区,硬盘数据丢失。可见MBR区是多么的重要,正
因为它的重要,才有许多病毒或是恶意代码才把苗头指向了它,一不留神,你可能就要
和你的数据说“886”了,如果你的硬盘有重要数据的话,你可能可以通过重建分区的办
法找回一些或是全部的文件,记得几年前,我们单位的一台机器被CIH感染并发作了,我
花了一整天的时间才将分区表重建好,我当时在就在想,要是我早备份了主引导区就好,
于是我就动手写了两个小程序,用于备份硬盘的主引导区,在这我加上详细的注释把源
程序贴了出来,给大家看看,有兴趣的朋友可以自己编译、链接,之后你就可以用来备
份你的分区表了,记住有备无患、防范未然啊!
其中MBR1.ASM通过编译、链接后生成MBR1.EXE,用来将主引导区备份到软区。MBR2.ASM
编译、链接后生成MBR2.EXE,万一主引导区遭到破坏,用于将MBR1.EXE备份的主引导区写回
硬盘。
MBR1.ASM的源程序如下:
;MBR1.ASM
;本程序用于备份硬盘的主引导区
DATA SEGMENT
D1 DB \"本程序用于将硬盘的主引导区备份到A:\\BOOT.DAT中。\",0dh,0ah
db \" 作者:风般的男人\",0dh,0ah
db \" E-MAIL:tyhhyf@hotmail.com\",0dh,0ah
db \" OICQ:86633320\",0dh,0ah,\"$\"
D2 DB \'A:\\BOOT.DAT\',00H
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOVAH,09H
MOVDX,OFFSET D1
INT21H ;显示字符串D1
MOVAX,0201H
MOVBX,0700H
MOVCX,0001H
MOVDX,0080H
INT13H ;读MBR区到内存
MOVCX,0020H
MOVDX, OFFSET D2
MOVAH,3CH
INT21H ;建立文件A:\\BOOT.DAT
MOVAL,01H
MOVDX, OFFSET D2
MOVAH,3DH
INT21H ;打开文件A:\\BOOT.DAT(用于写)
MOVBX,AX
MOVDX,0700H
MOVCX,0200H
MOVAH,40H
INT21H ;将内存中的MBR区写入文件中
MOV AH,4CH
INT 21H ;退出程序
CODE ENDS
END START


MBR2.ASM的源程序如下:

;MBR2.ASM
;本程序用于将MBR1.EXE程序在本机硬盘备份的主引导区恢复到本机硬盘的主引导区
DATA SEGMENT
d1 db \" #主引导区安装程序#\",0dh,0ah
db \" 作者:风般的男人\",0dh,0ah
db \" E-MAIL:tyhhyf@hotmail.com\",0dh,0ah
db \" OICQ:86633320\"0dh,0ah,\"$\"
d2 db \" !!!警告!!!\",0dh,0ah
db \" 本程序仅用于将MBR1.EXE程序在本机硬盘备份的主引导区A:\\BOOT.DAT\"
db \"文件(该文件必须在A盘根目录上)恢复到本机硬盘的主引导区,否则硬盘分区\"
db \"会丢失,不听警告,后果自负!\"0dh,0ah
db \" 确认要执行么?(Y/N)\",0dh,0ah,\"$\"
d3 db \" A:\\BOOT.DAT文件没找到!\",0dh,0ah,\"$\"
d4 db \"A:\\BOOT.DAT\",00H
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:

MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOVAH,09H
MOVDX,OFFSET D1
INT21H ;显示字符串d1
MOVAH,00H
INT16H ;等待用户按任意键键继续
MOVAH,07H
MOVAL,00H
MOVBH,0A4h
MOVCX,0000H
MOVDX,184FH
INT10H ;设置显示方式(背景绿,前景红)
MOVAH,09H
MOVDX,OFFSET D2
INT21H ;显示字符串d2(因为此程序有一定的危险性,所以
;警告一定要显眼)
READ_KEYBOARD:
MOVAH,00H
INT16H
ORAL,20H
CMPAL,79H
JZWRITE ;是Y/y的话就跳转到写MBR区处
CMPAL,6EH
JZEXIT ;是N/n的话跳转到退出处
JMPREAD_KEYBOARD ;是其他键就重新读键

EXIT:
MOVAH,07H
MOVAL,00H
MOVBH,07H
MOVCX,0000H
MOVDX,184FH
INT10H ;清屏
MOVAH,4CH
INT21H ;退出程序

WRITE:
MOVAH,3DH
MOVDX,OFFSET D4;
MOVAL,00H
INT21H ;打开A:\\BOOT.DAT
JBERROR
PUSHAX
MOVAH,3FH
MOVDX,7000H
MOVCX,0200H
POPBX
INT21H ;将A:\\BOOT.DAT读入内存
MOVAH,03H
MOVAL,01H
MOVBX,7000H
MOVCX,0001H
MOVDX,0080H
INT13H ;写入硬盘MBR区
JMPEXIT ;跳转到退出程序处

ERROR:
MOVAH,09H
MOVDX,OFFSET D3 ;显示出错信息
INT21H
MOVAH,4CH
INT21H ;退出程序
CODE ENDS
END START

当然,你也可以用一些其他的工具对分区表进行操作,比如KV300,但是你要是和
我一样穷买不起正版又和我一样尊重知识产权的话,你就照我的去做吧:)
说到这,我的程序也介绍完了,程序本身并没有什么值得多说的地方,我要说的
是希望大家能提高安全意识,及时备份分区表,记住在你每次重新分区,或是用PQmagic
之类的软件对分区进行操作后都要将你的MBR区做个备份,以防不测。有兴趣的朋友可以
和我联系,我的E-mail和QQ在源程序中可以看到。

最新喜欢:

mukingmuking
awhorse
驱动小牛
驱动小牛
  • 注册日期2003-02-26
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-25 13:53
有意思,谢谢!!
宁为玉碎;不为瓦全
游客

返回顶部