Punkbuster istnieje tylko po to, by zapobiegać oszukiwaniu, a jednak oszukiwanie jest powszechne w grach obsługujących punkbuster. Modern Warefare 2 jest poważnie zablokowany przed użytkownikiem końcowym prowadzącym własny serwer lub wprowadzającym modyfikacje, a oszustwo odbywa się nieustannie.
W przypadku gry wieloosobowej, w której każdy klient działa na komputerze, co można zrobić, aby ograniczyć lub wyeliminować oszustwo?
multiplayer
anti-cheat
security
kevin42
źródło
źródło
Odpowiedzi:
To zależy od tego, jak oszukują, skupiając się na jednym z podstawowych sposobów tworzenia kodów, innych procesach zaczepiających się w twoją aplikację i modyfikujących ją - możesz wyliczyć wszystkie inne procesy i zaczepić ich metody manipulacji pamięcią oraz ich emulację klawiatury / myszy metody
Wallhacki są zwykle pisane przez wstrzykiwanie kodu między twoim procesem a bibliotekami DirectX / GL, aby ustawić przezroczystość materiałów, aby były widoczne. Możesz dodać trochę kodu do swojego scenegraph / culling system, aby nie rysować innych graczy / użytecznych bytów, jeśli są za murami (aby zapobiec oszukiwaniu w ten sposób).
Jeśli wybierasz grę wieloosobową i chcesz zapobiec modyfikowaniu pakietów między klientem / serwerem, wówczas utworzenie sumy kontrolnej danych, które wysyłasz za pomocą własnego algorytmu, i sprawdzenie tego, jak przechodzi przez drugą stronę, może być skuteczne. (Prawdopodobnie i tak to zrobisz dla różnych celów kontroli jakości).
To samo dotyczy większości zasobów w pamięci, tworząc sumę kontrolną na początku ramki i weryfikując ją na różnych etapach, można uzyskać całkiem przydatne wykrywanie manipulacji pamięcią.
Jest to dość zaangażowany temat, ale mam nadzieję, że ustawia cię w niejasnym kierunku.
źródło
W najbardziej ekstremalnym rozwiązaniu w zasadzie nigdy nie ufasz klientowi. W przypadku gier takich jak MMO użytkownicy nie uruchamiają swoich serwerów, a logika rozgrywki jest obsługiwana po stronie serwera. Nigdy nie udzielaj klientowi uprawnień do powiedzenia „Mam X zdrowia” lub „Mam X amunicji” itp.
źródło
Jeśli masz system, w którym logika jest droga i musi być wykonywana głównie na kliencie, aby oszczędzać cykle serwera, możesz wdrożyć probabilistyczny system wykrywania oszustw. Co kilka minut wybiera kilku różnych graczy do dokładnej inspekcji i kontroli spójności na serwerze. Ponieważ oszuści rzadko ograniczają oszustwo do krótkich i rzadkich okresów, w końcu zostaną złapani.
Kolejną zaletą tego jest to, że nie będą mieli szybkiego cyklu rozwoju - jeśli serwer potrzebuje 10 godzin gry, aby zwrócić na ciebie uwagę, to jest to 10-godzinny cykl zmian za każdym razem, gdy chcesz zobaczyć jeśli coś zadziałało. A jeśli to nie praca, to nawet dłużej, bo nie będzie wiedział, czy serwer został im dany thumbs-up lub po prostu nie ma zdobyć wokół nich.
źródło
Istnieje również wiele rodzajów hacków wspomagających celowanie dla strzelanek FPS, które działają również poprzez dołączanie do wywołań biblioteki graficznej. Hak OGC do Counter-Strike / HL1 miał wiele opcji poza tym, że ściany były przezroczyste.
Jeśli informacje o lokalizacji wrogów zostaną w pewnym momencie przekazane do biblioteki niższego poziomu, która ma szeroko dostępny kod, połączenia te można podłączyć, a dane dotyczące lokalizacji, skali, obrotu itp. Można wykorzystać do dokładnego obliczenia najlepszego wektora do odpalenia na tego wroga. Systemy anty-cheatowe, takie jak PunkBuster, często zawierają wykrywanie typu heurystycznego (jak często ten gracz dostaje idealne ujęcie, jak często obracają się o 180 stopni, aby zabić jednym strzałem itp.) Oprócz monitorowania pamięci i procesu.
Ostatecznie zadaniem zapobiegania oszustwom w grach wieloosobowych jest gra w kotka i myszkę. W miarę opracowywania nowych cheatów tworzone są nowe metody anty-cheatowe, a następnie tworzone są nowe cheaty w celu uniknięcia nowych technologii anty-cheat.
Jak powiedział Tetrad w swojej odpowiedzi, jedynymi twardymi i szybkimi zasadami „bezpieczeństwa gry” jest dostarczanie klientowi możliwie jak najmniej informacji i jak najmniejsze zaufanie do niego. Różne typy gier będą miały różne wymagania, które mogą mieć wpływ na to, jak dobrze będziesz przestrzegać tych zasad.
W grze FPS, ponieważ szybkość rozgrywki jest tak szybka, często nie jest możliwe podanie klientowi tylko danych, które powinien wiedzieć o tej właśnie chwili. Jeśli nie powiesz klientowi, że za rogiem jest wróg, a gracz rzuci się za ten narożnik, nagle musisz wysłać mu te informacje w ciągu milisekund lub ryzykować, że gracz zostanie zabity przez wroga, którego nie zrobił kiedykolwiek zobaczysz.
Jedyną „poprawką” dla tych problemów, która jest obecnie dostępna, jest prawdopodobnie OnLive. Ponieważ ta usługa dostarcza tylko treści audio i wideo od klienta działającego bezpiecznie w centrum danych, jedynym sposobem oszukiwania byłoby stworzenie ludzkiej sztucznej inteligencji, która mogłaby analizować przychodzący strumień wideo i podjąć działania w oparciu o to - zadanie, które niewielu, jeśli w ogóle, oszustów.
źródło
Wszystkie powyższe odpowiedzi są świetne, ale dodam kolejny kawałek:
Niektóre gry mają bardzo solidną funkcję odtwarzania, która pozwala zapisać powtórkę każdej gry po jej zakończeniu w kompaktowym formacie i oglądać ją na różne sposoby - różne perspektywy gracza, interfejs statystyk w czasie rzeczywistym i tak dalej.
Przykład, który znam bardzo dobrze: Starcraft 2. Jednym ze sposobów, w jaki Blizzard blokuje hakerów, jest otrzymywanie dowodów oszustwa podczas powtórki gry.
Przykładem użycia w FPS może być: jeśli grałeś w grę i podejrzewasz, że druga osoba oszukiwała za pomocą hakowania do ściany, oglądasz powtórkę, a potem widzisz, że w swojej normalnej wizji powtórek nie mógł widziałem cię i rzucasz granatem za róg, czy cokolwiek innego.
Następnie zgłaszasz mu powtórkę, a jeśli dowody przeciwko niemu są wystarczające, zostaje zbanowany. O ile mi wiadomo, firmy, które robią te rzeczy, zbierają tylko poważne dowody lub wiele źródeł dowodów tego samego zachowania przed banowaniem.
Nie jest to więc technika zapobiegająca debugowaniu, to system raportów użytkownika, który umożliwia wygodny dowód oszustwa z pomocą człowieka.
źródło
To może nie być pełna odpowiedź, ale mam tu pewien wkład. Jednym z najlepszych sposobów zapobiegania oszustwom jest zaciemnianie lub używanie C / C ++. Zapobiega to modyfikowaniu kodu klienta.
źródło