Steamworks 文献库
Steam DRM

概览

Steam DRM 包装器是 Steam 平台的一个重要部分,因为它验证了游戏的所有权,并通过在启动游戏之前启动 Steam,确保 Steamworks 功能正常运作。

Steam DRM 包装器自身并非一个反盗版方案。 Steam DRM 包装器防范的是非常随意的盗版行为(如将所有游戏文件复制至另一台电脑),并进行一些模糊处理,但是蓄意攻击者很容易就可以将其移除。

我们建议使用无法在非法副本上运行的 Steamworks 功能(如在线多人游戏、成就、排行榜、集换式卡牌等)提升您游戏的合法副本的价值。

参见使用 Steam 包装器包装其他 DRM,了解同时使用 Steam DRM 包装器与其他 DRM 或反篡改方案的更多信息。

Steam DRM 自动包装器

可从 SteamPipe 上传脚本中应用 Steam 包装器。 这样可以通过已登录的客户端向 Steam 服务器发出初始化请求,然后通过 HTTP 将纯文本的可执行文件发送至 Steam 后端。 包装会在服务器上进行,然后 steamcmd 便会下载包装完成的可执行文件。

要使用 SteamPipe 包装 DRM,您需要登录脚本后,运行 drm_wrap 指令:
drm_wrap [appid] [input filename] [output filename] [toolname] [flags] [<destination>]

参数:
  • appid - 以数字组成的应用程序 ID。
  • input filename - 输入纯文本可执行文件的相对或绝对路径。 记得在可能包含空格的路径前后使用引号!
  • output filename - 工具将写入输出的已包装可执行文件的相对或绝对路径。
  • toolname - “drmtoolp”是目前唯一支持的 toolname 参数。
  • flags - 指定工具行为的下列数字标志的位掩码。
    • 0 - 常规包装(最大保护)。
    • 6 - 兼容模式(禁用模糊处理)。
    • 32 - 跳过调试器检查。
    • 38 - 兼容模式并跳过调试器检查(最小保护)。
  • destination, optional parameter - “cloud”或“local”。 当前默认值为“cloud”。 除非使用“cloud”选项时遇到问题,否则不需要使用“local”选项。

以下是执行 run_build.bat 脚本登录、应用 DRM 、生成并将生成版本上传至 Steam 的示例(App ID 为 480 ):
builder\steamcmd.exe +login mysteamaccount +drm_wrap 480 "D:\src\steamworkssdk\steamworksexample\release\steamworksexample.exe" "D:\src\steamworkssdk\tools\ContentBuilder\content\windows_content\SteamworksExample.exe" drmtoolp 0 +run_app_build ..\scripts\app_build_480.vdf +quit

手动使用 Steam DRM 包装器

若要快速地用 Steam 包装器包装 exe 文件,可使用 Steamworks 应用程序数据管理页面对游戏主要的 exe 文件进行包装。

  1. 在应用管理员页面,选择您希望新增 DRM 的游戏。
  2. 在应用管理员页面中,选择“技术工具”下方的“编辑 Steamworks 设置”。
  3. 选择“安全性”选项卡下的 DRM。
  4. 上传游戏的主要 exe。关于更多有关工具执行选项的说明,请见上方的自动包装段落。
  5. 将 exe 下载至您的本地电脑上。
  6. 将 exe 重命名回原来的文件名。
  7. 将 exe 复制至内容工具 depot 的来源位置中。
  8. 建立一个新版本的 depot。
  9. 在您的本机内容服务器上测试 depot。

使用 Steam 包装器包装其他 DRM

Steam 包装器能够也应该与其他 DRM 解决方案一起使用。 方法是在应用其他任何 DRM 前,先使用 Steam 包装器的兼容模式, 便不会干扰到其他的 DRM 解决方案。 兼容模式将会禁用该包装器的 DRM 功能。

从 Steamworks 页面中的下拉菜单中选择兼容模式,或选择自动 drmtool 中的适当标记,即可在兼容模式下提交 exe 文件。

常见问题

问: 我的 C# / .Net 游戏在使用了 Steam 包装器后便无法执行。
答: Steam 包装器不支持 .Net 应用程序。 请使用 SteamAPI_RestartAppIfNecessary 代替 DRM 包装器。

问: 我的游戏在使用了 Steam 包装器后便无法执行。
答: Steam 包装器可能会损坏其他 DRM 工具。 由于可能存在的冲突,请见使用 Steam 包装器包装其他 DRM

问: 每次建立新生成版本时都需要应用 DRM 吗?
答: 对,每个您希望发布的生成版本都需要使用 Steam 包装器进行包装。 您可使用上述的 Steam 自动包装器流程将其自动化。

问: 在应用 Steam DRM 包装器后,杀毒软件供商检测到我的二进制文件有病毒。 我该怎么做?
答: DRM 注入流程会以与某些病毒相同的方式修改您的二进制文件,因此这样的误报可能会发生。 请联系杀毒软件提供商,或是使用 API 替代 Steam DRM 包装器。