滴水逆向联盟

标题: VisualC++信息安全编程(3)内联汇编实现主引导区备份与恢复 [打印本页]

作者: 大灰狼    时间: 2014-7-7 08:23
标题: 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 {}即可

主引导区备份如下

[cpp] view plaincopy




主引导区恢复如下

[cpp] view plaincopy









欢迎光临 滴水逆向联盟 (http://dtdebug.com/) Powered by Discuz! X3.2