Por que editar a memória do cliente em alguns MMOs permite trapacear?

19

Por que editar a memória do cliente do jogo funciona? Por que tantas ferramentas de "proteção contra hackers" estão chegando com os clientes?

Se eu fosse projetar um jogo cliente-servidor, tudo aconteceria no servidor (a simulação do mundo do jogo) e os clientes seriam apenas consumidores passivos recebendo atualizações de status da parte do mundo perto de seus personagens, enviando apenas algumas informações como pressionamentos de teclas ou comandos de movimento / ação. Talvez eu esteja perdendo alguma coisa aqui, mas com esse design, qualquer hack como aumentar meu STR em 200 na memória do cliente (se o valor estiver presente) simplesmente não terá efeito.

A única explicação que posso pensar é que os jogos nos quais a edição de memória funciona permitem que partes da simulação sejam executadas no cliente e no servidor e depois sincronizem todos os clientes periodicamente. Entendo que o design para jogos de estratégia em tempo real com um número fixo de jogadores depois que uma partida é configurada, mas por que nos MMORPGs? É uma estratégia para reduzir a carga do servidor?

Hatoru Hansou
fonte
2
Além da carga do servidor, também há um problema de latência. Por exemplo, o Minecraft lida com todo o movimento do lado do cliente simplesmente porque é a solução mais fácil (fora do movimento puro do lado do cliente, previsão do lado do cliente ou movimento lento). (Minecraft não tem estrutura previsão como é normalmente um jogo de ritmo lento, por isso, prever o movimento seria um monte de trabalho e, possivelmente, não confiável)
user253751

Respostas:

21

Embora seja ideal, é praticamente improvável validar todas as entradas em relação ao servidor, tanto em termos de carga computacional quanto em latência na confirmação de entrada para o cliente.

Consequentemente, geralmente existem algumas coisas que não são validadas no servidor em muitos MMOs. Em alguns casos, isso inclui certas classes de movimento de personagens, razão pela qual existem hackers de teletransporte e velocidade. As proteções do lado do cliente ajudam a fornecer uma barreira extra a esses hacks, embora, é claro, com tempo suficiente eles possam ser ignorados. Para combater isso, muitos desses jogos empregariam uma estratégia de registro e verificação posterior e rotação das proteções reais empregadas.

Há também a questão da tela de outros hacks simples de captura de memória que podem coletar informações e transmitir pressionamentos de tecla e outras entradas de volta através do cliente mais rapidamente do que um humano normalmente pode reagir. Ou podem procurar informações que possam ser transmitidas ao cliente, mas ainda não necessariamente visíveis (como as posições das criaturas que estão por perto, mas ainda não foram exibidas em nenhum lugar, como era comum nos primeiros hacks de mapas do Diablo).


fonte
Isso explicaria o interesse em olhar para a memória do cliente do jogo e o interesse em impedir que isso acontecesse. O hack de teletransporte que eu vi pessoalmente no último jogo que joguei.
Hatoru Hansou
2
Curiosamente, o jogo Ark: Survival Evolved diz que eles têm tudo validado no servidor (até as entradas, iirc). Não é exatamente um MMO do tipo WoW, mas suporta servidores de 70ppl em alfa (mais toneladas de dinossauros npc e estruturas criadas por jogadores). Você certamente pode sentir o atraso, mas está melhorando. Eu imagino que isso se tornará cada vez mais popular à medida que a tecnologia melhorar.
Slicedtoad
5
"70 pessoas" é pelo menos uma ordem de magnitude (várias, de fato) menos pessoas por servidor do que os MMOs nos quais trabalhei. Lembre-se também de que quase todo mundo diz que faz tudo no servidor, simplesmente como uma maneira de não ajudar os hackers a desenvolverem hacks.
@slicedtoad Eu estava prestes a mencionar isso. Observe que, como a maioria dos MMOs usa instanciação de qualquer maneira, o método ARKs pode funcionar dentro deles. Ainda não é possível (ainda) fazer isso para grandes quantidades de jogadores.
Mast
10

Uma das razões pelas quais existem proteções é que a leitura do estado do jogo pode permitir que os bots saibam o estado do jogo e ajam de acordo.

Por exemplo, triturando em um MMO: se o "bot" sabe o que há em torno da multidão, ele pode enviar comandos para os clientes do jogo para selecionar a multidão, atingi-la até que sua vida seja 0, pegar a pilhagem, enxaguar e repetir. Com isso, mesmo que todas as alterações na simulação sejam feitas / confirmadas no servidor, alguns jogadores podem trapacear. Os comandos podem ser enviados através de cliques ou teclas falsas do mouse ou através da gravação de memória.

Essa é uma das razões pelas quais os MMOs usam proteção de memória.

Vaillancourt
fonte
Ok, os bots têm mais sentido, mesmo que você não consiga se colocar no modo deus, ter um programa fazendo tudo por você também é trapaça. Mas, por que os "hackers" no jogo que eu estava jogando podem matar em um único hit? Isso não é uma indicação de editar a memória do jogo e o servidor de alguma forma validar essas alterações.
Hatoru Hansou
1
@HatoruHansou Sim. E a parte irritante é que o bot não tripulado pode funcionar por si só, então imagine um monte de 10 computadores monitorados por um único funcionário de ouro, personagens on-line e ativos 24 horas por dia ... seu MMO está arruinado. Alguns até terão um tratamento especial para outros jogadores ("Não fique no meu território, este é o meu quarto" (esteve lá. Lineage II no começo)).
Vaillancourt
Deixe a população de bot crescer sem controle e seu jogo poderá falir muito em breve. Ok, o bot por si só é suficiente para justificar as proteções anti-hack. Vou esperar mais um pouco antes de aceitar a resposta.
Hatoru Hansou
@HatoruHansou certeza :) Eu não tenho certeza se tenho todas as razões para a proteção da memória de qualquer maneira :)
Vaillancourt
6

Muitos MMOs são projetados com previsão de acertos do lado do cliente. Portanto, se houver um acerto no cliente, ele enviará o resultado ao servidor que ocorreu um acerto. Nesse caso, o servidor não é verdadeiramente autoritário e, portanto, é possível trapacear.

Para ser honesto, se eu estivesse projetando um MMO, tornaria o servidor totalmente autoritário, com o cliente enviando apenas valores de entrada fixos para o servidor e o servidor resolvendo o resultado.

Quanto ao porquê isso ainda não foi feito por muitos MMOs, só consigo pensar em carga adicional de servidor e 'resposta retardada' que vem com um servidor totalmente autoritário, pois apenas quebra a sensação e a capacidade de resposta do jogo.

Greg Quinn
fonte
Isso explicaria a eficácia dos hacks de memória. Você tem alguns links para artigos / artigos sobre design de servidor não oficial?
Hatoru Hansou
4
A carga não é o único problema - a capacidade de resposta é a chave. Qualquer jogo em tempo real em rede deve empregar técnicas de ocultação de latência. Para garantir que todos concordem, o servidor deve ter uma maneira de ordenar os eventos que ocorreram em cada um dos clientes - tentando evitar situações como "eu atirei em você primeiro" "Não, eu atirei em você primeiro". Speedhacks para jogos como o Counter-Strike dependem do abuso dessa sincronização, manipulando a latência percebida pelo servidor etc. (é um dos motivos pelos quais a maioria dos servidores CS chuta jogadores com latência superior a 100-200ms).
Luaan
3
A menos que você esteja fazendo um jogo estritamente baseado em turnos, isso simplesmente não pode ser evitado. As latências sempre existirão e todos os computadores envolvidos no jogo em rede precisam concordar com um "tempo comum" para solicitar eventos. Mesmo com os melhores sistemas para gerenciar a latência, sempre haverá inconsistências, mas ficamos muito bons em escondê-las. O problema é que, assim que você começa a fazer essas pequenas coisas, é mais fácil deixar passar um bug sutil - digamos, permitindo que o cliente poste matando o mesmo monstro duas vezes se fingir que a segunda morte aconteceu antes da primeira morte. Está difícil .
Luaan