Як ігри PC / Mac виявляють піратство?


27

Нещодавно я читав статтю про розумні способи, як програмісти захистили свої ігри від піратів, таких як творці гри Dev Tycoon . Це мене викликало цікавість: як вони виявляють, що копія запущеної гри насправді є піратською версією на технічному рівні? Найближча відповідь, яку мені вдалося знайти за допомогою деяких досліджень, було те, як картриджі SNES можуть виявити, чи є вони піратськими , але ця тактика, очевидно, не стосується ПК.


1
Я думаю, що це питання занадто широке. Існує декілька способів виявлення піратства в іграх, і багато з них є специфічними для кожної гри.
MichaelHouse

10
@ Byte56 Я згоден, що питання досить широке, але я думаю, що це все-таки хороше питання. Ідеальною відповіддю може бути поширений метод виявлення піратства, а можливо, посилання на джерела, що пояснюють інші відомі рішення.
kevintodisco

2
Напевно, найкращий з усіх можливих способів уникнути піратства - це зробити те, що Blizzard зробив для Diablo III: клієнт робить рендерінг, і такі, але більшість правил та логіки гри зберігаються лише на стороні серверів Blizzard (наприклад: скільки золота ви отримуєте, коли ви відкриваєте скриню в кімнаті X з гравцем на рівні Y). Перемогти це неможливо, якщо ви не вкрали бінарні файли / джерело Blizzard для серверної частини (що дуже малоймовірно). Деякі люди створили емулятори, але оскільки це не однакові правила (вони є наближеннями), це зовсім не дає однакового досвіду гри.
tigrou

Відповіді:


53

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

Однак, запобігання піратству та контрзаходи зазвичай зосереджуються на тому, щоб з'ясувати, чи є у користувача щось (як правило, об'єкт), яке можна отримати лише в тому випадку, якщо була придбана копія гри, і це ускладнює їх дублювання. Є багато способів зробити це, кожен з яких має переваги, а також недоліки. Я згадаю кілька:

  • Ранні ігри просили користувачів ввести слово з посібника з ігор, яке ви повинні отримати лише в тому випадку, якщо придбали ігровий ящик. Фотокопіювальний апарат або сканер легко перемагає цю техніку.

  • Останнім часом частіше проводяться перевірки ЗМІ. Ідея полягає в тому, що для запуску гри вам потрібен компакт-диск з іграми. Для цього можна, наприклад, отримати доступ до критичних файлів даних з компакт-диска, без яких гра не може запуститися, або просто перевірити наявність файлу на компакт-диску. Це спрацювало досить добре, коли компакт-диски було важко дублювати, але компакт-диски копіювальники, а також останнім часом привідні емулятори можуть легко використовувати цю техніку.

  • Однак копії компакт-дисків не є ідеальними, тому багато інших методик зосереджені на виявленні, чи є компакт-диск оригінальним пресованим компакт-диском, або копією. Для цього гра може перевірити наявність нестандартних елементів , які вставляються на ігровий диск під час натискання, але їх не можна легко та надійно відтворити за допомогою записувача компакт-дисків на CD-R. Деякі поширені способи зробити це:

    • Створення фіктивних "привидних" файлів на компакт-диску під час освоєння, які недоступні з файлової системи CD, але вони існують, і їх можна прочитати, якщо ви знаєте, де їх знайти. Ці дані відсутні у файлах копій дисків окремо. Якщо скопіювати все зображення диска, ці файли будуть скопійовані.

    • Інший спосіб - навмисне вставити помилки в диск. CD містять коди виправлення помилок. Вставивши помилки в дані, які можна прозоро виправити зчитувачем дисків, диск буде працювати нормально, але помилки не буде скопійовано на CD-R. Шукаючи ці навмисні помилки, гра може вважати компакт-диск оригінальною пресованою копією. Образи диска RAW, однак, перемогли це.

    • Встановлення секторів-близнюків з однаковою адресою, але різні дані дадуть різні результати при пошуку даних вперед та назад. Перевірити наявність цього можливо, і дублювати компакт-диск із цими секторами-побратими дуже складно.

    • Вимірювання фактичного положення ям на компакт-диску. Ще раз повторити копію компакт-диска з ямами в одних і тих же положеннях дуже важко.

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

  • Замість або на додаток до перевірки фізичного компакт-диска гра може попросити користувача ввести деякі дані, наприклад ключ продукту . Деякі способи використання ключів продуктів:

    • Перевірка математичних особливостей у ключі. Однак це не заважає дублюванню ключів, і якщо алгоритм перевірки виявлений чи реверсивний інженер, пірат може за бажанням створити нові ключі, які виявляться законними для гри. Програмне забезпечення, яке створює ключі за бажанням, називається " keygens ".

    • Генеруючи хеш на основі апаратного забезпечення користувача, надішліть цей хеш та ключ продукту (зазвичай комбінацію, яку називають "інсталяційним ключем") на сервер, який належить ігровій компанії, і на основі хеша та серіалу створити ключ активації . Використовуючи односторонні числові методи (наприклад, модульну арифметику або деякі методи з еліптичними кривими), гра може побачити, чи відповідає ключ активації хеш-і серійному коду, і запуститись лише якщо вони збігаються. Ця методика називається «активація».

    Під час активації сервер може відмовитись надавати ключі активації для декількох апаратних хешей з одним і тим же серійним кодом. Через це навіть якщо копіювати серійний код та ключ активації, ключ активації не збігатиметься, і гра не працюватиме на інших комп’ютерах.

Усі ці заходи мають на меті визначити, належить користувачеві придбану копію гри чи ні. Однак для їх реалізації потрібен програмний код, який перевіряє це. Пірат може змінити ігровий код, щоб відключити чи обійти чеки, а не атакувати самі механізми захисту від копіювання. Акт зміни бінарних файлів ігор для зняття чеків проти піратства називається "розтріскуванням".

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

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

  • Шифрування програми або просто перевірка розповсюдження та розшифрування її під час виконання. Це робить демонтаж складнішим, оскільки він включає один або кілька додаткових кроків розшифровки. Якщо ключ дешифрування включений у програму (як це має бути, тому що без нього гру не можна розшифрувати), пірат може інженеру розшифрувати, знайти розпорядок роботи та зламати захист від копіювання.

    Через це, як видавець ігор, ви хочете зробити ключ максимально важким для пошуку, і необов'язково зробити алгоритм розшифровки важким для розуміння. Деякі способи зробити ключ важким:

    • Затушіть його, створивши його дивними способами. Це просто уповільнює процес розтріскування.

    • Створіть головні ключі на машині, подібні до згаданого вище послідовного захисту.

    Однак, незалежно від методу, який ви використовуєте для створення ваших ключів, самі клавіші залишатимуться в пам'яті під час розшифровки. Інспектори пам'яті, налагоджувачі та емулятори можуть допомогти піратам знайти та скопіювати ключ, поки він знаходиться в пам'яті. Заглянути на пам'ять можна напавши кількома способами:

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

    • Сучасні апаратні та операційні системи надають деякі інструменти, такі як штори пам’яті , захищені шляхи до медіа та ТР-модулі , щоб полегшити створення програми, яка розшифровує дані, при цьому була стійкою до перевірки пам’яті.

Існує ще багато-багато методів нападу на піратство, починаючи від тривіального і закінчуючи езотеричним. На жаль, можливо, що всі ці методи не зможуть розпізнати справжню копію, і зазвичай це більш агресивні методи, які мають більш високі помилкові позитивні співвідношення.

Як видавець ігор, ви зазвичай хочете вибрати набір методів, вартість реалізації яких, очікуваний час розтріскування та помилкове позитивне співвідношення відповідають вашим очікуванням.

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

Щодо гри Dev Tycoon, вони не застосовували жодних технологій проти піратства. Вони просто створили "зламану" збірку і розподілили її по BitTorrent, як сказано на початку статті, яку ви згадали.


1
Навіть маючи конкурентоспроможну відповідь, мені потрібно спустити капелюх до вашої відповіді, кращої презентації та, очевидно, більше часу, вкладеного в цьому. Краще висвітлення техніки, і я мушу сказати, що я ніколи не чув про «завіси пам’яті, безпечні шляхи до медіа та модулі TP». Що це ??
v.oddou

@ v.oddou: Це елементи, які можна використовувати для апаратного забезпечення DRM. Модуль TP - це мікросхема криптографічного процесора. Багато сучасних комп’ютерів (2007 р. Та пізніших) містять TPM. Завіса пам’яті дозволяє створювати розділи пам’яті лише для запису, які не читаються навіть в ОС, спеціально для зберігання ключів для використання TPM. Безпечний шлях до медіа - це система, в якій вміст подорожує зашифрованим від кінця до кінця (навіть весь шлях до дисплея). Правильне використання цих технологій далеко не банальне ...
Піжама Panda

Як мініатюрна добавка, є чудова стаття про захист від копіювання від Spyro, в якій обговорюється багато цього матеріалу, застосованого до однієї гри, а також деякі обгрунтування та цікава історія: gamasutra.com/view/feature/3030/keeping_the_pirates_at_bay .php
орендодавець

Ця відповідь є абсолютно помилковою. youtube.com/watch?v=FVVx5WYmO2s Позначення для втручання модератора.
Krythic

@Krythic, як ти пишеш своє, а потім?
Піжама Panda

3

Це досить просто, вам просто потрібно запустити MD5 або SHA256 на власному виконуваному файлі, тоді, коли ви виявите, що підпис змінився з того, що ви жорстко закодували у бінарний файл після того, як ви створили остаточний реліз, тоді його зрозуміло хтось зламав ваш виконуваний файл. Тоді більшість компаній більше не показують спливаюче вікно (це було раніше), де говориться про "зламане ПЕ" або "виявлений вірус", а потім виходять з гри, тому що це буде дуже швидко протидіяти хакерам. Оскільки гра призупинена в циклі повідомлень діалогового вікна, то миттєво побачимо, через яку гілку діалогове вікно з'явилося, і просто обійти гілку, змінивши код при перевірці умови.

Сьогодні компанії використовують дуже тонкі зміни в геймплеї, як, наприклад, примножують життя монстрів, щоб зробити гру неможливою або неймовірно спритно інтегрованою в цю гру управління, де ви керуєте ігровою компанією і втрачаєте врешті-решт, тому що занадто багато гравців пірати вашу гру. Приємна місія в цій справі. Іноді це просто отримує червоний прапор, завантажений на сервери компанії, і коли ви хочете зателефонувати їм на підтримку, ви отримаєте промову або потрапите в розкриття своєї особи.

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

EDIT: Якщо ви просто скопіюєте гру такою, якою є, вона може спрацювати, якщо в грі взагалі немає заходів проти піратства. Він працював із дуже старими іграми, до епохи записувачів компакт-дисків. Ось чому більшу частину часу гру потрібно встановлювати, а не просто копіювати папку інсталяції. Це включає приховані файли, поміщені трохи скрізь у системі, та ключі реєстру. Гра перевіряє наявність цих речей, які може створити тільки інсталятор. І інсталятор може бути запущений лише з компакт-диска, який не підлягає копіюванню через помилкові біти, які не поважають систему коду виправлення помилок у перших байтах диска, що вбиває більшість драйверів програвачів CD. Деякі програмні засоби для копіювання, як-от nero of alkohol, пропонують вам ігнорувати помилки, але те, що вони спалюють, - це виправлена ​​копія, інсталятор виявляє це і там ви переходите знову.

EDIT2:

Питання: як хеш-файл, а потім вставити хеш у файл, який змінює хеш?

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


Що робити, якщо ігрові файли скопійовано як є? Чи не буде в цьому випадку хеш-перевірка?
Піжама Panda

@PandaPajama: відмінне зауваження. Я роблю правки.
v.oddou

Як вони мають справу з хешуванням виконуваного, а потім жорсткого кодування, що має хеш у виконуваному файлі, тим самим змінюючи хеш?
MichaelHouse

@ Byte56: відредаговано знову :)
v.oddou

@MickLH: Я мушу сказати, що мені сподобалась ваша відповідь з тієї причини, що я погоджуюся з досвідом, який повинен змусити людей природним чином віддавати гроші з чистого побоювання. Дуже погано, що ти справді не відповів на питання, і ти отримав занижене значення (природно, можна сказати). Ви занадто абсолютні в приватному ключі. Цей приватний ключ не вартий нічого, крім хеш-шифрування, він не має великого значення, наприклад, база даних кредитних карт. Але якщо ви наполягаєте, то контрольна сума може бути надіслана в мережу для перевірки на сервері. Але безпека настільки ж сильна, як і її найслабша точка, і в цьому є серйозна вада, хакер
v.oddou

-5

не можу вони просто поставити розділ ext на mac-гру

Mac не може читати доб


Якщо на розділі був потрібний файл, гра не вдалося виконати. Якби тільки існування розділу було "доказом", що це законна копія, було б НЕВЕРДАЛЬНО легко копіювати.
Джессі Вільямс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.