14/06/2024 17:50
(Esta mensagem foi modificada pela última vez a: 11/07/2024 11:22 por Dr Editor.)
Viper Anti-Cheat
Introdução:
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:
VAC_IsPlayerActive(playerid)
VAC_GetPlayerFile(playerid)
VAC_GetData(const filename[], >a_instances, suspect_processes[], suspect_files[], suspect_folders[], suspect_inj_dll[], suspect_inj_dll_hash[])
VAC_SaveData(const ip[], const filename[])
Manutenção:
- 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)
Exemplo de configurações de propriedade do cliente:
O arquivo é atualizado automaticamente durante a execução. (novo)
Código:
ClientVersion=1.0.0.0
ClientHash=cadfda53a4140329b4d93512637d970e
Exemplo de configuração de análise:
Código:
{
"allowedSampVersion":
{
"0.3.7 R1": "c1aedd9f2dac8a7f79ed40d264b4df6d",
"0.3.7 R2": "c316560c5b925874ff30d49dcae42478",
"0.3.7 R3-1": "ba64bb37a1c6588fbca0075c3ddc4a2a",
"0.3.7 R4": "f82715585396bcac8ee50fbc9708f755",
"0.3.7 R5-1-MP": "724188afa06472872e393c9318027f04"
},
"allowedFiles":
{
"samp.asi": "cae47d34a4c3930cb9e0cc13c4192aa2",
"SAMPGraphicRestore.asi": "01e70dd69019f9d965f3f0c4711dcce4",
"SAMPFUNCS.asi": "181e79281ae5335eacf646d284f91b1d"
},
"allowedInjectedFiles":
{
},
"suspectProcesses":
[
"cheatengine*"
],
"suspectFiles":
[
"*.cleo",
"*.cs",
"*.asi"
],
"suspectFolders":
[
"cleo"
],
"suspectInjectedDll":
[
"vorbishooked.dll",
"*.asi"
],
"suspectInjectedDllHash":
[
]
}
Compatibilidade:
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
- 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
- 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.
Open Beta: https://portalsamp.com/showthread.php?tid=4811
SA:MP Dev Tools
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140