风般的男人 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 |