PACOTES
Oi amigos, estou precisando de mais uma ajudinha de vocês se possÃvel!
Amigos, eu tenho um servidor de jogo e estou sofrendo com um hack que criaram pra ele que modifica os dados enviados pro meu servidor fazendo com que por exemplo, ao invés da pessoa ter por exemplo 10 mil de vida, tem 30 ou o quanto ela quiser, porque o hack edita os pacotes que meu jogo.exe manda pro host!
Por isso queria saber se alguém sabe como eu faço pra criptografar os dados (pacotes) de rede que o jogo.exe envia para meu host fazendo assim com que o hack não funcione, o jogo.exe não foi criado por mim, é um servidor de jogo por isso o jogo já tem seu .exe especÃfico, só quero sabe se tem como eu criptografar ou algo do tipo, que um especÃfico executável, no caso o jogo.exe envia de pacotes, por exemplo:
A baixo um exemplo do que eu preciso!
jogo.exe = pacotes de dados = host = lê e salva os pacotes enviados pelo jogo.exe
Agora o que eu gostaria de fazer:
jogo.exe = pacotes criptografados = host = decripta e salva os pacotes enviados
Resumo: Tudo os dados que o jogo.exe envia para o host preciso que seja criptografado e que o host consiga descriptografar o que o jogo.exe envia para assim poder salvar os dados recebidos!
Agradeceria muito mesmo, se alguém pudesse me ajudar com isso ^ ^
Amigos, eu tenho um servidor de jogo e estou sofrendo com um hack que criaram pra ele que modifica os dados enviados pro meu servidor fazendo com que por exemplo, ao invés da pessoa ter por exemplo 10 mil de vida, tem 30 ou o quanto ela quiser, porque o hack edita os pacotes que meu jogo.exe manda pro host!
Por isso queria saber se alguém sabe como eu faço pra criptografar os dados (pacotes) de rede que o jogo.exe envia para meu host fazendo assim com que o hack não funcione, o jogo.exe não foi criado por mim, é um servidor de jogo por isso o jogo já tem seu .exe especÃfico, só quero sabe se tem como eu criptografar ou algo do tipo, que um especÃfico executável, no caso o jogo.exe envia de pacotes, por exemplo:
A baixo um exemplo do que eu preciso!
jogo.exe = pacotes de dados = host = lê e salva os pacotes enviados pelo jogo.exe
Agora o que eu gostaria de fazer:
jogo.exe = pacotes criptografados = host = decripta e salva os pacotes enviados
Resumo: Tudo os dados que o jogo.exe envia para o host preciso que seja criptografado e que o host consiga descriptografar o que o jogo.exe envia para assim poder salvar os dados recebidos!
Agradeceria muito mesmo, se alguém pudesse me ajudar com isso ^ ^
Não tem como, por mais que você possa criptografar os dados enviados sempre é possÃvel modificar os dados antes dele ser criptografado, sem contar que você mesmo disse que o jogo não foi criado por você então como você espera adicionar criptografia no jogo sem o código fonte dele? E mais, teria ainda que modificar não só o jogo como o servidor também, afinal o servidor precisaria saber descriptografar os dados.
O problema ai é como o jogo foi feito, se o jogo deixa o cliente dizer o quanto tem de vida infelizmente o erro é esse, quem deveria dizer o quanto o cliente tem de vida é o servidor, se criptografia resolvesse alguma coisa não existiriam servidores piratas de jogos como Ultima Online ou WoW, entre outros, afinal eles são criptografados e mesmo assim essa criptografia foi quebrada.
O problema ai é como o jogo foi feito, se o jogo deixa o cliente dizer o quanto tem de vida infelizmente o erro é esse, quem deveria dizer o quanto o cliente tem de vida é o servidor, se criptografia resolvesse alguma coisa não existiriam servidores piratas de jogos como Ultima Online ou WoW, entre outros, afinal eles são criptografados e mesmo assim essa criptografia foi quebrada.
Olá OCELOT
Muito obrigado pela explicação, mais eu pensei assim, e teria como eu criar alguma coisa que o servidor reconhecesse que aquele cliente (jogo.exe) fosse o verdadeiro?
Por exemplo, o que acontece é que o hack ele cria um novo cliente pra logar no jogo, isso é fácil de fazer, mais o problema, é que não adianta fazer nada se qualquer um pode criar um cliente pra logar e assim usar o hack, o que eu pensei foi em criar algum comando ou código que o host recebe antes de ler os dados recebidos, por exemplo, o meu jogo se isso der certo vai rodar com 2 programas, o jogo.exe e esse programa que quero fazer pra proteger desse hack, o que eu penso que resolveria meu caso!
Não sei se tem como mais se tiver resolve, fazer com que o host reconheça o hash ou algo do tipo do jogo.exe que esteja mandando os pacotes pra ele, assim qualquer jogo.exe que fizerem não vai conseguir usar o hack porque o hash vai ser diferente e ninguém sabe que é isso que está bloqueando!
Será que tem como fazer isso?
Muito obrigado pela explicação, mais eu pensei assim, e teria como eu criar alguma coisa que o servidor reconhecesse que aquele cliente (jogo.exe) fosse o verdadeiro?
Por exemplo, o que acontece é que o hack ele cria um novo cliente pra logar no jogo, isso é fácil de fazer, mais o problema, é que não adianta fazer nada se qualquer um pode criar um cliente pra logar e assim usar o hack, o que eu pensei foi em criar algum comando ou código que o host recebe antes de ler os dados recebidos, por exemplo, o meu jogo se isso der certo vai rodar com 2 programas, o jogo.exe e esse programa que quero fazer pra proteger desse hack, o que eu penso que resolveria meu caso!
Não sei se tem como mais se tiver resolve, fazer com que o host reconheça o hash ou algo do tipo do jogo.exe que esteja mandando os pacotes pra ele, assim qualquer jogo.exe que fizerem não vai conseguir usar o hack porque o hash vai ser diferente e ninguém sabe que é isso que está bloqueando!
Será que tem como fazer isso?
Não adianta, por mais que você pudesse mandar um hash ou coisa do tipo o cliente com hack poderia simular isso também e não tem como o servidor diferenciar se quem está mandando é o cliente original ou o com hack, afinal a comunicação é apenas uma sequencia de bytes, que inclusive pode ser interceptada e alterada.
Tem jogos que usam programas guardiões que verificam se tem algum hack rodando junto com o jogo, mas com isso só da pra saber se tem alguma coisa se o que for usado for conhecido, e geralmente é fácil criarem outro hack que não seja detectado.
A única coisa eficiente em jogos é a verificação no lado do servidor, o servidor tem que saber se o que o cliente está mandando está correto ou não, no caso a vida não deveria ser controlada pelo cliente, só pelo servidor, se fosse assim seria impossÃvel algum cliente modificar a própria vida, mas isso só é possÃvel fazer com o fonte do jogo e do servidor, o que não é o seu caso eu acredito.
Se for algum jogo conhecido eu diria para você procurar fóruns sobre a criação de servidores dele para ver o que os outros falam de como proteger o servidor de hacks.
Tem jogos que usam programas guardiões que verificam se tem algum hack rodando junto com o jogo, mas com isso só da pra saber se tem alguma coisa se o que for usado for conhecido, e geralmente é fácil criarem outro hack que não seja detectado.
A única coisa eficiente em jogos é a verificação no lado do servidor, o servidor tem que saber se o que o cliente está mandando está correto ou não, no caso a vida não deveria ser controlada pelo cliente, só pelo servidor, se fosse assim seria impossÃvel algum cliente modificar a própria vida, mas isso só é possÃvel fazer com o fonte do jogo e do servidor, o que não é o seu caso eu acredito.
Se for algum jogo conhecido eu diria para você procurar fóruns sobre a criação de servidores dele para ver o que os outros falam de como proteger o servidor de hacks.
Obrigado OCELOT pelas suas explicações, eu vou deixar o tópico aberto, caso apareça alguém com alguma ideia vai ser perfeito, caso contrário daqui uns dias fecho ele e te do o ponto mais do que merecido pelas explicações ^ ^
Tópico encerrado , respostas não são mais permitidas