如果你试图在 Windows 10 或 11 上运行 2000 年代中期的 PC 游戏,大概率会撞上同一堵墙——双击 EXE,什么都没发生。或者更糟:屏幕分辨率被改得面目全非,听到一段开场音效,然后游戏窗口消失得无影无踪。
罪魁祸首是一个叫 SafeDisc 的 DRM 方案,以及微软在 2015 年 9 月 8 日 做出的一个安全决定。
SafeDisc 是什么?
SafeDisc 是 Macrovision 开发的 CD/DVD 复制保护技术,一度是 PC 游戏行业最主流的 DRM 方案。从 1998 年到 2008 年,数百款经典游戏用它来防止盗版——其中不乏《使命召唤》初代、《毁灭战士 3》、《孤岛惊魂》、《模拟人生 2》、《足球经理》系列等响当当的名字。
它的工作原理不算复杂:光盘上刻有一圈特殊的"弱扇区"(weak sectors),普通刻录机无法复制。游戏启动时,SafeDisc 通过一个内核驱动 secdrv.sys 直接与光驱通信,读取这些扇区来验证你是否插着正版光盘。
在 Windows XP 时代,这套机制运转良好。玩家们甚至发明了"最小镜像"(mini image)玩法——用 Alcohol 120% 或 Daemon Tools 挂载一个只包含保护扇区的小型 MDF/MDS 镜像文件,就能绕过实体光盘的要求。
2015 年 9 月 8 日:SafeDisc 的死期
北京时间 2015 年 9 月 8 日,微软在例行补丁日发布了安全公告 MS15-097(对应补丁编号 KB3086255)。这个补丁的官方描述是"修复 Windows 图形组件中的严重漏洞",但公告中悄悄附带了一项"纵深防御更新"——永久禁用 secdrv.sys 驱动。
微软的理由很明确:secdrv.sys 以内核级权限运行,存在被恶意软件利用的潜在风险。考虑到采用 SafeDisc 的游戏早已停产,继续维护这个驱动对微软来说没有意义。
这一刀下去,影响的 Windows 版本包括:
Windows 版本
secdrv.sys 状态
Windows XP
✅ 始终可用(不受补丁影响)
Windows Vista
❌ 2015 年 9 月 8 日后禁用
Windows 7
❌ 2015 年 9 月 8 日后禁用
Windows 8 / 8.1
❌ 2015 年 9 月 8 日后禁用
Windows 10
❌ 2015 年 9 月 8 日后禁用
Windows 11
❌ 驱动文件已被彻底移除,无法手动安装
自这一天起,所有使用 SafeDisc 保护的游戏在打过补丁的 Windows 系统上集体阵亡。无论你插正版光盘、挂载最小镜像、还是下载免 CD 补丁——只要游戏依赖 SafeDisc,统统无法启动。
SafeDiscLoader2:站在巨人肩膀上的解决方案
面对这个局面,社区并非毫无作为。多年来出现了若干零散的修复方案:Reloaded 的 SDLoader.dll、RibShark 的 SafeDiscShim、bOOls Eye 的 SafeDiscCleaner……但它们要么只支持特定版本,要么被杀毒软件疯狂误报,要么需要复杂的命令行操作。
直到 2025 年,GitHub 用户 nckstwrt 发布了 SafeDiscLoader2,这个问题才有了一个真正优雅的解法。
它做了什么?
SafeDiscLoader2 的核心是一个经过精心改造的 version.dll。Windows 在加载任何 PE 可执行文件时,会按固定顺序搜索 DLL 依赖——而 version.dll 恰好位于搜索链的高优先级位置。SafeDiscLoader2 利用这一机制,在 version.dll 被加载时自动执行以下操作:
- API Hook 拦截:挂载(hook)
CreateFile、DeviceIoControl等 Windows API 调用 - scsi 指令模拟:识别 SafeDisc 特有的 SCSI 指令(如 0xD800、0xD801),返回伪造的弱扇区验证数据
- secdrv 驱动仿真:模拟
secdrv.sys的内核通信逻辑,让 SafeDisc 保护代码以为自己成功与驱动完成了握手 - 附加 CD 检查绕过:通过可选的
version.json配置文件,模拟光驱盘符、卷标和特定文件存在性,绕过某些游戏的额外检查(如《模拟人生 2》的双重 CD 校验)
整个过程不修改目标 EXE 一个字节,不安装任何驱动,不弹出任何窗口。
为什么是 version.dll?
这个设计堪称妙笔。SafeDiscLoader2 的前身 v1.0 使用了 Reloaded 的 SDLoader.dll,需要额外的注入器和配置文件,而且因为 Reloaded 的代码高度混淆,被几乎所有杀毒软件标记为恶意程序。
v2 版本完全重写了核心逻辑:代码自研、开源透明、注入方式利用 Windows 原生 DLL 加载顺序——不需要额外的注入器。对于 SafeDisc 3.0 及以上版本的游戏,只需把 version.dll 放到游戏 EXE 同目录下,然后正常双击运行,一切自动发生。
使用方法
SafeDisc 3.0+ 游戏(绝大多数情况)
- 下载 SafeDiscLoader2 最新版
- 解压后,将
version.dll复制到游戏安装目录(与游戏名.exe同一文件夹) - 正常启动游戏
搞定。没有设置界面,没有命令行,不需要以管理员身份运行。
SafeDisc 2.x 游戏(早期版本)
早期 SafeDisc 游戏不会自动加载 version.dll,需要使用配套的 VersionInjector.exe:
- 将
version.dll和VersionInjector.exe都放到游戏目录 - 将游戏 EXE 拖拽到
VersionInjector.exe上 - 或双击
VersionInjector.exe,在弹出的窗口中选择游戏 EXE
也可以创建 SafeDiscLoader.ini 文件,写入游戏 EXE 名称,之后直接双击 VersionInjector.exe 即可自动启动。
需要额外配置的游戏
少数游戏在 SafeDisc 之外还有自己的 CD 检查逻辑(比如检测卷标、特定文件是否存在)。这时需要在 version.dll 旁边创建一个 version.json 配置文件。例如《Kohan》:
{
"exeFile": "KOHAN.exe",
"CDROMDriveLetter": "L",
"CDROMVolumeName": "KOHAN_IS"
}
窗口模式启动
老游戏的 1024×768 全屏模式在现代高分辨率显示器上经常出问题(分辨率切换失败、画面黑屏)。大多数游戏支持 -windowed 或 -small_screen 启动参数,可以创建快捷方式并添加这些参数来解决。
已验证兼容的游戏列表
截至 SafeDiscLoader2 v1.3,以下游戏已确认可以正常运行:
游戏
SafeDisc 版本
备注
使命召唤(原版)
3.10.20
使命召唤(1.4 补丁版)
3.15.11
使命召唤:联合进攻
3.20.22
使命召唤:现代战争
4.81.00
使命召唤:战争世界
4.90.10
毁灭战士 3
3.20.22
孤岛惊魂
3.15.10
马克思·佩恩(1.0)
2.30.33
模拟人生 2
3.20.20
有两次 CD 检查
极品飞车:地下狂飙
2.90.40
需 VersionInjector
极品飞车:地下狂飙 2
3.05.10
仍需 CD2(查 bin.dat)
哈利·波特与密室
2.80.10
需 VersionInjector
哈利·波特与阿兹卡班的囚徒
3.20.22
足球经理 2005(5.0 原版)
3.20.22
足球经理 2005(5.0.5 补丁)
4.00.02
足球经理 2006(6.0.2)
4.60.00
足球经理 2006(6.2.3)
4.60.00
足球经理 2007(7.0.2)
4.60.00
战地 1942
2.60.52
检查 bfdist.vlu 文件
战地 2
4.00.01
命令与征服:叛国者
2.51.21
需 VersionInjector,可能因系统信息获取而崩溃
闪点行动:冷战危机
2.40.10 / 2.50.20
补丁程序也需 VersionInjector
中土之战
4.00.01
Win11 需特殊 Options.ini
中土之战 II
4.60.00
需 VersionInjector 启动启动器
工人物语 IV
2.10.30
三角洲部队:大地勇士
2.05.30
额外检测卷名和 CDFS 文件系统
欧洲战斗机:台风
2.10.30
Kohan:不朽君王
2.60.52
检测卷名 KOHAN_IS
SafeDiscLoader2 理论上支持 SafeDisc 2.0 到 4.9 的全部版本。如果你的游戏不在上表中,同样值得一试——把
version.dll放进去,大概率直接能用。杀毒软件误报说明
SafeDiscLoader2 使用 API Hook 技术,部分杀软可能将其标记为可疑程序。这是因为 Hook 技术本身在恶意软件中也很常见,而非 SafeDiscLoader2 含有恶意代码。
项目完全开源(GPL-3.0),代码可在 GitHub 上审查。如果你信任这个项目,将游戏目录或 version.dll 加入杀软白名单即可。
v1 版本因为沿用了 Reloaded SDLoader.dll 的混淆代码,误报问题严重。v2 完全重写后情况大有改善。
常见问题
Q:为什么 2015 年的补丁会影响 Windows 7?我的 Windows 7 在 2015 年之前不是能用吗?
Windows 7 于 2009 年发布时,secdrv.sys 是内置且可用的。直到 2015 年 9 月 8 日的 MS15-097 安全更新才将其禁用。如果你有一台从未更新过、或关闭了自动更新的 Windows 7 电脑,SafeDisc 游戏仍可正常运行。
Q:能不能手动恢复 secdrv.sys?
理论上可以,微软提供了通过注册表临时启用 secdrv.sys 的方法——将 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicessecdrv 的 Start 值从 4 改为 1。但微软同时警告这会带来安全风险,且在 Windows 10 后期版本和 Windows 11 中,该驱动已被完全移除,此方法无效。使用 SafeDiscLoader2 是更安全的方案。
Q:这个方案支持 Mac / Linux 吗?
SafeDiscLoader2 是 Windows 原生方案。但在 Wine / Proton 环境下同样有效——只需将 version.dll 放入游戏目录,并通过 Wine 的原生 DLL 覆盖设置确保优先加载即可。
延伸阅读
- SafeDiscLoader2 GitHub 仓库
- SafeDiscLoader(v1,旧版)
- DiscCheckEmu —— 辅助绕过非 SafeDisc 的 CD 检查
- SafeDiscShim —— RibShark 的 secdrv.sys 仿真方案
- Microsoft 安全公告 MS15-097
- PCGamingWiki —— 各老游戏修复方案的综合索引
本文由 风神 整理编写。SafeDiscLoader2 由 nckstwrt 以 GPL-3.0 协议开源发布,所有版权归原作者所有。
- 本文固定链接: https://www.fengshen.cn/2026/07/safediscloader2:让老游戏在-win10-win11-上重获新生/
- 转载请注明: 风神 于 一梦风神 发表
