Apresento a vocês o mais novo cliente anti-cheat composto pelo Viper Launcher AC e Viper Server AC.
Este é diferente de todos até então desenvolvidos e possui uma performance muito superior.
Agora o servidor do jogo não precisa utilizar a biblioteca sockets, pois a comunicação é intermediada por um servidor executado a parte.
O servidor é multi-threaded, logo os pacotes são recebidos de forma assíncrona, proporcionando uma comunicação mais saudável.
A proposta é um launcher que divulga os servidores que o utilizam para que os jogadores possam ter acesso fácil a eles simplesmente através de um clique e com uma garantia maior de que sua jogabilidade não será afetada por consequência de hackers.
Como funciona:
- Servidor:
Basicamente, quando executar o servidor na VPS automaticamente vai liberar o acesso a determinada porta e autorizar as conexões dos clientes.
A comunicação entre o servidor e o cliente acontece de forma criptografada, de forma que mesmo que os dados sejam interceptados, não seja possível manipulá-los.
- Cliente:
Ao executar o cliente, o mesmo irá baixar a lista de servidores que possuem o anti-cheat.
Após selecionar o servidor, basta escolher um nome e clicar em "PLAY" para que o launcher inicie sua comunicação com o servidor e execute o jogo automaticamente.
O cliente efetua análises periódicamente e envia ao servidor de forma criptografada.
- Servidor SA:MP:
O servidor utiliza uma biblioteca que apenas facilita a interpretação dos resultados do anti-cheat.
Na pasta scriptfiles deve haver uma pasta chamada "VAC" e dentro dela deve haver a pasta "Connected" (são criadas automaticamente pelo Viper Server).
"Connected" - Contém os jogadores conectados com o launcher, contendo a análise do jogador. Ao desconectar o arquivo é removido automaticamente.
Na biblioteca que gerencia as análises, haverão as seguintes funções:
- Cliente:
Apesar de ser leve, seu código-fonte não possui nativamente nenhum padrão de dados para análise. Não é necessário atualizar o banco de dados, visto que o mesmo baixa estes dados diretamente do servidor e a partir daí usa como base estas informações para análise.
- Servidor:
O servidor também não necessita muita manutenção, visto que ele possui um arquivo de configuração que serve para enviar aos clientes usar como banco de dados para análise e o mesmo pode ser alterado em tempo real, sem necessidade de reiniciá-lo.
Este arquivo é enviado toda vez que uma nova conexão é solicitada.
Tanto o servidor quanto o launcher possuem atualizações obrigatórias. É necessário baixar e atualizar os arquivos para poder seguir com a execução. (novo)
Segurança e privacidade:
O cliente deve ser inserido dentro da pasta do jogo, pois ele é um launcher e o jogo será executado através dele.
Pra maior segurança, o cliente nunca efetua quaisquer análises fora da pasta em que foi designado para operar. Única busca fora do ambiente é na lista de processos, exceto isso não existem outros mecanismos de busca.
O cliente armazena apenas informações referente a suspeitas. Nunca fará envio de arquivos, apenas NOMES de arquivos, pastas ou processos.
Configurações e análise:
O arquivo de configuração do servidor está em constante desenvolvimento, mas até então o que se encontra possível:
Verificar as propriedades para garantir a segurança e se alguma propriedade for diferente, o cliente será automaticamente desconectado
Permite autorizar determinada versão do anti-cheat
Permite autorizar determinado hash MD5 do cliente anti-cheat
Bloquear processos suspeitos
Bloquear início de nome (cheat*)
Bloquear final de nome (*engine)
Bloquear entre o nome (*engine*)
Bloquear nome extato (cheatengine)
Autorizar versões do SA:MP
Autoriza versões do SA:MP baseados no hash MD5 do executável
Autorizar arquivos (mods, data...) baseado em hash MD5
Autoriza um arquivo utilizando nome (mod.*), extensão (*.cs) ou ambos (mod.cs) juntamente com o hash MD5 do mesmo
Bloquear arquivos ou extensões de arquivos (revertido com a autorização de arquivos)
Bloqueia um arquivo através do nome (mod.*), extensão (*.cs) ou ambos (mod.cs)
Bloquear pastas
Bloqueia uma pasta através do nome (cleo)
Autorizar arquivos injetados
Autoriza um arquivo injetado utilizando nome (mod.*), extensão (*.asi) ou ambos (mod.asi) juntamente com o hash MD5 do mesmo
Bloquear arquivos ou extensões de arquivos injetados no jogo (revertido com a autorização de arquivos injetados)
Bloqueia um arquivo injetado através do nome (mod.*), extensão (*.dll) ou ambos (mod.dll)
Bloquear arquivos ou extensões de arquivos injetados no jogo (baseado em hash MD5 e revertido com a autorização de arquivos injetados)
Bloqueia um arquivo injetado através do hash MD5 do arquivo (os arquivos injetados podem ter seus nomes alterados)
OBS.: As análises de comparação de texto não diferenciam letras maiúsculas de minúsculas.
Exemplo de configurações de propriedade do cliente:
O arquivo é atualizado automaticamente durante a execução. (novo)
Atualmente não é possível agregar usuários de dispositivos móveis ou sistema operacional diferente de Windows para executar o Launcher.
Uma alternativa para manter todas as plataformas, é incentivar o uso deste launcher para quem utiliza Windows, de forma que possa ser beneficiado pelo servidor. Desta forma não há necessidade de expulsar jogadores que não o utilizam, mas sim compensar quem utiliza.
Agora o Viper Server possui suporte para Linux. (Novo)
Atualizações futuras:
Verificação de data modificada
Verificação de arquivos requeridos por parte do servidor (como data modificada ou mods necessários para pode jogar)
Proteção contra caixa de areia (OK)
Proteção contra bypass do cliente (OK)
Otimização geral (OK)
Instalação:
- Cliente:
Copie o programa para a pasta do gta que contenha o SA:MP instalado
Execute o programa
Selecione o servidor
Digite seu nickname
Clique em "PLAY" e o jogo abrirá diretamente no servidor selecionado
- Servidor:
Crie uma pasta com o nome "VAC" dentro do servidor do SA:MP
Copie o Viper Server e seus arquivos dentro desta pasta
Configure os arquivos "config.json" e "config.cfg"
Execute o servidor
- Biblioteca "vac.inc":
Copie o arquivo "vac.inc" para o diretório de includes
Adicione a seguinte linha abaixo da include a_samp: #include <vac>
Compile o servidor
Utilize as funções da include para trabalhar com o anti-cheat
Como funciona a comunicação:
Screenshots:
O layout está passando por ajustes e pode ser diferente das fotos abaixo, porém as instruções e objetos seguem iguais.
Servidor:
Cliente:
Em conexão:
Conclusão:
O projeto ainda está em desenvolvimento, porém os softwares já estão rodando normalmente, bem como a biblioteca para o SA:MP.
Precisa ainda lapidar a conexão e a segurança para garantir a integridade dos programas e da comunicação entre cliente e servidor.
Testes:
Estou firmando uma parceria com um servidor para por o primeiro lançamento em teste e, em breve, divulgarei IP e compilação do launcher.
Para demais interessados, posso conceder um acesso antecipado e suporte total para implementação.
Somos um servidor dedicado a proporcionar diversão através do clássico GTA San Andreas criado em 20 de Agosto de 2009. Nossa missão é criar uma experiência de simulação de vida real onde você pode trabalhar, votar, comprar carros e casas, além de participar de diversas missões emocionantes. Junte-se a nós e vivencie o melhor do SAMP de uma maneira totalmente nova e interativa!
Alguém pode me ajudar? Depois de muitos estudos descobri que os slots do servidor faz os objetos não carregar, se eu colocar 50 slots carrega normal os objetos do servidor, se eu aumentar para 113 slots o servidor não carrega os objetos, por que isso acontece? Alguem já passou por isso? Qual a solução?
Fiz um sistema onde a pessoa junto com o veículo dele fosse sentado pro mundo aletorios. Os mundos seria aletorios onde os jogadores não conseguiram interagir entre eles, um ficando em mundo diferente junto com o veículo.
stock worldveh(worldvehicles)
{
new str[120];
SetVehicleVirtualWorld(playerid, worldvehicles);
format(str,sizeof(str), "O seu veiculo foi setado pro mundo", worldvehicles);
SendClientMessage(playerid, -1, str);
return 1;
}
Eu quero configurar esse velocimetro, o resto ja configurei agora so nao sei configurar essa box do combustivel, pois não sei colocar a txd para ir diminuindo. Por favor!!