电脑开机,自检完成后,BIOS按照引导设备优先级查找可引导的设备,一旦找到就进入主引导程序,可是这个程序却是漏洞百出,这也是引导区极易遭毒的根源,以硬盘为例,流程如下:
- 主引导程序复位清零
- 设置相应的引导标志位
- 分区表完整吗?有引导分区吗?
检查位置:分区表的链式结构是否完整,是否存在80H标志(非引导分区此处为00H)
通过,进入下一步;不通过,报错“磁盘引导失败,请插入系统盘”
- 分区表中的引导分区有且只有一个?
检查位置:分区表中的引导分区标志有且只能有一个80H,如果有多个引导分区,报错“无效的分区表”
- 读出引导分区中的第一扇区内容作为引导程序
读出,进入下一步;连续5次读不出,报错“加载操作系统错误”
- 把第5步读出的内容加载到内存7C00H处
这个地址是第一代IBM PC设置的,后续PC一直沿用
- 检查第一扇区的引导签名是否正常
检查位置:第一扇区最后两个字节是不是55AAH
这两个字节转换成二进制为01010101 10101010,通过交错的1和0作为引导签名,也是当时的设计
通过,进入下一步;不通过,报错“操作系统丢失”
- 执行第6步加载到内存中的程序
用FDISK分区时,设置活动分区后就有了DOS的引导程序,因为在未格式化状态下从硬盘启动提示的是操作系统丢失(加载操作系统错误这个提示很难见到);引导签名则在格式化引导分区后产生
注意在整个流程中,主引导程序并不会检查第一扇区内容是不是安全有效的引导程序,即使第一扇区里面是恶意代码,只要通过上述流程的检查一样会放行,这就给了恶意代码可乘之机,这样的检查放在今天根本就是不合格的