Чому редагування пам'яті клієнта в деяких MMO дозволяє їм обманювати?


19

Чому редагування пам'яті ігрового клієнта працює? Чому так багато інструментів "Захист від зламу" приходять разом із клієнтами?

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

Єдине пояснення, на яке я можу подумати, - це те, що ігри, в яких працює редагування пам’яті, дозволяють частинам симуляції запускатися в клієнті та сервері, а потім періодично просто синхронізувати всіх клієнтів. Я можу зрозуміти, що дизайн для ігор стратегії в реальному часі з фіксованою кількістю гравців після налаштування матчу, але чому в MMORPG? Це стратегія зменшення завантаження сервера?


2
Окрім завантаження сервера, існує також проблема із затримкою. Наприклад, Minecraft обробляє всі рухи на стороні клієнта просто тому, що це найпростіше рішення (з чистого руху на стороні клієнта, передбачення на стороні клієнта або з відсталим рухом). (У Minecraft немає рамки передбачення, оскільки це звичайно гра з повільним темпом, тому передбачення руху буде багато роботи і, можливо, ненадійним)
user253751

Відповіді:


21

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

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

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


Це пояснило б інтерес до перегляду пам’яті клієнта гри та зацікавлення у запобіганні цьому. Телепортаційний хак, який я особисто бачив в останній грі, в яку я грав.
Хатору Хансу

2
Цікаво, що гра Ark: Survival Evolved говорить, що у них все перевірено на сервері (аж до входів, iirc). Не зовсім тип WoW типу MMO, але він підтримує 70ppl-сервери в альфа (плюс тонни npc динозаврів і вбудованих в програму). Ви, звичайно, можете відчути відставання, але воно стає краще. Я думаю, що це стане все більш популярним у міру вдосконалення технології.
нарізанийдо

5
"70 людей" - це принаймні на порядок (на кілька, насправді) менше людей на одному сервері, ніж підтримувані ММО, над якими я працював. Також пам’ятайте, що майже всі кажуть, що вони роблять все на сервері, просто як спосіб не дати хакерам ноги на розробку хак.

@slicedtoad Я збирався це згадати. Зауважте, що оскільки більшість MMO так чи інакше використовують екземпляр, то метод ARK може працювати всередині них. Це просто неможливо (поки) робити це для великої кількості гравців.
Щогли

10

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

Наприклад, шліфування в MMO: якщо "бот" знає, що таке моб, він може надсилати команди клієнтам ігор, щоб вибрати мобу, натискати, поки термін його життя не досягне 0, забрати лут, промити та повторити. З цим, навіть якщо всі зміни в моделюванні зроблені / підтверджені на стороні сервера, деякі гравці можуть обдурити. Команди можна надсилати за допомогою фальшивих клацань миші чи спаду клавіш, або через запис пам'яті.

Це одна з причин, чому ММО використовують захист пам’яті.


Гаразд, боти мають більше сенсу, навіть якщо ви не можете перевести себе в режим бога, якщо програма, яка все робить для вас, теж обман. Але, чому "хакери" в грі, в яку я грав, можуть вбити в одному хіті? Хіба це не вказівка ​​на редагування ігрової пам’яті та сервера якимось чином підтверджуючи ці зміни.
Hatoru Hansou

1
@HatoruHansou Так. І прикрою частиною є те, що безпілотний бот може працювати сам, тому уявіть собі купу 10 комп’ютерів, які контролюються одним співробітником фермера золота, персонажами в Інтернеті та активними 24 години на день .... ваш MMO розорений. Деякі навіть матимуть спеціальну обробку для інших гравців ("Не затримуйся на моєму газоні, це моя кімната" (був там. Lineage II на початку)).
Vaillancourt

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

@HatoruHansou впевнений :) Я не впевнений, що в мене все є причини захисту пам’яті :)
Vaillancourt

6

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

Якщо чесно, якщо я розробляв MMO, я зробив би сервер повністю авторитетним, клієнт лише надсилав зафіксовані вхідні значення на сервер, а сервер вирішує результат.

Що стосується того, чому це ще не робиться багатьма MMO, я можу лише думати про додаткове завантаження сервера та «відставання у відповіді», що пов'язано з наявністю повністю авторитетного сервера, оскільки це просто порушує почуття та чуйність гри.


Це пояснило б ефективність роботи хак-пам'яті. Чи є у вас посилання на статті / статті про відсутність авторитетного дизайну сервера?
Хатору Хансу

4
Навантаження - не єдина проблема - ключова реакція. Будь-яка мережева гра в режимі реального часу повинна використовувати методи приховування затримки. Щоб переконатися, що всі згодні, сервер повинен мати спосіб впорядкувати події, що сталися з кожним із клієнтів - намагаючись уникнути ситуацій, таких як "Я застрелив тебе першим" "Ні, я застрелив тебе першим". Speedhacks для таких ігор, як Counter-Strike, покладаються на зловживання цією синхронізацією, маніпулюючи затримкою, сприйнятою сервером і т. Д. (Це одна з причин, коли більшість серверів CS б'є гравців із затримкою вище 100-200 мс).
Луань

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