继续上面的教程
http://bbs.sdbeta.com/read-htm-tid-436219.html本文基于mbr下的分区分析。
还是用教程里面的磁盘镜像。
用inspro加载。
在磁盘管理中如下图:
现在用winhex打开磁盘1,进行修改。
=========================================================
下面是历遍分区:
到这里是最后一个分区表项。
=======================================================
***************************************************************
现在修改第二个分区表项,修改成第一个扩展分区的参数
05 401625 401625
****************************************************************
保存
看看结果:
原理:加载磁盘的过程是找遍所有的分区,分区表项的最后一个扩展分区(1622565)只记录一个分区表,到这里,分区结束,现在通过修改把分区表写成了一个环,程序就不停的搜索分区,没玩没了。。。。。就4了。
找分区的过程:先通过0扇区的分区表找到0扇区记录的分区【最多3个】(在我的电脑显示的盘符例如CDE)和主扩展分区的开始(绿框框中的磁盘分区)。然后在扩展分区中分别找各个分区,直到没有扩展为止。
本例中,【1】先读取0扇区的第一个分区表项,这个表项记录一个分区。加载磁盘的扇区63-417689(共417627个扇区)为第一个分区假设盘符为C。
【2】然后读取0扇区的第二个分区表项,这记录一个扩展分区(位于417690扇区)。
【3】读取417690扇区的第一个分区表项,这个表项记录一个分区。加载磁盘的扇区417753-819314(共401562个扇区)为第二个分区假设盘符为D。
【4】然后读取417690扇区的第二个分区表项,这记录一个扩展分区(位于417690+401625=819315扇区)。
【5】读取819315扇区的第一个分区表项,这个表项记录一个分区。加载磁盘的扇区819378-1220939(共401562个扇区)为第二个分区假设盘符为E。
【6】然后读取819315扇区的第二个分区表项,这记录一个扩展分区(位于417690+803250=1220940扇区)。
【7】读取1220940扇区的第一个分区表项,这个表项记录一个分区。加载磁盘的扇区1221003-1622564(共401562个扇区)为第二个分区假设盘符为F。
【8】然后读取1220940扇区的第二个分区表项,这记录一个扩展分区(位于417690+1204875=1622565扇区)。
【9】读取1622565扇区的第一个分区表项,这个表项记录一个分区。加载磁盘的扇区1622628-2056319(共433692个扇区)为第二个分区假设盘符为G。
【10】然后读取1622565扇区的第二个分区表项,空,结束。
设置磁盘锁后【10】步从【4】开始循环执行。