Які існують способи запобігти чи зменшити обман в багатокористувацьких іграх в Інтернеті? [зачинено]


19

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

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



1
Це сама по собі не є повною відповіддю, тому я не буду перелічувати її як одну, але якщо ви додасте певну кількість цінності до акаунта гравців на додаток до традиційних методів анти-чітів, я вважаю, що це може допомогти. Наприклад, якщо нових гравців передають на сервери "noob" до тих пір, поки вони не наберуть достатнього досвіду для доступу до решти гри, хакерам це завдає великого болю, щоб кожен раз переосмислити свій рахунок після заборони. Напевно, все ще є деякі хакери, які можуть пройти це, але захистити ваш обліковий запис / сервери для сватання набагато простіше, ніж захистити клієнтів.
Льюїс Уейкфорд

Відповіді:


18

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

Wallhacks, як правило, записуються шляхом введення коду між вашим процесом і бібліотеками DirectX / GL, щоб встановити прозорість матеріалів, щоб їх можна було побачити. Ви можете додати якийсь код до вашої сценограми / кулінгу, щоб спеціально не малювати інших гравців / корисних утворень, якщо вони знаходяться за стінами (щоб запобігти цьому обман).

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

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

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


Або навіть краще, ніж ховати предмети за стінами (які все ще можна зламати), не даючи клієнтові інформації про місцезнаходження цього гравця взагалі (або лише про те, що потрібно, наприклад, для хорошого звучання 3d звукового ефекту)
Барт ван Хекелом

17

При найбільш екстремальному рішенні ви взагалі ніколи не довіряєте клієнту. У таких іграх, як MMO, користувачі не запускають свої сервери, і будь-яка логіка геймплея обробляється на стороні сервера. Ніколи не дайте клієнтові повноважень говорити «у мене здоров’я X» або «у мене боєприпаси X» тощо.


4
Це чудово, якщо у вас фактично є ресурси для запуску виділеного сервера, але це досить спрощений погляд на нього. Швидше за все, ви все-таки зробите багато логіки на клієнтах і мінімальний підмножина логіки на сервері, з періодичною синхронізацією для виконання основних правил. Це також не обов'язково перешкоджає всім читам на стороні клієнта, як настінні стінки / маніпулювання пам'яттю, щоб обдурити клієнта у розкритті корисної інформації / тощо
Роб Ештон

10

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

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


+1 Щодо продуктивності, стохастичні підходи на зразок цього є єдиною реалістичною відповіддю на більш широкі питання, IMO. Крім OnLive, тобто якщо ви орієнтуєтесь лише на США.
Інженер

5

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

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

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

Як зазначив Тетрад у своїй відповіді, єдині жорсткі та швидкі правила "безпеки гри" - це надавати клієнту якомога менше інформації та довіряти клієнту якомога менше. До різних типів ігор пред’являться різні вимоги, які можуть вплинути на те, наскільки добре ви можете дотримуватися цих правил.

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

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


3

Усі відповіді вище чудові, але я додам ще один фрагмент:

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

Приклад, з яким я дуже добре знайомий: Starcraft 2. Один із способів, яким Blizzard блокує хакерів, - це отримання доказів обману під час повторення гри.

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

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

Тож це не техніка проти налагодження, це система звітів користувачів, яка дозволяє зручно підтверджувати обман з допомогою людини.


0

Це може бути не повною відповіддю, але я маю тут певний внесок. Один з найкращих способів запобігти обману - це опущення або використання C / C ++. Це не дозволяє людям змінювати код клієнта.


Варто згадати, що там багато деобфускаторів. Також ігри .Net (C #, XNA) можна змінювати за допомогою Reflection. З того, що я знаю, я думаю, що C / C ++ дійсно є одним із способів ускладнити підробку коду.
user1306322

Так. Моя думка, якраз те, що обфускація запобігає нечитабельності легко декомпільованого коду, а компіляцію C / C ++ непросто, вони обидва хороші варіанти.
LiquidFeline

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

@CPP_Person: Насправді C досить відомий тим, що дуже легко зібрати. Зовсім інша справа для C ++, яка з точки зору компіляторів дійсно є досить складною мовою. Однак я не розумію, чому це має значення, наскільки легко скласти певну мову програмування - ви хочете не давати людям писати чіт-інструменти, а не писати хорошого компілятора - вони все одно використовуватимуть існуючий компілятор C ++ - виготовлення важко декомпіляція здається мені набагато цікавішою, ніж зробити компіляцію важкою.
Кайзерлуді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.