Dlaczego edycja pamięci klienta w niektórych grach MMO pozwala mu oszukiwać?

19

Dlaczego edycja pamięci klienta gry działa? Dlaczego tak wiele narzędzi „ochrony przed włamaniami” przychodzi wraz z klientami?

Gdybym zaprojektował grę klient-serwer, wszystko stałoby się na serwerze (symulacja świata gry), a klienci byliby tylko pasywnymi konsumentami otrzymującymi aktualizacje statusu części świata w pobliżu swoich postaci, wysyłając tylko niektóre informacje, takie jak naciśnięcia klawiszy lub polecenia move / action. Może coś mi tu brakuje, ale przy takim projekcie jakakolwiek próba podniesienia mojej STR o 200 w pamięci klienta (jeśli wartość w ogóle jest obecna), po prostu nie przyniesie żadnego efektu.

Jedyne wytłumaczenie, jakie mogę sobie wyobrazić, to to, że gry, w których działa edycja pamięci, pozwalają częściom symulacji uruchomić się na kliencie, a serwer synchronizuje okresowo wszystkich klientów. Rozumiem ten projekt gier strategicznych czasu rzeczywistego ze stałą liczbą graczy po skonfigurowaniu meczu, ale dlaczego w MMORPG? Czy to strategia zmniejszania obciążenia serwera?

Hatoru Hansou
źródło
2
Oprócz obciążenia serwera istnieje również problem z opóźnieniem. Na przykład Minecraft obsługuje wszystkie ruchy po stronie klienta po prostu dlatego, że jest to najłatwiejsze rozwiązanie (poza czystym ruchem po stronie klienta, prognozowaniem po stronie klienta lub opóźnionym ruchem). (Minecraft nie ma ram przewidywania, ponieważ jest to zwykle gra w wolnym tempie, więc przewidywanie ruchu byłoby dużo pracy i być może zawodne)
user253751

Odpowiedzi:

21

Chociaż jest to idealne, praktycznie niemożliwe jest sprawdzenie każdego pojedynczego wejścia względem serwera, zarówno pod względem obciążenia obliczeniowego, jak i opóźnienia w potwierdzeniu wejścia dla klienta.

W związku z tym zwykle w garściach MMO garść rzeczy nie jest sprawdzanych. W niektórych przypadkach obejmuje to pewne klasy ruchu postaci, dlatego istnieją teleportacje i szybkie hacki. Zabezpieczenia po stronie klienta stanowią dodatkową barierę dla tych włamań, chociaż oczywiście przy wystarczającym czasie można je ominąć. Aby temu przeciwdziałać, wiele takich gier stosuje strategię rejestrowania i weryfikacji po fakcie oraz rotacji zastosowanych zabezpieczeń.

Istnieje również problem z ekranowaniem innych prostych hacków do usuwania pamięci, które mogą zestawiać informacje i przesyłać naciśnięcia klawiszy i inne dane z powrotem przez klienta szybciej, niż normalnie człowiek może zareagować. Lub mogą szukać informacji, które mogą zostać przesłane do klienta, ale niekoniecznie jeszcze widoczne (takie jak pozycje stworzeń, które są w pobliżu, ale nie są jeszcze nigdzie wyświetlane, jak to było często we wczesnych włamaniach do map Diablo).


źródło
To wyjaśniałoby zainteresowanie spojrzeniem na pamięć klienta gry i zainteresowanie zapobieganiem temu. Hack teleportacyjny, który widziałem osobiście w ostatniej grze, w którą grałem.
Hatoru Hansou,
2
Co ciekawe, gra Ark: Survival Evolved mówi, że wszystko zostało sprawdzone na serwerze (aż do wejść, iirc). Nie do końca MMO typu WoW, ale obsługuje serwery 70ppl w wersji alfa (plus tony dinozaurów NPC i struktur zbudowanych przez graczy). Z pewnością możesz poczuć opóźnienie, ale jest coraz lepiej. Wyobrażam sobie, że stanie się to coraz bardziej popularne wraz z rozwojem technologii.
slicedtoad
5
„70 osób” to co najmniej rząd wielkości (w rzeczywistości kilka) mniej osób na serwer niż obsługiwane MMO, nad którymi pracowałem. Pamiętaj również, że prawie wszyscy mówią, że robią wszystko na serwerze, po prostu po to, aby nie dać hakerom szansy na rozwój hacków.
@slicedtoad Chciałem o tym wspomnieć. Zauważ, że ponieważ większość MMO i tak używa instancji, więc metoda ARK może w nich działać. Po prostu nie jest to możliwe (jeszcze) zrobić to dla dużej liczby graczy.
Maszt
10

Jednym z powodów, dla których istnieją zabezpieczenia, jest to, że odczyt stanu gry może pozwolić botom poznać stan gry i odpowiednio działać.

Na przykład grindowanie w MMO: jeśli „bot” wie, co znajduje się w pobliżu moba, może wysyłać polecenia do klientów gry, aby wybrać moba, uderzać go, dopóki jego życie nie wyniesie 0, podnieść łupy, spłukać i powtórzyć. Dzięki temu, nawet jeśli wszystkie zmiany w symulacji zostaną wprowadzone / potwierdzone po stronie serwera, niektórzy gracze mogą oszukiwać. Polecenia można wysyłać za pomocą fałszywych kliknięć myszą lub naciśnięć klawiszy lub poprzez zapisywanie w pamięci.

Jest to jeden z powodów, dla których MMO używają ochrony pamięci.

Vaillancourt
źródło
Ok, boty mają więcej sensu, nawet jeśli nie możesz wejść w tryb boga, posiadanie programu, który robi wszystko dla ciebie, również oszukuje. Ale dlaczego „hakerzy” w grze, w którą grałem, mogą zabić jednym uderzeniem? Czy to nie oznacza, że ​​edytowanie pamięci gry i serwera w jakiś sposób potwierdza te zmiany.
Hatoru Hansou
1
@HatoruHansou Tak. Irytujące jest to, że bezzałogowy bot może działać sam, więc wyobraź sobie grupę 10 komputerów monitorowanych przez jednego pracownika farmy złota, postaci online i aktywnych 24 godziny na dobę ... Twoja MMO jest zrujnowana. Niektórzy będą nawet mieli specjalną obsługę dla innych graczy („Nie zostań na mojej murawie, to mój pokój” (byłem tam ... Lineage II na początku)).
Vaillancourt
Pozwól, aby populacja botów rosła bez kontroli, a Twoja gra może wkrótce przestać działać. Ok, sam bot wystarczy, aby uzasadnić ochronę przed włamaniami. Zaczekam jeszcze chwilę, zanim zaakceptuję odpowiedź.
Hatoru Hansou
@HatoruHansou na pewno :) Nie jestem pewien, czy i tak mam wszystkie powody do ochrony pamięci :)
Vaillancourt
6

Wiele MMO zaprojektowano z przewidywaniem trafień po stronie klienta. Jeśli więc trafienie występuje na kliencie, wysyła ten wynik do serwera, że ​​nastąpiło trafienie. W takim przypadku serwer nie jest tak naprawdę autorytatywny, dlatego oszustwo jest możliwe.

Szczerze mówiąc, gdybym projektował MMO, uczyniłbym serwer w pełni autorytatywnym, przy czym klient wysyłałby tylko zablokowane wartości wejściowe do serwera, a serwer rozstrzygał wynik.

Co do tego, dlaczego wielu MMO tego jeszcze nie robi, mogę jedynie myśleć o dodatkowym obciążeniu serwera i „opóźnieniu odpowiedzi”, które wiąże się z posiadaniem w pełni autorytatywnego serwera, ponieważ po prostu psuje to odczucie i szybkość reakcji.

Greg Quinn
źródło
To by tłumaczyło skuteczność hacków pamięci. Czy masz jakieś linki do artykułów / artykułów na temat braku autorytatywnego projektu serwera?
Hatoru Hansou
4
Obciążenie to nie jedyny problem - kluczem jest szybkość reakcji. Każda gra sieciowa w czasie rzeczywistym musi wykorzystywać techniki ukrywania opóźnień. Aby upewnić się, że wszyscy się zgadzają, serwer musi mieć sposób na uporządkowanie wydarzeń, które miały miejsce na każdym z klientów - starając się unikać sytuacji takich jak „Najpierw zastrzeliłem cię” „Nie, najpierw zastrzeliłem cię”. Speedhacks w grach takich jak Counter-Strike polegają na nadużywaniu tej synchronizacji poprzez manipulowanie opóźnieniami postrzeganymi przez serwer itp. (Jest to jeden z powodów, dla których większość serwerów CS kopie graczy z opóźnieniami wyższymi niż 100-200ms).
Luaan,
3
O ile nie tworzysz gry ściśle turowej, nie da się tego uniknąć. Opóźnienia zawsze będą istnieć, a wszystkie komputery zaangażowane w grę sieciową muszą uzgodnić „wspólny czas” na zamówienie wydarzeń. Nawet przy najlepszych systemach do zarządzania opóźnieniami zawsze pojawią się niespójności, ale bardzo dobrze je ukrywamy. Problem polega na tym, że kiedy zaczniesz robić te drobne rzeczy, łatwiej jest pozwolić, aby subtelny błąd prześlizgnął się obok - powiedzmy, pozwalając klientowi dwukrotnie zabić tego samego potwora, jeśli udaje, że drugie zabójstwo nastąpiło przed pierwszym zabiciem. To trudne .
Luaan,