Perché la modifica della memoria del client in alcuni MMO consente loro di imbrogliare?


19

Perché la modifica della memoria del client di gioco funziona? Perché così tanti strumenti "Hack Protection" in arrivo con i clienti?

Se dovessi progettare un gioco client-server, tutto accadrebbe sul server (la simulazione del mondo di gioco) e i clienti sarebbero solo consumatori passivi che ricevono aggiornamenti di stato della parte del mondo vicino ai loro personaggi, inviando solo alcune informazioni come sequenze di tasti o comandi di spostamento / azione. Forse mi manca qualcosa qui, ma con quel design, qualsiasi hack come aumentare il mio STR di 200 nella memoria del client (se il valore è presente), non avrà alcun effetto.

L'unica spiegazione che posso pensare è che i giochi in cui funziona la modifica della memoria consentono l'esecuzione di parti della simulazione nel client e nel server, quindi sincronizzano periodicamente tutti i client. Posso capire quel design per i giochi di strategia in tempo reale con un numero fisso di giocatori dopo aver configurato una partita, ma, perché nei MMORPG? È una strategia per ridurre il carico del server?


2
Oltre al carico del server, c'è anche un problema di latenza. Ad esempio Minecraft gestisce tutto il movimento lato client semplicemente perché è la soluzione più semplice (dal puro movimento lato client, previsione lato client o movimento lento). (Minecraft non ha un framework di previsione in quanto è normalmente un gioco a ritmo lento, quindi prevedere il movimento sarebbe molto lavoro e probabilmente inaffidabile)
user253751

Risposte:


21

Sebbene ideale, è praticamente impossibile convalidare ogni singolo input sul server, sia in termini di carico computazionale che di latenza nella conferma dell'input per il client.

Di conseguenza, in molti MMO esistono di solito una manciata di cose non convalidate sul server. In alcuni casi questo include alcune classi di movimento dei personaggi, motivo per cui esistono teletrasporto e hack di velocità. Le protezioni sul lato client aiutano a fornire un ulteriore ostacolo a quegli hack, anche se ovviamente con un tempo sufficiente possono essere aggirati. Per combattere questo, molti di questi giochi impiegherebbero una strategia di registrazione e verifica post-fatti e rotazione delle protezioni effettivamente impiegate.

C'è anche il problema di schermare altri semplici hack di memoria che possono raccogliere informazioni e trasmettere la pressione dei tasti e altri input attraverso il client più velocemente di quanto un umano possa normalmente reagire. Oppure possono cercare informazioni che possono essere trasmesse al cliente ma non necessariamente ancora visibili (come le posizioni delle creature che sono vicine ma non ancora visualizzate da nessuna parte, come era comune nei primi hack di mappe di Diablo).


Ciò spiegherebbe l'interesse a guardare la memoria del client di gioco e l'interesse a impedire che ciò accada. L'hack di teletrasporto che ho visto personalmente nell'ultima partita a cui ho giocato.
Hatoru Hansou,

2
È interessante notare che il gioco Ark: Survival Evolved dice che hanno tutto convalidato sul server (fino agli input, iirc). Non esattamente un MMO di tipo WoW ma supporta server 70ppl in alpha (oltre a tonnellate di dinos npc e strutture costruite da giocatori). Puoi sicuramente sentire il ritardo ma sta migliorando. Immagino che questo diventerà sempre più popolare man mano che la tecnologia migliorerà.
slicedtoad

5
"70 persone" è almeno un ordine di grandezza (molte, in effetti) meno persone per server rispetto agli MMO su cui ho lavorato supportato. Inoltre, tieni presente che quasi tutti affermano di fare tutto sul server, semplicemente per non dare agli hacker un vantaggio nello sviluppo di hack.

@slicedtoad Stavo per dirlo. Si noti che dal momento che la maggior parte dei MMO usano l'istanziamento, quindi il metodo ARK potrebbe funzionare all'interno di questi. Non è fattibile (ancora) farlo per grandi quantità di giocatori.
Mast

10

Uno dei motivi per cui esistono protezioni è che la lettura dello stato del gioco potrebbe consentire ai robot di conoscere lo stato del gioco e agire di conseguenza.

Ad esempio, macinare in un MMO: se il "bot" sa quale mob è in giro, può inviare comandi ai client di gioco per selezionare il mob, premerlo fino a quando la sua vita è 0, raccogliere il bottino, sciacquare e ripetere. Con questo, anche se tutte le modifiche alla simulazione vengono apportate / confermate sul lato server, alcuni giocatori potrebbero imbrogliare. I comandi possono essere inviati tramite clic o scorciatoie da mouse falsi o tramite la scrittura della memoria.

Questo è uno dei motivi per cui gli MMO usano la protezione della memoria.


Ok, i robot hanno più senso, anche se non riesci a metterti in modalità god, avere un programma che fa tutto per te è anche barare. Ma perché gli "hacker" nel gioco a cui stavo giocando possono uccidere in un singolo colpo? Non è forse un'indicazione della modifica della memoria di gioco e del server che convalida in qualche modo quei cambiamenti.
Hatoru Hansou,

1
@HatoruHansou Sì. E la parte fastidiosa è che il bot senza pilota può funzionare da solo, quindi immagina un gruppo di 10 computer monitorati da un singolo impiegato del coltivatore d'oro, personaggi online e attivi 24 ore al giorno .... il tuo MMO è rovinato. Alcuni avranno anche una gestione speciale per gli altri giocatori ("Non rimanere sul mio territorio, questa è la mia stanza" (ci sono stato ... Lineage II all'inizio)).
Vaillancourt

Lascia che la popolazione di bot cresca senza controllo e il tuo gioco potrebbe finire presto. Ok, il bot da solo è sufficiente per giustificare le protezioni anti hack. Aspetterò ancora un po 'prima di accettare la risposta.
Hatoru Hansou,

@HatoruHansou sicuro :) Non sono sicuro di avere comunque tutti i motivi per proteggere la memoria :)
Vaillancourt

6

Molti MMO sono progettati con previsione dei risultati sul lato client. Quindi, se c'è un hit sul client, invia quel risultato al server che c'è stato un hit. In questo caso il server non è veramente autorevole, quindi è possibile imbrogliare.

Ad essere onesti, se stavo progettando un MMO, renderei il server completamente autorevole, con il client che inviava solo valori di input bloccati al server e il server risolveva il risultato.

Per quanto riguarda il motivo per cui questo non è stato ancora fatto da molti MMO, posso solo pensare al carico aggiuntivo del server e al "ritardo di risposta" che deriva dall'avere un server completamente autorevole, in quanto rompe solo la sensazione e la reattività del gioco.


Ciò spiegherebbe l'efficacia degli hack di memoria. Hai dei collegamenti ad articoli / articoli su nessuna progettazione di server autorevole?
Hatoru Hansou,

4
Il carico non è l'unico problema: la reattività è la chiave. Qualsiasi gioco in tempo reale collegato in rete deve utilizzare tecniche di occultamento della latenza. Per assicurarsi che tutti siano d'accordo, il server deve avere un modo per ordinare gli eventi accaduti su ciascuno dei client, cercando di evitare situazioni come "Ti ho sparato per primo" "No, ti ho sparato per primo". Gli speedhack per giochi come Counter-Strike si basano sull'abuso di questa sincronizzazione manipolando la latenza percepita dal server ecc. (È uno dei motivi per cui la maggior parte dei server CS calcia i giocatori con latenza superiore a 100-200ms).
Luaan,

3
A meno che tu non stia realizzando un gioco a turni, questo semplicemente non può essere evitato. Le latenze esisteranno sempre e tutti i computer coinvolti nel gioco in rete devono concordare un "orario comune" per ordinare gli eventi. Anche con i migliori sistemi per gestire la latenza, ci saranno sempre incoerenze, ma siamo diventati molto bravi a nasconderle. Il problema è che una volta che inizi a fare queste piccole cose, è più facile lasciar passare un insetto sottile - diciamo, permettendo al cliente di postare uccidendo lo stesso mostro due volte se pretende che la seconda uccisione sia avvenuta prima della prima uccisione. È difficile .
Luaan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.