文档详情

实验无忧F10一键还原引导程序的注释文本及引导流程解释.doc

发布:2017-02-23约1.95万字共9页下载文档
文本预览下载声明
实验无忧F10一键还原引导程序的注释文本及引导流程解释—— 入门篇(原创首发) Lvyanan 2008年3月18日定稿于无忧论坛 通过对IBM一键还原引导程序的分析和整理,提炼了一个能实现其大多数功能的F10一键还原引导程序,本程序由原来占用三个扇区缩减为两个扇区,一键还原中文提示是阿文提供的点阵码,程序中有部分功能尚未完成,主要是一些出错处理等次要枝节方面的问题,无碍大雅,该程序在VPC虚拟机中运行通过。本人的目的是想通过发表这个引导程序的注释,使大家可以管窥到引导类程序和一键还原程序的一些工作原理,启发思维,以期创造出更好更完美的此类程序出来。在此要感谢阿文提供的IBM一键还原程序以及他改编的无忧一键还原中文提示点阵码。下面我将对有关引导的相关知识以及本引导程序的流程原理作出讲解,如有不正确的地方请网友们批评指正。 讲解前的一些预备知识 ? ? 本程序是作为引导程序放置在从硬盘主引导扇开始的连续两个扇区里,第一扇区是由硬盘主引导程序(MBR)、主引导扇分区表(DPT)以及扇区结束标志55、AA(由低址到高址)三部分构成。从0000:0600开始到0000:07BD是硬盘主引导程序的驻留空间,主引导扇分区表位于0000:07BE偏移开始的地方(见第一扇区在0000:0600处的映像块,从0000:07BE开始,每种颜色代表一个分区表项),每16个字节为一个分区表项,共四个分区表项,0000:07FE处的55、AA标志(由低址到高址)是引导扇的有效标志,少了它硬盘将不被BIOS和操作系统认可,会出现操作系统不认此硬盘的现象,因此这个标志还是很重要的,有时我们遇到硬盘不能被系统识别,就有可能是少了这个标志的缘故,用FDISK /MBR命令可以解决此问题。主引导扇后的第二个扇区的内容,是无忧F10一键还原显示字符的显示码区,由阿文提供的,我拿来就用,没研究过它的结构,对此有兴趣的朋友可以自己去分析。 ? ? 引导程序开始工作之前,先是由BIOS完成硬件系统自检并在基本内存最低的1K内存中填入最初始的BIOS中断向量表,紧接其后建立一个512字节的系统低址数据区,这两项都是BIOS为以后启动操作系统准备的非常重要的系统资源,共占用了0000:0600之前的1.5K内存空间,准备好这些数据结构后,BIOS开始为启动操作系统作准备,以硬盘启动为例,BIOS首先会把位于主引导扇的整个扇区的二进制映像,全部装入内存0000:7C00处,并检查硬盘主引导扇最后的55、AA(由低址到高址)标志,如具有该标志,就把控制权移交给装入到0000:7C00处的代码,也就是交由主引导程序来接着完成启动过程,这是BIOS启动的一个定式,此后就是主引导程序所要做的系统引导工作了。如果没有找到55、AA标志,BIOS会显示报错信息或去查找其它的启动设备。 本引导程序的具体流程解释 初始化段 ? ? 从7C00—7C09是段寄存器及堆栈初始化程序(此后段址不写出来了,默认就是0段),各段的段址赋0,为的是防备有的BIOS厂商并不使用0段作为默认段址,在此进行段址规范以及初始化; ? ? 7C0C—7C17是代码转移程序,把自身512字节代码从7C00转移到0600偏移处并继续执行,空出7C00内存空间是为了给以后装入分区引导程序腾出空间; ? ? 7C18—7C1D是实现代码段转移后,用一个RETF指令从7C1D远跳转到064A代码处继续执行,最终完成了代码段的转移,至此四个段寄存器均统一到0段上了。 装入第二扇区并进行合法性校验程序段? ? 由于BIOS程序只管装入主引导扇一个扇区,因此本引导程序必须装入自身要用到的另一个扇区,即将紧接主引导扇后的第二扇区(无忧F10一键还原显示字符的点阵码扇区)装入到内存0800处。 ? ? 064A—065E就是调用INT13将该扇区装入0800的程序段; ? ? 0660—0668是检查第二扇区最后两个字节是否有AA、55(由低址到高址)标志的程序段,这是用于识别无忧F10一键还原显示字符的显示码扇区的标志,此处对标志错误的情况未作处理,尚未考虑成熟(拟考虑出错转去直接启动正常分区的系统)。 ? ? 066A—0677是检查第二扇区字节和的程序段,这段是将第二扇区所有字节累加,丢弃进位位,仅保留尾数两个字节的计数值,该值若为0,则判断此扇区为原扇区,否则将作出错处理。由于没有对第二扇区进行字节和校0,所以此处对字节和错误未作处理,尚未考虑成熟(拟考虑出错转去直接启动正常分区的系统)。 ? ? 注:由于只是编来实验的,故此地并未对第二扇字节和做校0补偿,亦未对不合法情况作处理,所以那些条件转移均是转向下一指令的,若第二扇正常,则不影响程序性能,正式使用时最好将其校正。 显示按F10进入无忧恢复中文提示的程序段? ? 06
显示全部
相似文档