我去年曾发过一个帖子那位有办法能在DOS中让隐藏分区可见吗?,里面提到了两个思路:
第一种思路:在系统恢复盘的引导扇区中加入一段程序,它驻留内存后接管Int13H,凡是对备份分区的ID的读取(1BH),均返回0BH即可见分区。后来的DOS启动后,此分区自然可见了。这是类似引导型病毒的做法。
第二种思路:在系统恢复盘的DOS启动后,由一个程序查找隐藏的备份分区,并将它作为一个正常的FAT32分区添加到DOS的设备链上,并赋以相应的盘符。这是类似NTFS4DOS的做法。
希望有人能够利用这个思路做点工具出来,可是很久还是没有见到,我自己也懒得理了,开始用批处理来查找分区供GHOST调用。
今年又看到这个帖子,终于不想偷懒,由于我对DOS的细节还是不清楚,就写个引导程序来做了。终于有了结果,在Bochs-2.1.1和VM里测试通过,能够欺骗DOS在启动后为1B和1C格式的隐藏分区分配盘符。在这里拿出来希望朋友们能够帮忙用多余的真实硬盘测试一下。(特别提醒,我保证程序中没有写MBR的代码,可是难保一切意外的发生,最好用没保存重要数据的真实硬盘来做!)
下载地址:
已经改成8月23日编译的了,见附件。
测试方法:
解压下载的ZIP文件,准备一个启动盘镜像文件。
运行解压目录里的镜像修改程序,格式
MAKEIMG <原镜像文件> <新镜像文件>
生成的新镜像文件即可在虚拟机中测试,如要在真实机器里测试可写入软盘或用VFLOPPY等软件来做。
VMware截图:



下面是编程的记录:
这是一个用来引导我的系统备份/恢复光盘的启动软盘的程序,将会放在软盘的第一个扇区内。此程序引导系统时,出现一个提示,用户可选择按任意键启动工具软盘,也可以在等待8秒后引导硬盘上的操作系统。在选择由工具软盘启动DOS后,在MBR中隐藏的FAT32主分区(0B/0C)将会分配盘符变得可见,这就可以用常规工具来做备份了——备份在隐藏分区里,看谁能删得掉!
最后版本:2005/7/23 2005/6/29
后记:
6月29日的版本只处理了传统INT13的2号功能,所以在虚拟机中的小硬盘(1B-FAT32)中调试正常,一到了用LBA方式读取的分区(1C-FAT32LBA,1E-FAT16LBA)就完了。可是现在的硬盘已经没有8GB以下的了,读取也几乎全是用LBA方式了。
7月23日:
加入对扩展INT3读取(42号)功能的接管,实现对隐藏LBA分区的读取,由于现在硬盘分区几乎没有用FAT16的了,所以只处理了FAT32的。
由于新代码的加入,我原来的提示信息也不得已剪了一部分。
【目前最新版本】
HFBOOT.ASM还是9月1日的,MAKEIMG.EXE在9月5日新增选项后编译
新的命令行如下:
MAKEIMG 源镜像文件名
源镜像文件名 用来制作显隐藏分区功能的软盘镜像文件
目的镜像文件名 将要生成的带显隐藏分区功能的软盘镜像文件,可省略,默认值为YISIR.IMG
可选参数:
/f 生成的程序在计算机启动时直接从软盘启动。
/b 生成的程序在计算机启动时直接激活隐藏分区并启动。(注意隐藏分区中必须已安装了操作系统,此功能也未写MBR)
无 /f 和 /b 参数时将出现提示并等待8秒,这期间按任意键从软盘启动,否则从硬盘启动且不加载显隐藏分区功能。
/k:n n=1-4,6-12。设置直接激活隐藏分区并启动时用的按键,可以是F1-F4、F6-F12
/p:nn=0 - 255 ,自定义构成进度条的字符,默认是62即“>”,象219(实心方块)、220、223也挺好看
/r:nn=1 - 24 ,自定义提示信息的在屏幕中的开始行,默认是21行,即在21行显示提示,22行显示进度条。
/u 卸载本程序,将由本程序生成的镜像文件还原,结果保存成一个镜像文件。
希望下载和使用了这个软件的朋友跟帖或到我的小站留言谈一下看法。
[ Last edited by TurboY on 2005-9-6 at 15:38 ]
第一种思路:在系统恢复盘的引导扇区中加入一段程序,它驻留内存后接管Int13H,凡是对备份分区的ID的读取(1BH),均返回0BH即可见分区。后来的DOS启动后,此分区自然可见了。这是类似引导型病毒的做法。
第二种思路:在系统恢复盘的DOS启动后,由一个程序查找隐藏的备份分区,并将它作为一个正常的FAT32分区添加到DOS的设备链上,并赋以相应的盘符。这是类似NTFS4DOS的做法。
希望有人能够利用这个思路做点工具出来,可是很久还是没有见到,我自己也懒得理了,开始用批处理来查找分区供GHOST调用。
今年又看到这个帖子,终于不想偷懒,由于我对DOS的细节还是不清楚,就写个引导程序来做了。终于有了结果,在Bochs-2.1.1和VM里测试通过,能够欺骗DOS在启动后为1B和1C格式的隐藏分区分配盘符。在这里拿出来希望朋友们能够帮忙用多余的真实硬盘测试一下。(特别提醒,我保证程序中没有写MBR的代码,可是难保一切意外的发生,最好用没保存重要数据的真实硬盘来做!)
下载地址:
已经改成8月23日编译的了,见附件。
测试方法:
解压下载的ZIP文件,准备一个启动盘镜像文件。
运行解压目录里的镜像修改程序,格式
MAKEIMG <原镜像文件> <新镜像文件>
生成的新镜像文件即可在虚拟机中测试,如要在真实机器里测试可写入软盘或用VFLOPPY等软件来做。
VMware截图:



下面是编程的记录:
这是一个用来引导我的系统备份/恢复光盘的启动软盘的程序,将会放在软盘的第一个扇区内。此程序引导系统时,出现一个提示,用户可选择按任意键启动工具软盘,也可以在等待8秒后引导硬盘上的操作系统。在选择由工具软盘启动DOS后,在MBR中隐藏的FAT32主分区(0B/0C)将会分配盘符变得可见,这就可以用常规工具来做备份了——备份在隐藏分区里,看谁能删得掉!
最后版本:2005/7/23 2005/6/29
后记:
6月29日的版本只处理了传统INT13的2号功能,所以在虚拟机中的小硬盘(1B-FAT32)中调试正常,一到了用LBA方式读取的分区(1C-FAT32LBA,1E-FAT16LBA)就完了。可是现在的硬盘已经没有8GB以下的了,读取也几乎全是用LBA方式了。
7月23日:
加入对扩展INT3读取(42号)功能的接管,实现对隐藏LBA分区的读取,由于现在硬盘分区几乎没有用FAT16的了,所以只处理了FAT32的。
由于新代码的加入,我原来的提示信息也不得已剪了一部分。
【目前最新版本】
HFBOOT.ASM还是9月1日的,MAKEIMG.EXE在9月5日新增选项后编译
新的命令行如下:
MAKEIMG 源镜像文件名
源镜像文件名 用来制作显隐藏分区功能的软盘镜像文件
目的镜像文件名 将要生成的带显隐藏分区功能的软盘镜像文件,可省略,默认值为YISIR.IMG
可选参数:
/f 生成的程序在计算机启动时直接从软盘启动。
/b 生成的程序在计算机启动时直接激活隐藏分区并启动。(注意隐藏分区中必须已安装了操作系统,此功能也未写MBR)
无 /f 和 /b 参数时将出现提示并等待8秒,这期间按任意键从软盘启动,否则从硬盘启动且不加载显隐藏分区功能。
/k:n n=1-4,6-12。设置直接激活隐藏分区并启动时用的按键,可以是F1-F4、F6-F12
/p:nn=0 - 255 ,自定义构成进度条的字符,默认是62即“>”,象219(实心方块)、220、223也挺好看
/r:nn=1 - 24 ,自定义提示信息的在屏幕中的开始行,默认是21行,即在21行显示提示,22行显示进度条。
/u 卸载本程序,将由本程序生成的镜像文件还原,结果保存成一个镜像文件。
希望下载和使用了这个软件的朋友跟帖或到我的小站留言谈一下看法。
[ Last edited by TurboY on 2005-9-6 at 15:38 ]
Gemini 解答
TurboY 提出的两种思路是 DOS 环境下访问隐藏分区的典型技术路径,其核心逻辑与实现限制如下:
第一种思路(引导扇区驻留程序)
技术原理
通过修改引导扇区,在系统启动时驻留内存并接管 BIOS INT 13H 中断(磁盘 I/O 中断)。当 DOS 或应用程序通过 INT 13H 读取 MBR(主引导记录)中的分区表时,程序会拦截分区类型码的返回值:将隐藏分区的类型码(如 FAT32 隐藏的
0x1B/0x1C)替换为对应的可见类型码(0x0B/0x0C)。DOS 启动后会依据 BIOS 返回的分区表信息分配盘符,因此隐藏分区会被识别为正常分区。实现限制
- 仅支持主分区:程序仅处理 MBR 中直接定义的 4 个主分区表项,无法识别扩展分区内的逻辑隐藏分区(需额外解析扩展分区链,受引导扇区 512 字节空间限制未实现)。
- 依赖 BIOS 磁盘访问:仅对通过 BIOS INT 13H 读取磁盘的程序生效(如 DOS、早期 Windows 9x、GHOST),对直接访问磁盘端口的程序(如 Windows 2000/XP、Linux)无效。
- 类型码覆盖有限:早期版本仅支持
0x1B/0x1C,后续扩展到0x11(FAT12 隐藏)、0x14(FAT16 隐藏)等,但需手动添加类型码映射表。第二种思路(DOS 设备链扩展)
技术原理
在 DOS 启动后,通过程序主动扫描磁盘分区表,找到隐藏分区后,模拟 DOS 设备驱动的结构(如 FAT32 的
IBMDOS.COM驱动),将其添加到 DOS 的设备链(Device Chain)中,并分配未使用的盘符。这种方式与NTFS4DOS等第三方文件系统驱动的实现逻辑一致,属于用户态驱动扩展。实现优势与挑战
- 优势:不依赖 BIOS 中断,可支持扩展分区内的逻辑隐藏分区,且对 DOS 环境的侵入性更低。
- 挑战:需深入理解 DOS 设备驱动的接口规范(如
Strategy/Interrupt入口、设备头结构),以及 FAT/FAT32 文件系统的引导扇区解析逻辑,开发复杂度高于第一种思路。历史背景与误解
当年此类工具稀缺的原因包括:
- 技术门槛:引导扇区编程需掌握汇编与 BIOS 中断细节,设备链扩展需熟悉 DOS 内核结构,相关文档(如 IBM DOS 技术参考手册)获取难度较高。
- 硬件兼容性:不同 BIOS 对 INT 13H 扩展功能(如 LBA 模式)的支持不一致,导致程序在部分克隆机上出现兼容性问题。
- 需求场景局限:隐藏分区多用于系统备份(如 GHOST 镜像),通过批处理直接调用磁盘扇区(如
GHOST -clone,mode=pload,src=1:2,dst=1:1)即可满足需求,对“可见盘符”的需求优先级较低。后续进展补充
TurboY 最终实现的引导程序属于第一种思路的优化版本,后续通过扩展支持了以下功能:
- 按 F7 键直接从隐藏主分区启动 DOS(需隐藏分区已安装 DOS 系统);
- 自定义提示信息位置、进度条字符及启动按键(如
/k:F11);- 支持卸载功能(
/u参数),可还原被修改的引导扇区。hnlyzhd 提到的
Paragon DOS IFS Driver则属于第二种思路的成熟实现,不仅支持隐藏分区,还可读取 NTFS、Ext2/3 等非 DOS 原生文件系统,是当时更通用的解决方案。
本帖最近评分记录
(共 1 条)
点击查看详情
| 评分人 | 分数 | 时间 |
|---|---|---|
| — | +1 | 2010-03-22 20:16 |
从95年开始用DOS3.2,96年在Windows3.1里认识了鼠标,97年开始用Win95,98年装过NetWare,99年迷过Linux,现在用WinXP、WinME和DOS7.1。一回首,从盲到忙,从忙到茫。


