当前位置:编程学习 > 网站相关 >>

VisualC++信息安全编程(3)内联汇编实现主引导区备份与恢复

硬盘的第一个扇区被保留为主引导扇区,它位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。至于分区表,很多人都知道,以80H或00H为开始标志,以55AAH为结束标志,共64字节,位于本扇区的最末端。
 
 
 
= 硬盘主引导记录(MBR) + 硬盘分区表(DPT)
 
  用FDISK 进行硬盘分区时产生的, 它属于整个硬盘而不属于某个独立的DOS 分区, 是硬盘正确引导和使用的必要条件.
 
  物理位置:0柱面0磁头1扇区(Cylinder 0, Head 0, Sector 1)
 
  系统扇区(System Sectors):0C-0H-2S,0C-0H-63S, 共62 Sectors
 
  大小:512字节
 
  其中:MBR 446字节(0000--01BD),DPT 64字节(01BE--01FD),结束标志2字节(55 AA)
 
  功能:MBR通过检查DPT分区信息引导系统跳转至DBR
 
  详解: (DEBUG -A: MOV AX,0201 MOV BX,0200 MOV CX,0001 MOV DX,0080 INT 13)
 
  000H--08AH MBR启动程序(寻找开机分区)
 
  08BH--0D9H MBR启动字符串
 
  0DAH--1BCH 保留( "0 ")
 
  1BEH--1FDH 硬盘分区表
 
  1FEH--1FFH 结束标志(55AA)
 
 
 
 
 
 
 
C++内联汇编
 
在C++代码中插入__asm {}即可
 
主引导区备份如下
 
 
DATA SEGMENT 
        
         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 
          MOV   AH,09H                               
          MOV   DX,OFFSET D1                            
          INT   21H              ;显示字符串D1 
          MOV   AX,0201H                             
          MOV   BX,0700H                            
          MOV   CX,0001H                            
          MOV   DX,0080H                             
          INT   13H              ;读MBR区到内存                                    
          MOV   CX,0020H                             
          MOV   DX, OFFSET D2                          
          MOV   AH,3CH                             
          INT   21H              ;建立文件A:\BOOT.DAT                
          MOV   AL,01H                               
          MOV   DX, OFFSET D2                             
          MOV   AH,3DH                            
          INT   21H              ;打开文件A:\BOOT.DAT(用于写)             
          MOV   BX,AX                               
          MOV   DX,0700H                             
          MOV   CX,0200H                            
          MOV   AH,40H                            
          INT   21H              ;将内存中的MBR区写入文件中                
          MOV   AH,4CH 
          INT   21H              ;退出程序 
CODE ENDS 
     END START 
补充:综合编程 , 安全编程 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,