xkai 找这个硬盘逻辑锁好几年了,也根据网上的教程做了一些逻辑锁,但效果都不理想——分区表丢了,但还能用其他介质引导到MS-DOS下,并不是那么狠。昨天无意间看到b站这个视频,看效果挺不错,就试着做了一个,测试很满意,步骤也不复杂,但中间那步生成加密盘颇费周折,在群里问了半天,自己试了半天才搞定(主要目的是测试WinMe的MS-DOS8.0会不会被锁住,因为这东西流行的时候用的大多是Win95,最多Win98第一版) 测这东西最好用86Box,因为普通的软盘镜像是做不了加密盘的,只会提示磁盘格式出错或磁盘读取出错,必须使用86Box专有的86f格式镜像! 由于86Box支持vhd磁盘,分区格式化就省了好多麻烦。具体过程: 用86Box新建一台配置稍微好一些的机器,设置好硬盘软盘显卡内存等参数 用磁盘管理创建一个vhd,大小几百M就行,几十G也可以,初始化为MBR磁盘,并做好分区格式化,FAT16/32文件系统均可,只分一个区也无所谓。把MK300V4和KV300L++拷到虚拟磁盘上 把86Box的虚拟机硬盘设置为准备好的vhd,引导到任意一种DOS系统下(需正常识别硬盘各分区并带Format程序) 在86Box中创建一个1.44M的86f格式软盘镜像并加载到软驱,然后格式化一下(关键!不格式化直接做加密磁盘会出错) 用MK300V4 把这个软盘镜像做成KV300加密磁盘(MK300V4 a:即可),然后运行KV300L++(这玩意要读取加密磁盘的特殊磁道,所以没有加密磁盘是运行不了的) KV300L++碰到MK300V4做的加密磁盘就会爆发逻辑锁,当然程序本身也运行不出来,直接死掉。等个10几秒钟就可以重启测试逻辑锁了。测试结果是MS-DOS全系阵亡,引导时加载完io.sys后硬盘灯长亮,机器锁死,WinMe启动盘(已将io.sys替换为311561补丁中修复的版本)、XP SP3-NT6.3做的最新版MS-DOS启动盘(文件日期05/4/18)、cn-dos的MS-DOS 7.10启动盘都挂了;PC-DOS、FreeDOS等第三方DOS啥问题没有;NT系安装盘引导正常,磁盘显示为未分区;磁盘管理挂载上了逻辑锁的vhd无法显示分区也无法对磁盘进行操作 倒数第二图是MS-DOS 8.0的启动盘引导中招的情况
xkai 出现此问题的原因是MS-DOS的io.sys有点一根筋,检测到有硬盘就非得把硬盘分区表读完检测通过后才继续启动,遇到分区表读到一半读不出来就死翘翘了。硬盘逻辑锁就是把某个分区的结束地址跟开始地址设成一样的,这样io.sys读完这个分区时,读下一个分区又读到这个分区开头,变成了死循环。第三方的DOS早在93年左右就修了这个bug,也警告过微软,但微软没理睬,一直不修,311561修的只是硬盘中断处理方面的一些bug
xkai 说一下修复这问题的方法: 用PE启动(PE里不能夹带任何DOS工具箱,因为这些主流的DOS工具箱大多是MS-DOS 7.1或8.0的内核),打开傲梅分区助手,运行分区恢复向导,用快速搜索模式很快就能找到丢失的分区。效果比dg好太多,dg完整搜索一遍啥都没找到 看,WinMe启动盘已经正常启动了,硬盘数据完好无损 现在挂载vhd,也能正常访问了 顺带提一下,当年主流的方法是用16进制编辑器修改MS-DOS的io.sys里的第一个主引导记录结束标志55 AA为其他任意数值(MS-DOS 8.0的io.sys是压缩过的,可用io8dcomp将其解压后再修改,反正解压后的io.sys也就比原来大了160KB左右,启动盘上完全放的下),这样这个MS-DOS就可以带着上了逻辑锁的硬盘正常启动了。这方法实际上非常不推荐,因为这样修改后的MS-DOS是不能识别正常硬盘的,fdisk能正确识别分区容量,但系统显示为未知,也是十分不正常的,相当于让MS-DOS完全忽略硬盘的存在!如果硬要在DOS下手工修改分区表,真不如用第三方厂商的DOS 看下面对比图,这是VM上一个分了一个主分区和一个逻辑分区(大小均为8G)的硬盘 这是正常情况 这是同一个硬盘用修改过的io.sys引导的情况