Atualmente, existem muitos programas que alteram a memória ( Cheat Engine & co). Existe uma maneira eficiente de manter uma variável constante realmente constante?
Eu tive duas idéias:
- Faça um thread separado atualizando a variável constante para um valor constante, por exemplo, 200 a cada minuto. Problema: Também é possível alterar o segundo valor.
- Armazene o valor no servidor. Problema: quero manter o tráfego de rede o mais baixo possível.
Eu preciso desse mecanismo para constantes e variáveis permitidas apenas para conter um determinado intervalo de valores.
Existem maneiras melhores de fazer isso?
anti-cheat
Michael
fonte
fonte
Respostas:
Se o seu jogo for singleplayer: não é possível, mas você não deve se importar .
Se o seu jogo for multiplayer: você deve armazenar todo o seu estado importante no servidor, o que é muito mais difícil de invadir do que uma máquina local.
fonte
x
danifiqueiy
".Isso não pode ser feito , https://security.stackexchange.com/a/4639 é sobre DRM, mas o mesmo se aplica a qualquer coisa que o usuário não deseje em seu computador, incluindo os mecanismos Anti-Cheat. (Que tem a tendência de ser ainda mais difícil de fazer do que DRM.)
Mas por que você, realmente, por que você? É o computador do seu cliente, não o seu, o cliente faz com o computador dele o que quer que ele queira fazer. Você não tem direitos sobre isso. Seu programa é removido se o cliente não gostar.
Para jogos multiplayer, não se trata de projetar o binário em execução, mas sim de projetar a comunicação. Deixar os usuários enviarem "ganhei com 20.000 pontos" não funciona, nem "tenho 2000 ouro" . Você precisará simular o jogo e deixar os jogadores enviarem o que estão fazendo, como "Ordenei que o soldado se movesse para o ponto X / Y" ou "Comprei o item número 43" , e não o resultado disso ações são. O servidor decide quais são os resultados e quem venceu no final.
Se for um jogo para um jogador com pontuação alta on-line, uma opção seria fazer com que o jogador envie uma repetição, simulá-la e decidir o resultado disso.
fonte
O primeiro não é eficaz e não impede que uma pessoa determinada ataque o seu jogo - e também é propenso a erros. No entanto, você pode torná-lo muito mais difícil , e não uma prova completa , se desejar. Algumas estratégias comuns estão disponíveis em toda a web, mas como outras pessoas mencionaram - você deve se perguntar se vale a pena.
Por uma questão de argumentos, eis algumas maneiras de impedir hackers em um ambiente de um jogador:
A alternativa, é claro, é apenas armazenar tudo no servidor e criar um servidor de jogo que seja um mestre. Isso não é apenas caro, requer manutenção e aumenta o tempo de desenvolvimento ... os fãs não ficam tão impressionados com a implementação de jogos populares como Diablo III . Ou aqui. Devo notar que, para um RPG online em flash como o Adventure Quest, esse modelo realmente está funcionando muito bem para eles.
Não posso fornecer muita orientação sobre como implementar esse tipo de abordagem, pois é muito amplo, amplo e requer muito planejamento. A base a saber é que o servidor decide tudo e o cliente nada mais é do que um simples console de entrada e exibição.
fonte
Muitas pessoas usam esses programas para procurar uma pontuação armazenada em uma variável, por exemplo
para fazer isso, eles precisam conhecer a pontuação, usualmente a partir da pontuação exibida no jogo.
Eu estava pensando, isso ajudaria a afastá-los ...
então quando você precisar exibir pontuação faça ...
isso fará com que os trapaceiros pesquisem o que eles acham que é a pontuação (a pontuação sendo exibida), para encontrar apenas o valor exibido.
A pontuação real será Score * randomVal armazenado em outro local. Eles não podem alterar a pontuação alterando o valor exibido.
isso ajudaria?
ps Eu não sou especialista, então vá com calma comigo lol.
fonte
Em relação aos jogos para um jogador , você não pode evitar trapaças, e não deveria .
Por que não consigo evitar trapacear no meu próprio jogo?
Como outras respostas apontaram, mesmo os melhores esforços podem ser potencialmente circunavegados por um único hacker e fornecidos ao restante da sua base de jogadores. Você ainda pode fazer um esforço contra isso, mas procure outras respostas para obter sugestões de como . Esta resposta significa poupar-lhe o problema, se o seu jogo pretender apenas fornecer jogabilidade para um jogador.
Por que devo deixar os jogadores trapacearem em um jogo para um jogador?
Para citar Sam ,
Isso erra completamente o ponto . Jogos são uma forma de entretenimento . Geralmente, sua base de jogadores está jogando seu jogo para se divertir . Se um jogador usa truques no seu jogo, há uma razão para ele estar usando truques. É seguro supor que não podemos garantir a definição de diversão de cada jogador; se eles usam truques , talvez essa seja a maneira deles de tornar seu jogo mais agradável para eles.
Como a trapaça torna um jogo mais agradável?
Embora todo indivíduo seja único, existem algumas condições em que os truques podem tornar um jogo mais divertido, em cima da minha cabeça:
Por que isso se aplica apenas a jogos para um jogador?
É importante enfatizar que isso só funciona em jogos para um jogador ; se o jogador disser que deseja usar truques para se divertir mais no jogo, nenhum dano será causado. Assim que houver vários jogadores no jogo, as façanhas desse primeiro jogador podem se tornar uma desvantagem injusta para os outros jogadores. Esta é a única situação real em que você não deve permitir trapacear.
fonte
O que uma ferramenta de invasão de memória faz?
Existem duas maneiras de operar a ferramenta de invasão.
O que você pode fazer sobre isso?
Você pode usar variáveis alocadas dinamicamente para armazenar variáveis do player, para que o endereço continue mudando na inicialização. Não haverá nenhum endereço fixo que um site de fraude possa listar.
Criptografe as variáveis do player: dimensionar o valor, adicionar uma constante, etc. Isso traz um novo problema: um hacker hardcore pode desmontar o seu programa e encontrar os números que você usa para criptografar as variáveis do player. Para isso, use números aleatórios. Você também pode escalar os valores das variáveis do seu player e adicionar um número aleatório, para que o número adicionado não altere significativamente o valor (adicionar 10 ou 20 a um valor escalonado de 2000 não faz muita diferença).
Certamente, algum hacker sério ainda pode encontrar maneiras de superar esses obstáculos, mas não será fácil.
Embora o código acima resolva alguns problemas sérios, ele ainda é decifrado. A única informação de que o hacker precisará é: as variáveis dos jogadores são acessadas por meio de um ponteiro (ele também pode descobrir desmontando o jogo, mas isso vai ser chato e difícil). Uma vez que o hacker tenha o endereço para as variáveis do seu jogador, juntamente com outras variáveis aleatórias secretas, será uma tarefa fácil para ele desenvolver uma trapaça.
Na minha opinião, sem desmontar, você realmente não pode escrever uma ferramenta de hack para esse sistema. O resultado é imprevisível, pois você adicionará um número aleatório às variáveis do jogador cada vez que for modificado. O intervalo em que as variáveis do player são armazenadas também não é o mesmo em toda inicialização.
O que mais você pode fazer?
Continue alterando o endereço das variáveis do player ocasionalmente. Isso dificulta a legibilidade do código? Bem, isso ocorre até certo ponto, mas você pode abstrair todo o processo em uma única classe que possui comentários bem explicados. A interface fornecida pela classe terá funções simples de Set / Get. O programador frontend não precisaria se preocupar com a complexidade subjacente.
fonte
Economia:
Se você deseja fortalecer seu jogo contra trapaceiros, a melhor maneira é comprar uma solução de software que faça isso por você. Existem vários provedores, e você pode encontrar alguns deles pesquisando no Google "anti-fraude quebra meu jogo" .
Os profissionais são muito melhores na prevenção de truques do que você e muito melhores em não interromper o jogo do que você (e ainda não conseguem 100%, em nenhum deles). Portanto, se você achar que há valor em colocar essa solução em seu jogo, compre-a. Fazer o seu próprio será muito mais caro.
Uma pergunta relacionada é "existe valor no uso de software anti-fraude?". A resposta é: não, a menos que uma parte decente do seu jogo dependa de um modo competitivo online.
fonte
A única maneira de proteger seu jogo contra modificações e edição de memória é torná-lo ONLINE e processar valores vitais no servidor .
Talvez você possa criptografar os valores para que as edições novinhas de memória não cheguem a eles, mas todas as comunidades, como Cheat Engine , GameGuarian para Android, ArtMoney, Game Hacker etc. lado e mostre aos outros como fazê-lo ou publicar treinadores.
É um esforço inútil para tentar impedir os trapaceiros na minha opinião. Também não é realmente justo, já que é o dispositivo deles e se eles querem editar as coisas que acontecem no dispositivo, por que você as impediria? O cliente é o rei afinal.
fonte
Quero dizer, não é tão difícil assim. Você pode manter 99% dos trapaceiros de edição de memória (aqueles Game Guardian , Cheat Engine afetados por valores simples de multiplicação. Mesmo multiplicar por 10 na memória manterá a maior parte do tempo.
Lembro-me de que muitos jogos em flash do dia se multiplicariam por 8 ou 6. Ou, se você for realmente sério, codifique algumas verificações ou criptografe os valores na memória.
fonte
Você não pode - repito que você não pode. Não há resposta para essa pergunta que não possa ser desfeita por um bom hacker.
Mas e daí? Se alguém quiser trapacear no seu jogo (presumindo que não haja perda ou conquista monetária), quem se importa? Eles só se enganam.
Gaste mais tempo criando um ótimo jogo e menos tempo impedindo que os idiotas estragem sua própria diversão - simples.
fonte
Criptografar isso! Armazene números importantes divididos em vários locais, combinados com outros valores, para que eles mudem constantemente! Use números fictícios que, se alterados, dizem que eles são trapaceiros.
Tudo pode ser quebrado, mas a maioria não leva tempo para fazê-lo.
fonte
A maneira como eu lido com isso em jogos online é essa.
Eu não vou ajudar os hackers que tanto se importam comigo. Não mencionarei nenhum programa que eu use para fazer isso. Você terá que descobrir isso. A única maneira de realmente detê-los é saber uma coisa. Eles não querem que seu programa de hackers seja detectado.
Até agora, todos os usuários de hackers / treinadores que eu derrotei. O desenvolvedor do hack irá colocar um detector nele para ver se algo está assistindo. Se houver algo, o programa hacker / treinador será fechado automaticamente ou o trabalho será realizado apenas pela metade.
Por exemplo, na sujeira 3, os usuários do treinador podem fazer o carro girar automaticamente. Mas se você colocar um detector do seu lado, o próprio detector de fraudes detectará e fechará parte da fraude. Não tudo disso.
A única parte do programa de treinamento que eu vi efetivada pela minha intromissão é o super freio (frenagem perfeita) e o spinout (carro perdendo o controle sem motivo). Eu tenho principalmente jogos de corrida, como você pode ver. Eles são todos da codemasters e, infelizmente, esses jogos são abusados por trapaceiros com bastante frequência.
Acredito que só consigo detê-los por causa da maneira como nos conectamos enquanto jogamos. Provavelmente, é a mesma razão pela qual eles podem causar uma explosão para um jogador normal que não tem idéia sobre segurança.
Minha maior sugestão é obter um antivírus de segurança na Internet muito bom (Norton, Mcafee, Avast e todos os outros avos de merda não o ajudarão). Esteja disposto a gastar de US $ 50 a US $ 90 em um programa muito bom que eu não listei e, em seguida, aprenda a experimentar com ele para efetuar o jogo online.
É preciso muita paciência e muitas cobaias. Eu tive muito sucesso com isso, mas também muitos anos de experiência em lidar com usuários de instrutores. Não conheço nenhum código. Não tem nada a ver com isso. A parte do código está bloqueada e você não pode fazer nada sobre isso. Você pode pensar que pode, mas simplesmente não é possível parar o que eles estão fazendo.
Você ainda pode bani-los com coisas como o VAC, porque o Vac detecta assinaturas e certos comportamentos e modificações de arquivos que ele já conhece. Apenas proíbe a conta associada ao truque.
Na verdade, eles não param de trapacear. Eles não podem ser incomodados com isso. Eles apenas banem sua conta. A outra coisa que eu gostaria de mencionar tem a ver com Wolfenstein ET. Um jogo muito antigo. Mas para mim, tinha a melhor e mais dura medida de segurança de todas.
Eu nunca consegui ver como eles fizeram isso. Eu dei a eles a idéia sobre o que realmente impediria os trapaceiros e sugeri a um dos devolopers do jaymod que banisse por meio de guia. O que tem um guia de fácil acesso ao jogar? Placas gráficas. A razão pela qual eles implementaram isso é porque as pessoas mudam apenas os endereços IP e você não precisa de uma conta para o jogo, para que você possa mudar seu nome, seu endereço MAC, que também mudaria seu endereço IP.
Mas quando eles proibiram a placa gráfica. Se você quisesse jogar de novo, precisava comprar um cartão RMA ou comprar um novo. Isso é fora de questão. Supõe-se que isso seja sobre detecção e fui embora pela tangente. Infelizmente, não jogo quase tanto agora. Mas cara, eu amei todos os meus porcos. Especialmente os de carros de projeto. O único jogo de corrida que não era um mestre de códigos. Mas ainda efetuado pelo mesmo absurdo.
fonte