现在的位置: 首页 > 综合 > 正文

自己动手备份主引导区-风般的男人 cvc/GB

2018年06月10日 ⁄ 综合 ⁄ 共 4371字 ⁄ 字号 评论关闭
风般的男人  cvc/GB

 

希望此文对新手有所帮助! 

主引导扇区,也就是们常说的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在源程序中可以看到。
   该文曾在<<黑客X档案>>上发表,作者:风般的男人 如有转载请保持文章完整,并请注明出自http://lsky.net/cgi-bin/lskybbs/leoboard.cgi

 

抱歉!评论已关闭.