中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-16 12:27
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 求QBWIN开发的一键还原源码 查看 2,690 回复 9
楼 主 求QBWIN开发的一键还原源码 发表于 2007-10-28 02:54 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
UID 100924
性别 男
状态 离线
要全源码(不用IBM现有的工具)
最好全BAT加QBWIN
[已使用 Gemini 解答]
Gemini 解答

关于“QBWIN开发的一键还原源码”的技术解释与背景补充

核心需求的技术可行性边界

  1. 纯BAT脚本的局限性
    DOS下的批处理(BAT)无法直接访问磁盘扇区、修改MBR或处理文件系统元数据(如FAT表、目录项),这些操作需要汇编/机器码级别的硬件访问能力。因此,纯BAT无法实现“一键还原”的核心功能(扇区备份/恢复),必须依赖外部工具(如debug.comfdisk.exe或自定义编译的二进制程序)。当年论坛中“BAT实现还原”的说法,实际是通过BAT调用底层工具(如debug执行汇编指令),而非BAT本身完成核心逻辑。

  2. QBWIN的角色与限制
    QBWIN(QuickBASIC for Windows)是16位Windows下的BASIC开发环境,其编译的程序依赖Windows API,无法直接运行于纯DOS环境。若用户实际指QuickBASIC(DOS版,如QB 4.5),则可以通过调用DOS中断(如INT 13h磁盘访问、INT 21h文件操作)实现扇区读写,但仍需:

    • 直接操作硬件中断(需关闭DOS的文件系统缓存,否则可能导致数据不一致);
    • 处理不同BIOS对INT 13h的兼容性差异(如早期克隆机对大硬盘的支持问题);
    • 手动实现文件系统(如FAT16)的元数据解析(备份/恢复分区表、引导扇区等)。

当年“一键还原”的典型实现逻辑(以DOS环境为例)

真实的“一键还原”工具(如早期的Ghost雏形、国产还原软件)核心逻辑为:

  1. 备份阶段:通过INT 13h直接读取硬盘扇区(跳过DOS文件系统),将系统分区(如C盘)的扇区数据写入备份文件(通常存放在非系统分区的隐藏目录);
  2. 恢复阶段:通过引导程序(如修改MBR或引导扇区)绕过DOS,直接从备份文件读取扇区数据并写回硬盘;
  3. 引导触发:通过修改MBR或在DOS启动时检测热键(如F11),触发恢复流程。

其中,批处理仅作为流程调度工具(如调用备份/恢复程序、修改配置文件),而非核心功能的实现者。

历史误解的成因

当年论坛中“纯BAT+QB实现还原”的说法,源于:

  • 对“工具链”的混淆:将“BAT调用QuickBASIC编译的二进制程序”简化为“BAT+QB实现”;
  • 对DOS中断的认知不足:部分用户误将QuickBASIC的CALL INTERRUPT视为“高级语言原生支持”,忽略了其本质是对汇编指令的封装;
  • 商业软件的黑箱效应:早期还原软件未公开源码,导致用户对其实现方式产生“纯脚本即可完成”的误解。

合法替代方案与技术参考

若需实现类似功能,合法且可验证的途径包括:

  1. 使用开源工具:FreeDOS下的diskcopy.com(扇区复制)、partcopy(分区备份)等,可通过批处理调用;
  2. QuickBASIC实现示例:通过INT 13h读取MBR的代码片段(需QB 4.5及以上版本,且关闭DOS文件缓存):
    ' 读取MBR到缓冲区(示例代码,仅适用于DOS环境)
    DEF SEG = &H8000 ' 缓冲区段地址
    CALL INTERRUPT(&H13, _
        [0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], _ ' AH=02h(读扇区), AL=1(扇区数), CH=0, CL=1, DH=0, DL=80h(第一硬盘)
        result)
    DEF SEG
    
    (注:该代码仅读取MBR,未包含错误处理、大硬盘支持及备份文件存储逻辑)。

对帖子中“不用IBM现有的工具”的补充

IBM的工具(如fdisk.exeformat.com)本质是DOS系统自带的磁盘管理程序,其功能有限(如fdisk仅能修改分区表,无法备份扇区)。真实的还原工具均需自定义底层逻辑,与IBM工具无直接依赖,但需依赖DOS的中断服务(如INT 21h文件操作)。

后续跟帖的价值补充

Post #5提到的RomOS+BAT是当年另一种思路:通过将小型操作系统(RomOS)写入引导扇区,实现不依赖DOS的扇区恢复,但RomOS本身仍需汇编实现,BAT仅作为引导触发的辅助脚本。

2 发表于 2007-10-28 08:16 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
UID 49283
性别 男
状态 离线
这里你能找到吗?呵呵。
该去与作者联系。
Windows 一键还原
http://www.yjhy.com
3 发表于 2007-10-28 09:17 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
UID 100924
性别 男
状态 离线
这里怎么不能找到
这里那么多高手
反汇编的人那么多在这里啊
4 发表于 2007-10-28 13:07 ·  中国 湖南 郴州 电信
初级用户
积分 27
发帖 13
注册 2006-09-10 00:17
UID 62254
性别 男
状态 离线
太难找了,别人的技术传内来传外的
5 发表于 2007-10-28 13:46 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
第一高手 第二高手

6 发表于 2007-10-28 19:33 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
UID 49283
性别 男
状态 离线
Originally posted by xuehaiwuya at 2007-10-28 09:17:
这里怎么不能找到
这里那么多高手
反汇编的人那么多在这里啊

高手多,不见得高手愿意为你去折腾他看不上眼的东西。呵呵。
Windows 一键还原
http://www.yjhy.com
7 发表于 2007-10-28 21:31 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
UID 100924
性别 男
状态 离线
感谢五楼
8 发表于 2007-10-28 21:44 ·  中国 福建 三明 电信
初级用户
★★
积分 165
发帖 79
注册 2007-10-27 13:43
UID 100924
性别 男
状态 离线
Originally posted by lianjiang2004 at 2007-10-28 07:33 PM:

高手多,不见得高手愿意为你去折腾他看不上眼的东西。呵呵。


我不明白什么是不上眼的
但也许你是狂人那你说这句话不奇怪
知识哪怕是简单的点点
有机会学都要学
回过头看一十一=二其实并不会不上眼而且是数学难题
9 发表于 2010-05-19 15:18 ·  中国 山东 烟台 联通
中级用户
★★
积分 231
发帖 110
注册 2008-03-24 16:22
UID 113876
性别 男
来自 中国大陆
状态 离线
查找中》》》》》》》》》》》》》
10 发表于 2010-05-30 17:38 ·  中国 山东 联通
中级用户
★★
积分 231
发帖 110
注册 2008-03-24 16:22
UID 113876
性别 男
来自 中国大陆
状态 离线
网址都打不开呀,这是为什么呀》》》》》》》》》》》
论坛跳转: