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?
źródło
Odpowiedzi:
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
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.
źródło
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.
źródło