Logo Hardware.com.br
kyller
kyller Geek Registrado
3.7K Mensagens 43 Curtidas

Cheats e anticheats

#1 Por kyller 04/11/2008 - 14:21
Galera, eu não quero correr, ou seja, não estou pedindo ajuda pra criar um anticheat para o Quake3... nem sou usuário de cheats.
O que acontece é que eu jogo muito um mod dele, chamado UrbanTerror e atualmente o jogo está sem anticheats (o antigo, chamado Battleeye, saiu fora).

Eu estive conversando com 4 amigos meus que também jogam há anos, e estávamos lembrando como um antigo cara da comunidade fazia cheats tão bem, que era impossível detectar (é possível isso, dado as condições na qual o cheat dele atuava).

Eu não sou um completo perdido no assunto, mas também não sei nada demais, apenas lógica de programação e C.

A gente estava pensando, como q uma coisa dessas funciona? Por exemplo, um cheat classico pra FPS é um aimbot, mas o que vem a ser, em explicacoes técnicas? É um executavel que detecta as coordenadas da cabeca do adversario e atribui esse valor para as coordenadas da sua mira?
Alguém é experiente no assunto? Poderia me esclarecer um pouco?
E o anticheat? O que ele faz para detectar cheats, a principio?

Valeu
Jarod
Jarod Ubbergeek Registrado
7K Mensagens 52 Curtidas
#2 Por Jarod
05/11/2008 - 07:59
Olá Kyller, tudo bem?

Bom, o que você tem que ter em mente é que todas as informações do jogo são armazenada em algum lugar durante o jogo, geralmente na memória do computador. Vou dar um exemplo, um jogo de estratégia de guerra, (Rise of nations, único game que jogo Imagem) fica armazenado em algum lugar da memória quantos soldados eu tenho, a posição de cada um, e mais todas as informações.

Vou querer fazer um cheat para aumentar o número de soldados, bom tenho que acessar a memória ocupada pelo jogo e descobrir onde esta armazenada essa informação do número de soldados, aumentar o número, as posições de cada soldados, e dar as posições para cada um e tal.. etc...

Bom não é tão trivial assim, as empresa protegem a memória com diferentes métodos para impedir que isso seja fácil de fazer. Mas sabe como diz aquele ditado "se mais de uma pessoa souber, o segredo deixa de ser um segredo"! Você consegue bastante informação disso em sites gringos.

Sobre como acessar a memória de outros programas veja esse tutorial de C:
http://www.wesk.org/textos/darkside/1.html.

Espero ter ajudado!!!
Jarod.
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#3 Por Fergo
05/11/2008 - 12:20
Eu escrevi um artigo que fala exatamente sobre isso. No entanto, preferi usar a linguagem assembly (HLA) para a prova de conceitos. Se tiver interesse:
https://www.hardware.com.br/comunidade/v-t/775768/
Tanto o meu tutorial quanto o do Dark Side usam os mesmos passos para manipular a memória de outros aplicativos (é meio de praxe isso).

Ele cobre a etapa de identificação do local na memória onde está o valor em questão (utilizando um disassembler e um debugger) e posteriormente a programação do trainer. A parte mais complicada no processo é identificar o local de memória para alterar, principalmente quando esse local não é fixo (alocado dinâmicamente) e não se tem o auxílio de mensagens de texto para saber onde procurar, como no meu tutorial.
O anti-cheat é basicamente previnir que isso ocorra. Na maioria dos sistemas de proteção (PunkBuster e GameGuard pelo menos) eles fazem um "hook" na função WriteProcessMemory da API do Windows e verificam qual processo a chamou. Se não for o processo do jogo, ele entende como um aplicativo externo tentando mexer onde não deve e classifica isso como cheat/hack.

Abraços,
Fergo
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal