Как игры для ПК / Mac обнаруживают пиратство?

27

Недавно я читал статью о том, как программисты защищают свои игры от пиратов, таких как создатели Game Dev Tycoon . Это заставило меня задуматься: как они обнаруживают, что копия запущенной игры на самом деле является пиратской версией на техническом уровне? Ближайший ответ, который я смог найти в ходе некоторых исследований, заключался в том, как картриджи SNES могут определять, являются ли они пиратскими , но эта тактика, очевидно, неприменима к ПК.

caseif
источник
1
Я думаю, что этот вопрос слишком широк. Существует несколько способов обнаружения пиратства в играх, и многие из них являются специфическими для каждой игры.
MichaelHouse
10
@ Byte56 Я согласен, что вопрос довольно широкий, но я думаю, что это все еще хороший вопрос. Идеальный ответ может обеспечить общий метод обнаружения пиратства и, возможно, ссылки на источники, которые объясняют другие известные решения.
Kevintodisco
2
Вероятно, лучший из возможных способов избежать пиратства - это сделать то, что Blizzard сделала для Diablo III: клиент выполняет рендеринг и тому подобное, но большинство правил и логики игры хранятся только на стороне серверов Blizzard (например, сколько золота вы получаете, когда Вы открываете сундук в комнате X с игроком на уровне Y). Это невозможно победить, если вы не украли двоичные файлы / исходники Blizzard для серверной части (что очень маловероятно). Некоторые люди создали эмуляторы, но из-за не одинаковых правил (они являются приблизительными), он не дает такой же игровой опыт вообще.
Tigrou

Ответы:

53

Перво-наперво: у компьютера нет возможности узнать, является ли файл пиратским или нет. Пиратство - это юридический / моральный термин, и поэтому он не имеет значения для файла, который состоит только из единиц и нулей.

Тем не менее, предотвращение пиратства и контрмеры обычно сосредоточены на том, чтобы выяснить, есть ли у пользователя что-то (обычно объект), которое можно получить, только если была куплена копия игры, и затруднить его копирование. Есть множество способов сделать это, каждый из которых имеет свои преимущества и недостатки. Я упомяну несколько:

  • В ранних играх пользователям предлагалось ввести слово из руководства по игре, которое вы должны получить, только если купили игровую коробку. Копировальный аппарат или сканер легко побеждают эту технику все же.

  • В последнее время проверки СМИ стали более распространенными. Идея состоит в том, что вам нужно, чтобы игровой компакт-диск находился в приводе для запуска игры. Чтобы реализовать это, вы можете, например, получить доступ к критически важным файлам данных с компакт-диска, без которого игра не может работать, или просто проверить наличие файла на компакт-диске. Это работало очень хорошо, когда компакт-диски было трудно дублировать, но копировальные устройства для компакт-дисков и более поздние эмуляторы дисков можно использовать, чтобы легко победить этот метод.

  • Однако копии на CD не идеальны, поэтому многие другие методы фокусируются на том, чтобы определить, является ли компакт-диск оригинальным нажатым CD или копией. Чтобы реализовать это, игра может проверять наличие нестандартных элементов , которые вставляются на игровой диск во время печати, но которые не могут быть легко и надежно воспроизведены устройством записи CD на CD-R. Некоторые распространенные способы сделать это:

    • Создание фиктивных «призрачных» файлов на компакт-диске во время мастеринга, которые недоступны из файловой системы компакт-диска, но существуют и могут быть прочитаны, если вы знаете, где их найти. Эти данные отсутствуют на отдельных копиях дисков. Копирование всего образа диска приведет к копированию этих файлов.

    • Другой способ - преднамеренно вставить ошибки в диск. Компакт-диски содержат коды исправления ошибок. Вставляя в данные ошибки, которые можно прозрачно исправить с помощью устройства чтения дисков, диск будет работать нормально, но ошибки не будут скопированы на CD-R. Ища эти преднамеренные ошибки, игра может считать компакт-диск оригинальной нажатой копией. Копии образа диска RAW побеждают это все же.

    • Вставка двойных секторов с одинаковым адресом, но разными данными даст разные результаты при поиске данных в прямом и обратном направлении. Проверка на наличие этого возможна, и дублирование CD с этими двумя секторами очень сложно.

    • Измерение фактического положения ям на CD. Еще раз, дублирование компакт-диска с ямами в тех же самых положениях очень сложно.

    Однако многие эмуляторы CD, такие как Daemon Tools или Alcohol 120%, могут фактически эмулировать эти функции. По этой причине многие издатели предпочитают включать этап обнаружения эмулятора компакт-диска и запрещают запуск игры в случае обнаружения эмулятора. Однако реализация детектора эмулятора выходит за рамки этого ответа.

  • Вместо или в дополнение к проверке физического CD, игра может запросить пользователя ввести некоторые данные, например, ключ продукта . Некоторые способы использования ключей продукта:

    • Проверка на математические особенности в ключе. Тем не менее, это не предотвращает дублирование ключей, и если алгоритм проверки обнаружен или подвергнут обратной разработке, пират может создать новые ключи по своему усмотрению, которые окажутся законными для игры. Программное обеспечение, которое создает ключи по желанию, называется « кейгены ».

    • Генерируя хеш на основе аппаратного обеспечения пользователя, отправьте этот хеш и ключ продукта (обычно это комбинация, называемая «ключом установки») на сервер, принадлежащий игровой компании, и на основе хеш-кода и серийного номера создайте ключ активации . Используя односторонние числовые методы (такие как модульная арифметика или некоторые методы с эллиптическими кривыми), игра может увидеть, соответствует ли ключ активации хеш-код и серийный код, и запускаться только в случае совпадения. Эта техника называется «активация».

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

Все эти меры предназначены для определения того, владеет ли пользователь купленной копией игры. Однако для их реализации требуется программный код, который проверяет это. Пират может изменить код игры, чтобы отключить или обойти проверки, вместо того чтобы атаковать сами механизмы защиты от копирования. Акт модификации двоичных файлов игры для удаления антипиратских проверок называется «взломом».

Взлом может просто состоять из разборки исполняемого файла игры, поиска места выполнения соответствующих проверок, изменения его для отключения проверок или игнорирования результатов и повторной сборки. Некоторые способы противодействия взлому:

  • Проверка двоичного файла с некоторым хешем. Однако должна быть программа, которая проверяет хеш, который также может быть взломан.

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

    Из-за этого, как издатель игры, вы хотите, чтобы ключ был как можно сложнее найти, и при желании сделать алгоритм расшифровки трудным для понимания. Вот несколько способов затруднить поиск ключа:

    • Затенить его, создав его странным образом. Это просто замедляет процесс взлома.

    • Создайте мастер-ключи для каждой машины, как описано выше.

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

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

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

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

Как издатель игры, вы обычно хотите выбрать набор методов, стоимость реализации которых, ожидаемое время взлома и ложноположительное соотношение соответствуют вашим ожиданиям.

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

Что касается Game Dev Tycoon, то они не использовали никаких антипиратских технологий. Они просто создали «сломанную» сборку и распространили ее по BitTorrent, как указано в начале статьи, которую вы упомянули.

Панда Пижама
источник
1
Даже имея конкурирующий ответ, мне нужно прислушаться к вашему ответу, лучше представить и, очевидно, уделить ему больше времени. Лучшее техническое освещение также, и я должен сказать, что я никогда не слышал о «завесах памяти, безопасных медиа-путях и модулях TP». Что это ??
v.oddou
@ v.oddou: это элементы, которые можно использовать для DRM с аппаратной поддержкой. Модуль TP представляет собой чип криптографического процессора. Многие современные (2007 и более поздние) компьютеры содержат TPM. Занавес памяти позволяет создавать разделы памяти, доступные только для записи, которые не читаются даже ОС, в частности, для хранения ключей для использования TPM. Безопасный путь передачи мультимедиа - это система, в которой содержимое передается в зашифрованном виде от конца до конца (даже вплоть до дисплея). Правильное использование этих технологий далеко не тривиально, хотя ...
Panda Pajama
Так же, как крошечное дополнение, есть отличная статья о защите от копирования Spyro, в которой обсуждаются многие из этих вещей применительно к одной игре, а также некоторые обоснования и интересная история: gamasutra.com/view/feature/3030/keeping_the_pirates_at_bay .php
leander
Этот ответ совершенно ошибочный. youtube.com/watch?v=FVVx5WYmO2s Пометка для вмешательства модератора.
Krythic
@ Krythic как насчет того, чтобы написать свой, а потом?
Panda Pajama
3

Это довольно просто, вам просто нужно запустить MD5 или SHA256 на вашем собственном исполняемом файле, а затем, когда вы обнаружите, что сигнатура изменилась по сравнению с тем, что вы жестко закодировали в двоичный файл после того, как вы создали окончательный выпуск, то ясно, что кто-то взломал ваш исполняемый файл. Тогда большинство компаний просто не показывают больше всплывающего окна (как это было раньше), которое говорит «сломанный PE» или «обнаружен вирус», и затем выходит из игры, потому что это будет очень быстро взломано, если хакеры. Поскольку игра приостановлена ​​в цикле сообщений диалогового окна, поэтому сразу видно, из какой ветви выскочил диалог, и просто пропустите ветку, изменив код при проверке состояния.

Сегодня компании используют очень тонкие изменения в игровом процессе, например, умножают жизнь монстров, чтобы сделать игру непригодной для игры или невероятно умно интегрированы в эту игру управления, в которой вы управляете игровой компанией, и в конечном итоге вы проигрываете, потому что слишком много игроков нападают на вашу игру. Хороший Mise En Abyme в этом случае. Иногда он просто загружает красный флажок на серверы компании, и когда вы хотите обратиться к ним за поддержкой, вы получаете речь или попадаете в раскрытие вашей личности.

но это все тема, техника хэширования. и эти проверки могут выполняться во многих местах двоичного файла, так что если хакеры найдут один и очистят его, его недостаточно.

РЕДАКТИРОВАТЬ: Если вы просто скопируете игру как есть, она может сработать, если в игре вообще нет мер по борьбе с пиратством. Это работало с очень старыми играми, до начала записи CD. Вот почему большую часть времени игра должна быть установлена ​​для запуска, а не только скопированная папка установки. Это включает в себя скрытые файлы, помещенные немного повсюду в системе, и ключи реестра. Игра проверяет наличие этих вещей, которые могут быть созданы только установщиком. И установщик может быть запущен только с компакт-диска, который не может быть скопирован из-за ошибочных битов, которые не учитывают систему кодирования с исправлением ошибок в первых байтах диска, что убивает большинство драйверов проигрывателя компакт-дисков. Некоторые программы копирования, такие как nero ofcohol, предлагают вам игнорировать ошибки, но то, что они записывают, является исправленной копией, установщик обнаруживает это, и вы снова идете.

EDIT2:

Q: как хешировать файл, а затем вставить хеш в файл, который меняет хеш?

@ Byte56: Черт, мы получаем здесь разумные комментарии :) Да, это парадокс, и его нельзя решить. Таким образом, хеш должен быть сделан со стороны двоичного файла, который не содержит хеш. И код проверки должен это знать, чтобы исключить эту зону при хешировании для самопроверки. Я видел людей, использующих теги, такие как ~~ #### [вставьте хэш здесь] #### ~~, чтобы заключить их в хэш и сделать исключение. Но у него есть недостаток: его легко обнаружить хакерам, поэтому хеш нужно разбирать и разбрасывать по разным местам. Даже зашифрованный почему бы и нет, и та же самая операция маскировки идет, чтобы сохранить закрытый ключ.

v.oddou
источник
Что делать, если файлы игры копируются как есть? Разве хеш не подтвердится в этом случае?
Панда Пижама
@PandaPajama: отличное замечание. Я делаю правку.
v.oddou
Как они справляются с хэшированием исполняемого файла, а затем жестким кодированием, которое хэширует в исполняемом файле, тем самым изменяя хэш?
MichaelHouse
@ Byte56: снова отредактировано :)
v.oddou
@MickLH: Я должен сказать, что мне понравился ваш ответ по той причине, что я согласен с опытом, который должен побуждать людей естественно отдавать деньги из чистого страха. Жаль, что на самом деле это не ответило на вопрос, и вы получили отрицательный голос (естественно, можно сказать). Вы слишком абсолютны в отношении закрытого ключа. Этот закрытый ключ не стоит ничего, кроме хэш-шифрования, он не имеет большого значения, например, база данных кредитных карт. Но если вы настаиваете, то контрольная сумма может быть отправлена ​​в сеть для проверки на сервере. Но безопасность так же сильна, как и ее самое слабое место, и у этого есть серьезный недостаток, хакер
v.oddou
-5

не могу они просто положить Ext раздел на Mac игре

Мак не могу читать Ext

Кто-то
источник
Если в разделе был нужный файл, игра не может быть запущена. Если бы только существование раздела было «доказательством» того, что это была законная копия, его было бы невероятно легко скопировать.
Джесси Уильямс