Документация Steamworks
Средства защиты авторских прав в Steam

Введение

Оболочка для защиты авторских прав (DRM wrapper) — важная часть платформы Steam, поскольку она проверяет, что пользователь владеет игрой и что все функции работают корректно, запуская Steam до запуска игры.

Сама по себе оболочка не является решением проблемы пиратства. Она предотвращает чрезвычайно простые нарушения (например, копирование всех файлов игры на другой компьютер) и в некоторой степени защищена обфускацией, однако умелый злоумышленник может легко избавиться от этой оболочки.

Чтобы повысить ценность копий вашей игры, приобретённых законным образом, мы советуем использовать функции Steamworks, которые будут недоступны в пиратских версиях, например, онлайн-мультиплеер, достижения, списки лидеров, коллекционные карточки и так далее.

См. раздел Использование оболочки Steam с другими средствами защиты авторских прав, чтобы узнать больше о том, как использовать оболочку Steam DRM в комбинации с другими DRM-решениями или механизмами защиты от постороннего вмешательства.

Автоматическое добавление оболочки для защиты авторских прав

Оболочка добавляется из скрипта загрузки SteamPipe. Он запрашивает инициализацию у серверов Steam через авторизованный клиент, а затем загружает туда нешифрованный исполняемый файл через HTTP. На сервере добавляется оболочка, и затем SteamCMD скачивает итоговый исполняемый файл.

Чтобы добавить оболочку с помощью SteamPipe, ваш скрипт должен авторизоваться и затем выполнить команду drm_wrap:
drm_wrap [appid] [input filename] [output filename] [toolname] [flags] [<destination>]

Параметры:
  • appid — номер приложения.
  • input filename — относительный или абсолютный путь к нешифрованному исполняемому файлу. Не забудьте взять его в кавычки, если в пути есть пробелы!
  • output filename — относительный или абсолютный путь в папку, куда будет записан исполняемый файл с оболочкой.
  • toolname — на данный момент для этого параметра поддерживается только значение drmtoolp.
  • flags — битовая маска следующих числовых флагов, определяющих поведение инструмента:
    • 0 — нормальная оболочка (наибольшая защита);
    • 6 — режим совместимости (отключает обфускацию);
    • 32 — пропускает проверку отладчиком;
    • 38 — режим совместимости и пропуск проверки отладчиком (наименьшая защита).
  • destination, необязательный параметр — принимает значения cloud и local. Сейчас по умолчанию установлено значение cloud. Значение local потребуется лишь в случае, если при использовании значения cloud возникнут проблемы.

Пример скрипта run_build.bat, который сначала авторизуется, затем добавляет оболочку, собирает сборку и загружает её в Steam (AppID равен 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

Ручное добавление оболочки для защиты авторских прав

Для того, чтобы быстро добавить оболочку к исполняемому файлу игры, зайдите на страницу управления данными приложения на сайте Steamworks.

  1. Выберите игру, к которой вы хотите добавить оболочку, на странице управления приложениями.
  2. Нажмите «Изменить настройки приложения» в разделе «Технические инструменты».
  3. На вкладке «Безопасность» выберите «Защита DRM».
  4. Загрузите исходный исполняемый файл. Параметры работы инструмента см. в разделе автоматического добавления оболочки выше.
  5. Скачайте exe-файл на свой компьютер.
  6. Переименуйте файл, дав ему изначальное название.
  7. Скопируйте его в папку исходных файлов для хранилища контента.
  8. Создайте новую версию хранилища.
  9. Протестируйте это хранилище на локальном контент-сервере

Использование оболочки Steam с другими средствами защиты авторских прав

Оболочку Steam можно и нужно использовать в комбинации с другими DRM-решениями. Для этого до добавления других DRM-решений добавьте оболочку Steam в режиме совместимости, чтобы она не конфликтовала с ними. Режим совместимости отключит DRM-компонент оболочки.

Чтобы создать файл в режиме совместимости, либо выберите соответствующий пункт на странице DRM в Steamworks, либо используйте соответствующие флаги при автоматическом создании оболочки.

Частые вопросы

В. Моя игра на C# или .Net не запускается после добавления оболочки Steam.
О. Оболочка Steam не поддерживает приложения на .Net. Вместо использования оболочки Steam используйте SteamAPI_RestartAppIfNecessary.

В. Моя игра не запускается после добавления оболочки Steam
О. Оболочка Steam может сломать другие DRM-инструменты. См. Использование оболочки Steam с другими средствами защиты авторских прав.

В. Нужно ли добавлять оболочку всякий раз, когда я создаю новую сборку?
О. Да, каждая сборка, которую вы собираетесь опубликовать, должна иметь оболочку Steam. Вы можете автоматизировать этот процесс, воспользовавшись инструкциями выше.

В. Антивирус обнаружил в моём исполняемом файле вирус после добавления оболочки Steam. Что делать?
О. Подобные ложные срабатывания происходят, так как процесс внедрения защиты изменяет исполняемый файл таким же образом, как это делает вирус. Вы можете связаться с разработчиками антивируса или использовать API вместо оболочки Steam.