KV300技术分析(有关硬盘锁)
注:此程序有一定的风险性。老妖也没有试过。希望大家考虑清楚了再行事。 要不是亲自试一下,你一定不会相信,运行下面的程序,你的机器将不能从软盘启动,更不能从硬盘启动。而这个程序仅仅修改了你的硬盘的扩展DOS分区的首隐藏扇区。
程序很短,你可以在DEBUG中输入并运行。在编译成.com 之后,运行之前请保存好硬盘的扩展DOS分区的首隐藏扇区的内容,以备将来恢复时用。 笔者是在编制一个硬盘加锁程序时,因计算有误而偶然发现这一点的。仅仅因为修改硬盘一个隐藏扇区,造成机器从软硬盘都不能启动,从未见资料提及。作者当时很惊讶。 为了解决问题,笔者按复位键,进入CMOS设置,将硬盘设置为未安装,则可以从软盘启动,但是,使用INT13h仍不能读写硬盘,因此无法将被破坏的扇区复原。 笔者估计是引导过程中,读取硬盘分区表时形成循环的缘故。理由有两点: 1、因为仅仅修改硬盘一个扇区,造成了如此现象,而该扇区仅记录了硬盘分区表的一些信息; 2、启动过程中,不管从软盘启动还是从硬盘启动,最终的现象都是硬盘灯第亮。因此,换用不支持硬盘分区的低版本DOS系统盘也许能够启动,使用2.0版的系统盘,果然可以在CMOS设置为硬盘正常安装的情况下启动机器,启动后虽仍不能进入硬盘,但可以用INT13h读写硬盘。在DEBUG中用正常的内容覆盖硬盘的扩展DOS分区的首隐藏扇,重新启动机器,成功。 为什么从软、硬盘启动都会造成读硬盘分区的死循环呢?笔者为此对硬盘分区表及DOS引导过程进行了分析,提出几点粗浅看法,供参考。 大家知道,硬盘分区表位于主引导扇区的1BEh与1FDh处,占64个字节,共4个分区项。 每个表项对应一个逻辑分区,每个表项占16个字节,其含义见表。 ===================================== 偏移量 含 义 ===================================== 0 引导标志(80h表示活动分区,00h表示非活动分区,其他值非法) 1 本分区的起始磁头号 2-3 本分区的起始扇区号和起始柱号 4 分区类型(1-DOS,12位FAT;2-XENIX;4-DOS,16位FAT,小于32M; 5-扩展DOS;6-DOS,16位FAT,大于32M;0DBh-并发DOS. 5 本分区的结束磁头号 6-7 本分区的结束扇区号和结束柱号 8-B 本分区的相对扇区号 C-F 本分区的扇区数 ===================================== 各逻辑分区首隐藏扇区与主引导扇区类似,在偏移1BEh到1DDh处,记录两个分区表项第一表项对应于本分区,第二表项则对应于下一分区,各字节含义同上。这样,各逻辑分区通过首隐藏扇区的分区信息表串起来形成了DOS硬盘分区的所谓链式结构,使得DOS能够管理多个逻辑分区。DOS引导时,不管是从软盘启动还是从硬盘启动,都将搜索这条链,以便为各逻辑盘建立磁盘基数表。 值得注意的是分区类型(偏移04h)中的扩展DOS分区是相对来说的,D盘相对于C是扩展DOS分区,但相对本身来说不是扩展的,因此在主引导扇区对应于D盘的分区表项中该字节为5,在D盘首隐藏扇区此处应为1、4或6。相应地,某表项若04h字节为5,则01-03h三字节就记录所对应分区的首隐藏扇区的物理地址,若04h字节为1、4或6(此时该表项必为第一表项),则01-03h字节记录所对应分区的DOS引导扇区。DOS搜索链表建立磁盘基数表的过程是这样的: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |