c语言编程读取主导扇区

c语言编程读取主导扇区

ID:14319778

大小:438.50 KB

页数:7页

时间:2018-07-27

c语言编程读取主导扇区_第1页
c语言编程读取主导扇区_第2页
c语言编程读取主导扇区_第3页
c语言编程读取主导扇区_第4页
c语言编程读取主导扇区_第5页
资源描述:

《c语言编程读取主导扇区》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、备份硬盘主引导扇区程序[首页][目录]用FDISK对硬盘进行分区时,它在硬盘的0面0道1扇区生成一个包含分区信息表、主引导程序的主引导记录,其作用是当系统加电或复位时,若从硬盘自举,ROMBIOS就会把硬盘该扇区的内容读到内存的0000:7C00处,并执行主引导程序,把活动分区的操作系统引导到内存。目前,计算机病毒已逾千种,它们以各种方式威胁着计算机用户,其中有一类计算机病毒专门攻击计算机硬盘的主引导记录。如果在计算机无病毒污染时,把主引导记录读出来,写入一个数据文件,保存起来,一旦计算机受到这类病毒的侵袭,就可以用以前保存的主引导记录覆盖0面0道1扇区,消除病

2、毒,这不失为一种有效的防病毒手段。二、程序设计TURBOC可以方便地调用汇编子程序,也可以用inline语句直接嵌入机器码,其函数及过程完备,代码质量高。作者用TURBOC做为编程语言,编写了备份硬盘主引导扇区程序,它既可以将硬盘的主引导记录写到文件中,又可以将文件的主引导记录备份写到硬盘的0面0道1扇区。该程序设计的关键点是:如何读写硬盘的主引导记录,我们可以使用BIOS磁盘读写中断13H来完成这项功能,在该程序中由ProcessPhysicalSector()来完成,它利用了C语言的inline汇编功能,直接将汇编语句嵌入C程序,它可以根据所给参数的不同,执

3、行读/写磁盘指定扇区的功能,这是一个通用函数,可以移植到其它程序中使用。三、程序的使用方法在DOS系统提示符下执行:HMR 

4、/W>当取“/R”开关时,HMR执行读硬盘主引导记录的功能,可把硬盘上的主引导记录写到MRECORD.SAV的文件中;当取“/W”开关时,HMR执行写硬盘主引导记录的功能,可以根据提示把文件MRECORD.SAV中存储的内容写到硬盘的0面0柱1扇区。四、源程序清单/********************************************************//*程序名称:HMR.C1.50*//*作者:董占山*/

5、/*完成日期:1990,1995*//*用途:读/写硬盘的主引导记录*//*编译方法:用下列命令编译连接可以得到HMR.COM:*//*tcc-mthmr*//*tlinkc:tclibc0t+hmr,hmr,,c:tclibcslib/t*//********************************************************/#include#includechar*MBRF="C:\MRECORD.SAV";charmp[512];inti;FILE*f1;/*执行读写指定磁

6、盘物理扇区的信息*/voidProcessPhysicalSector(OperateType,DriveType,HeadNo,StartCyl,StartSec,SectorNumber,p)unsignedcharOperateType,DriveType,HeadNo,StartCyl,StartSec,SectorNumber;char*p;{asmpushesasmpushdsasmpopesasmmovbx,p/*缓冲区地址*/asmmovch,StartCyl/*开始柱体数*/asmmovcl,StartSec/*开始扇区数*/asmmovdh,

7、HeadNo/*头数*/asmmovdl,DriveType/*驱动器号,0=A,1=B,80=C,81=D*/asmmovah,OperateType/*操作类型*/asmmoval,SectorNumber/*扇区数*/asmint0x13asmpopes};/*回答是否的函数*/intYesNo(s)char*s;{charc;printf("%s(Y/N)?",s);do{c=getchar();c=toupper(c);}while((c!='Y')&&(c!='N'));if(c=='Y')return1;elsereturn0;}/*显示程序的使用

8、方法*/voidhelp(){printf("%s%s%s%s","Usage:Read/Writedatathemainbootrecordoftheharddisk","Syntex:HMR","/R---readthemainbootrecordandwritetofile'C:MRECORD.SAV'","/W---readfile'C:MRECORD.SAV'andwritethemainbootrecordtoharddisk");exit(0);}/*读取硬盘的主引导记录,并将它写入文件*/voidread

9、hmr(){if(Yes

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。