Защита игр в Steam: собственные механизмы и сторонние DRM
В 2008 году выступая на саммите, посвященном играм для PC, управляющий директор Valve Гейб Ньюэлл заявил, что его не волнуют действия пиратов, крадущих игры компании. По его словам, система цифровой дистрибуции Steam надежно защищает изданные в ней проекты от нелегального копирования. Ньюэлл считает, что игроки высоко ценят сервис, который предоставляет Steam. Со временем они становятся все менее заинтересованными в пиратстве, ведь, украв одну из игр Valve, игрок рискует потерять и все законно купленные копии.
В 2015 году в компанию StarForce обратился потенциальный клиент, который захотел распространять на дисках игру, украденную из Steam. Звучит как нонсенс, но это сермяжная правда. Так насколько хороша защита Steam и какие методы используют издатели для предотвращения распространения пиратских копий?
Как устроена защита Steam
По умолчанию игры в Steam никак не защищены и представляют собой обыкновенные файлы, которые могут быть скопированы или запущены без каких-либо ограничений. Если требуется защитить файл (здесь и далее под словом "файл" подразумевается исполняемый файл приложения) от копирования на другой компьютер или от запуска на аккаунте, для которого данный файл (приложение) не авторизовано, Steam предлагает четыре способа.
Способ 1. Защита с помощью Steamworks API
Steam предоставляет разработчикам особое API "Steamworks", с помощью которого можно, помимо прочего, получить информацию о пользовательском аккаунте и приобретённых на него играх. Таким образом, самый простой способ узнать, что данный аккаунт имеет право на запуск приложения - проверить с помощью API из самого приложения, что оно действительно было куплено текущим пользователем. Это делается буквально парой строк кода:
if(Steamworks.SteamInterface.User.UserHasLicenseForApp(playerSteamInfo.savedSteamID, new AppID(MyApplicationId)) == UserHasLicenseForAppResult.HasLicense)
{
Debug.Log("Valid License");
}
Поскольку в один момент времени аккаунт может быть авторизован только на одном компьютере, этот способ также решает проблему с запуском приложения на множестве разных компьютеров под одним аккаунтом. В случае если интернет-соединения нет, данный способ не сможет подтвердить право на запуск приложения. Чтобы этого избежать, программный клиент Steam необходимо предварительно перевести в т.н. Offline-режим, при котором текущее состояние аккаунта сохраняется локально. Впрочем, если офлайн-запуск приложения по каким-либо причинам нежелателен, через Steamworks API всегда можно выяснить текущий режим и прервать запуск приложения, если это необходимо.
В настоящее время для взлома такого типа защиты обычно производится подмена интерфейсной библиотеки Steamworks API (steam_api.dll) на собственную, которая эмулирует требуемое поведение защиты.
Способ 2. Защита с помощью Steam Bind
В случае если у издателя нет возможности модифицировать код приложения, чтобы добавить туда защиту через API, он может воспользоваться "навесной" защитой Steam Bind. Такая защита устанавливается на уже готовые .exe/.dll файлы и самостоятельно проводит операции авторизации аналогично описанным выше. Такая защита не отличается особой взломостойкостью. В защищаемом файле производится шифрование части секции кода и дописывается модуль для вызова API Steam и восстановления зашифрованного кода, если проверка прошла успешно. Поскольку ключ для расшифровывания файла содержится в нём самом, защиту можно снять с произвольного приложения, не покупая его.
Существует как минимум один публичный проект, который снимает подобную защиту - Steamless. Проект доступен с открытым исходным кодом: https://gitlab.com/atom0s/Steamless.
Способ 3. Защита с помощью Steam Custom Executable Generation
В качестве альтернативы предыдущему методу Steam предлагает возможность предоставлять каждому пользователю персонализированные исполняемые файлы приложения. Этот способ позволяет распространять игры, которые физически будут привязаны к конкретной конфигурации компьютера. Если конфигурация отличается, то пользователю необходимо авторизоваться на этом компьютере и получить обновлённые файлы. Судя по документации, этот способ в настоящее время вытеснен предыдущим.
Способ 4. Использование сторонней DRM
Steam позволяет использовать системы, разработанные сторонними компаниями, для защиты игр от взлома и пиратского распространения.
В середине января 2016 года появилась новость о том, что пираты в скором времени не смогут взламывать игры из-за того, что системы защиты станут слишком совершенными. В частности речь шла о Denuvo, австрийском разработчике, наследнике SecuROM. Данное заявление больше похоже на PR ход, однако нельзя не признать, что технологии защиты постоянно совершенствуются, в том числе в области обфускации кода.
В последнее время в Steam появилось довольно много игр, защищенных Denuvo. Что это за система и насколько справедливо называть её DRM?
Основной задачей Denuvo является защита кода игры, поэтому применяется виртуальная машина, большое количество обфускации, и различные методы шифрования файлов. Если говорить именно о функционале DRM, то Denuvo может выполнять проверку авторизации копии игры на аккаунте игрока (см. способ 1).
Защита кода исполняемого файла накладывает большую ответственность на разработчика игры, так как нужно найти баланс между производительностью и степенью защищенности. Также при использовании этой защиты у игроков возникает вопрос о быстром выходе из строя дисков SSD. И хотя представители Denuvo утверждают, что их система защиты не оказывает влияния на диски, но факт остается фактом – происходит определенный рост операций чтения фрагментов программы с диска, следовательно, нагрузка на диск увеличивается.
Традиционно компания StarForce предлагает свои решения для защиты игр на платформе Steam. Широкая линейка продуктов позволяет выбрать оптимальный вариант защиты: только код, код + DRM, только DRM. Основной задачей StarForce в данный момент является предоставление защиты, которая не доставляет беспокойств честному игроку, а для пирата становится непреодолимой преградой. Основным преимуществом по сравнению с Denuvo можно назвать экономический аспект – при высоком уровне взломостойкости решения StarForce дешевле
Также на Steam можно встретить игры, защищенные системами ActControl, Reality Pump, TAGES. Они не так широко известны, как две предыдущие, что скорее является их преимуществом. В основном эти решения выступают как альтернативные DRM-защиты, но могут предоставлять и защиту кода.
Экономический расчет
Ответить на вопрос, сколько стоит защита, не так просто. Все зависит от того, будет ли отдельно учитываться каждый игрок или речь идет только о защите кода. В первом случае, при подключении альтернативной DRM, будет оплачиваться лицензия на защиту и отдельно серийные номера на каждого игрока. При этом здесь тоже есть нюанс – серийники можно оплачивать сразу или, если удаться договориться с производителем системы защиты, по факту активации игроком. Стоимость номеров StarForce варьируется от 7 до 70 руб. и зависит от многих факторов: количества, вида защиты, количества активаций, способа оплаты.
При защите кода без учета игроков определяется общая стоимость использования системы защиты. Она зависит от производителя и территории распространения игры.
Отношение игроков к сторонним DRM на Стиме
Игроки относятся насторожено к играм со сторонней защитой. На форуме Steam можно найти такие заголовки: «Не покупайте эту игру! Она использует стороннюю DRM!» и еще 15 восклицательных знаков. С чем связана такая негативная реакция пользователей?
Во-первых, ограничения по количеству компьютеров. Это противоречит философии Steam, которая позволяет играть в любом месте, где есть интернет, а игру с DRM-защитой можно активировать только на ограниченном количестве компьютеров. Многих беспокоят вопросы: «А если мне не хватит активаций?», «Смогу ли я поиграть в эту игру через пять лет, когда мой компьютер будет совсем другим?». Ответы на эти вопросы есть. Например, в системе StarForce есть функция АДА – автоматического добавления активаций. Она позволяет добавлять игрокам новые активации по истечении определенного периода времени, например, по одной активации в год. Издателю только нужно будет объяснить это игрокам, чтобы они не беспокоились.
Второе возражение связано с негативными отзывами в Сети по поводу дополнительной нагрузки на компьютер и жесткие диски. По факту защита при правильной реализации занимает лишь малую долю ресурсов компьютера, иначе играть будет неинтересно. Как было сказано ранее, найти этот баланс нужно при развертывании защиты.
Разработчики систем DRM прилагают максимум усилий, чтобы «не показываться на глаза» игроку. Благодаря наличию интеграции со Steam пользователь не контактирует напрямую с системой защиты – даже активация сторонней DRM происходит в рамках стандартного интерфейса Steam.
Перспективы защиты игр: Steam и пираты
В условиях усугубляющегося кризиса, когда денег у населения становится меньше, а свободного времени больше, есть большие сомнения относительно полного исчезновения пиратских копий игр. С другой стороны лояльность игроков, особенно в такое время, является самым главным активом разработчиков и издателей, поэтому основной задачей при выборе системы защиты является поиск золотой середины между положительным впечатлением от игры и пресечением попыток пиратского распространения своего продукта.