Board logo

标题: 硬盘的分区链表结构 [打印本页]

作者: ko20010214     时间: 2003-6-1 00:00    标题: 硬盘的分区链表结构

发信人: microbe (奇妙的微生物), 信区: DOS
标  题: 硬盘的分区链表结构
发信站: BBS 水木清华站 (Wed Sep 17 14:09:05 1997)

【 在 watch (乾坤一剑) 的大作中提到: 】
: 各个分区表是以琏表方式存放的。
: 且每一个分别在各自的分区的首善区?
: 可以用DEBUG命令先调出第一个,在利用本分区大小来算出下一个分区位置。
: 以此类推(虽麻繁乐点〕可以都查出来!!
: 我以前做过。
: 也可以用NORTON的DISKEDIT,。

  不用算。一个表项的标志字节如果是06(表示扩展分区)的话,它就含有指向
  下一分区表的指针。这些指针在硬盘上形成一个链表结构。

  以典型的只含有DOS主分区和扩展分区的硬盘为例,假设共有1000个柱面,第一
  分区(即逻辑C盘)为500个柱面,第一扩展分区(逻辑D盘)为200个柱面,
  第二扩展分区(逻辑E盘)为300个柱面,那么第一个分区表即在0柱0头1扇区
  的那个表有两个表项:第一个表项的标志是BIGDOS(05),当然是可引导的,指
  向C盘的引导区,在0柱1头1扇区;第二个表项的标志是扩展分区(06),指向500
  柱0头1扇区,即第二个分区表的地址。这个分区表也含有两个表项:第一个表项
  也是BIGDOS,指向500柱1头1扇区即D盘的引导区;第二个表项又是扩展分区,指
  向第三个分区表的地址,在700柱0头1扇区。这也就是最后一个分区表。在这个
  分区表里,只有一个表项,标志是BIGDOS,指向E盘的引导区,在700柱1头1扇区。

  总之,在只有DOS分区的情况下,如果硬盘有N个逻辑盘符,就有N个分区表与之对应。
  除了最后一个分区表外,都有两个表项。一个指向真正的逻辑盘的引导区(一般在
  此分区表的反面,即相同柱面的1头1扇区),一个指向下一个分区表。分区表总是
  位于0头1扇区,而具体逻辑盘的引导区位于1头1扇区。

  无论在硬软盘的启动方式下,DOS的IO.SYS中的一段程序都要搜索这个链表来建立
  逻辑驱动器。可以看到,如果这个链表出现问题,引导过程就有可能失败。比如,
  如果某个一个分区表不含有指向某个逻辑盘的引导区的表项,而只含有一个标志
  为扩展分区并指向自身的表项,那么DOS将永远查找不到正确的引导区,并无限循
  环下去。这就是KV300炸弹所利用的地方。


--
走过天涯路  终究还是回头
看尽花似海  如雪落


※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.38.72.18]

(本文采用S-Term文章拷贝脚本拷贝)
==================================================