ImgDrive的一个重大隐患
ImgDrive在读取.DDI文件内容时,如果读到一组标志字节全为00,则此后的标志字节均不予理睬。亦即一张磁盘中,如果有一个磁道内容全为0xf6,则其后的所有磁道所记录的内容均将被ImgDrive忽略,虽然它们仍完好无损地保存在.DDI文件中。
大家可以来做个试验。用DOS的Format/u/f:1440格式化一张1.44M小盘,格式化完毕后,应该是每磁道18个扇区,每簇1个扇区,每个FAT表占9个扇区,根目录Root区占14个扇区,数据区从0道1面16扇区开始。用DiskEdit查看该盘,按Alt+P选择从0道1面16扇区开始的21个物理扇区,再按Alt+W写到一个文件中,比如C:21S。退出DiskEdit。将刚才的文件拷入小盘,再在小盘上随便建立一个文件,或是再拷上一个文件,如PC.EXE。删除第一个文件。这样,1道0面就成了只包含0xf6的空磁道,而从1道1面开始的簇存放着PC.EXE的内容。用DiskDupe将该盘映象成.DDI文件,文件头部从0x64偏移处的标志字节应为:
01 01 00 00 00 01
01 02 00 00 00 01
00 00 00 00 00 00
01 03 00 00 00 01
……
再用ImgDrive读取.DDI文件,你就会发现,文件PC.EXE的内容竟然是空的!(全为0x00)
有鉴于此,建议大家在使用ImgDrive读取*.DDI文件之前,先用工具软件查看一下.DDI文件的磁道标志字节,若有此类情况发生,最好用DiskDupe复制到软盘上,用Defrag或是Compress整理一下软盘,再制成.DDI文件以备使用。