SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 12/06/2019, 09:42 PM   #1
bruxo00
High-roller
 
bruxo00's Avatar
 
Join Date: Oct 2012
Location: Portugal
Posts: 1,108
Reputation: 152
Default bAnticheat v2 [C# Client]



bAnticheat Versão 2.0

INTRODUÇÃO

Há uns anos atrás fiz um anticheat parecido com este. Na altura, fiz apenas para ter uma experiência mínima com sockets. A versão anterior tinha muitos bugs e era extremamente fácil de burlar. Não que esta versão seja perfeita, mas é muito, muito melhor do que a outra.


COMO FUNCIONA?

Se um servidor é protegido pelo anticheat, um jogador só vai conseguir jogar no servidor se tiver o cliente aberto no mesmo computador. Quando um jogador se conecta ao servidor, terá que introduzir um código que é disponibilizado no anticheat. Esse código será automaticamente copiado para a área de transferência para facilitar a vida do jogador. Depois de o jogador estar conectado, se o anticheat for desligado, o jogador será kickado do servidor.

Quando um jogador é banido, ele fica banido pelo hardware.


CONFIGURAR SCHEMA

O primeiro passo é perceber o esquema da configuração do anticheat. Quando um jogador se conecta ao anticheat, o servidor irá devolver um URL, onde irão estar as configurações do anticheat em si. Nesta primeira versão, é possível detetar ficheiros mexidos (via checksum), ficheiros proibidos, directórios proibidos e processos proibidos. Este é um esquema simples que eu criei:

PHP Code:
{
  
"gtaRunning"true,
  
"sampRunning"true,
  
"monitorProcessesConstantly"true,
  
"validationFiles": [
    {
      
"path""gta_sa.exe",
      
"hash""a559aa772fd136379155efa71f00c47aad34bbfeae6196b0fe1047d0645cbd26",
      
"action""PREVENT_CONNECT"
    
},
    {
      
"path""newton.dll",
      
"hash""5a62625396abcd729d37c969de60b6ff72c36fe8bda4f1ad96a5b97f2e96040b",
      
"action""PREVENT_CONNECT"
    
},
    {
      
"path""data/weapon.dat",
      
"hash""033b3db45a00464fd95cb28870c97b45b0712f0ac53f3e8c586c88aaa0a420f8",
      
"action""PREVENT_CONNECT"
    
}
  ],
  
"forbiddenFiles": [
    {
      
"path""vorbisHooked.dll",
      
"action""PREVENT_CONNECT"
    
}
  ],
  
"forbiddenDirectories": [
    {
      
"path""modloader",
      
"action""PREVENT_CONNECT"
    
}
  ],
  
"forbiddenProcesses": [
    {
      
"name""cheatengine",
      
"action""PREVENT_CONNECT"
    
},
    {
      
"name""samphack",
      
"action""NONE"
    
}
  ]

Isto é um objeto JSON, que tem as instruções que o anticheat vai interpretar. Vou explicar o que cada campo representa:

gtaRunning - se true, o anticheat vai estar constantemente a verificar se o GTA está em execução e também se o GTA que está a ser corrido é o GTA que foi analisado. Isto previne que um jogador tenha duas instalações de GTA, uma com cheats e outra sem cheats. GTA fechado ou GTA aberto de outra localização resultará num kick.

sampRunning - se true, o anticheat vai estar constantemente a verificar se o SAMP está aberto. Não vejo nenhum motivo que ter o SAMP fechado seja mau, mas pode vir a ser necessário no futuro. SAMP fechado resultará num kick.

monitorProcessesConstantly - se true, o anticheat vai estar constantemente a verificar se há algum processo aberto que esteja na lista negra. Processo da lista negra aberto resultará num kick.

validationFiles - é um array de ficheiros. O anticheat vai comparar o checksum dos ficheiros do jogador com o checksum das configurações. Se os checksums forem diferentes, o anticheat vai executar a ação definida para esse ficheiro. Agora ainda só está programado uma ação, que é PREVENT_CONNECT, que não vai deixar o anticheat conectar-se com o servidor. No futuro haverá mais.

forbiddenFiles - é um array de ficheiros. O anticheat vai verificar se cada ficheiro existe na pasta do GTA. Se existir, vai executar a ação definida para esse ficheiro.

forbiddenDirectories - é um array de ficheiros. O anticheat vai verificar se cada directório existe na pasta do GTA. Se existir, vai executar a ação definida para esse directório.

forbiddenProcesses - é um array de processos. O anticheat vai verificar se cada processo está a ser executado. Se estiver, vai executar a ação definida para esse processo.

Para quem não percebe de JSON, deixo aqui um site que pode facilitar a compreensão:
https://jsoneditoronline.org

E um site para ver o checksum de ficheiros(sha256):
https://md5file.com/calculator


CONFIGURAR FILTERSCRIPT

Primeiro, é preciso criar uma pasta chamada bac dentro dos scriptfiles. Dentro dessa pasta, criar um ficheiro uids.txt vazio.

Alterar a define SECURITY_CODE para o checksum do cliente, no caso de terem feito alguma alteração no código.

Alterar a define SCHEMA_URL para o esquema criado por vocês. Irão precisar de hospedar em qualquer lado, eu aconselho o pastebin.

Compilar.

COMO CONECTAR O ANTICHEAT

Basta abrir o cliente, introduzir o IP do servidor e clicar em connect. Se fizeram tudo bem, deverão ver a mensagem: Validated. Waiting for player to join. Também deverão ver um código perto do botão de connect. Esse código terá de ser introduzido quando entrarem no servidor.


PRINTSCREENS

Interface


Exemplo de ficheiro alterado


Jogador banido


Dialog para introduzir o código


Tentativa de entrada sem o anticheat ligado


DEPENDÊNCIAS

strlib
zcmd
sscanf
socket [0.1b] com fixes

DOWNLOADS

CLIENTE
SOURCE (CLIENTE + FILTERSCRIPT)
GITHUB

__________________
RELEASES

[INC] SAMPMailJS
[FS] doxIT!
[GM] Paradise City Roleplay
[TOOL] bAnticheat
[TOOL] Logs Checker
[TUTORIAL] Email confirmation system

mp3it.cc

Last edited by bruxo00; 13/06/2019 at 12:36 PM.
bruxo00 is offline   Reply With Quote
Old 12/06/2019, 10:02 PM   #2
Marllun
Gangsta
 
Marllun's Avatar
 
Join Date: Oct 2016
Location: Brazil
Posts: 886
Reputation: 32
Default Re: bAnticheat v2 [C# Client]

Parece bom
__________________
Code:
Discord: Marllun#6297
Marllun is offline   Reply With Quote
Old 12/06/2019, 10:18 PM   #3
MrToddyYT
Big Clucker
 
Join Date: May 2018
Location: Sp - Brazil
Posts: 77
Reputation: 2
Default Re: bAnticheat v2 [C# Client]

Nice
__________________


Just: 187.108.193.225:7777
Discord: https://discord.gg/YrUSBZG
MrToddyYT is offline   Reply With Quote
Old 12/06/2019, 10:27 PM   #4
ipsLuan
High-roller
 
ipsLuan's Avatar
 
Join Date: Feb 2013
Location: Ilhéus, BA
Posts: 4,188
Reputation: 310
Default Re: bAnticheat v2 [C# Client]

Esse aí manja!
__________________
O fim.
ipsLuan is offline   Reply With Quote
Old 13/06/2019, 01:33 AM   #5
Felpz
Big Clucker
 
Felpz's Avatar
 
Join Date: Apr 2017
Posts: 156
Reputation: 4
Default Re: bAnticheat v2 [C# Client]

Belo trabalho, mas este é como qualquer outro.. Sempre da pra burlar!
Felpz is offline   Reply With Quote
Old 13/06/2019, 02:29 AM   #6
bruxo00
High-roller
 
bruxo00's Avatar
 
Join Date: Oct 2012
Location: Portugal
Posts: 1,108
Reputation: 152
Default Re: bAnticheat v2 [C# Client]

Quote:
Originally Posted by Felpz View Post
Belo trabalho, mas este é como qualquer outro.. Sempre da pra burlar!
Nada é 100% seguro. Mas podia começar por dizer como é que este anticheat pode ser burlado, assim eu já tinha mais alguma coisa para melhorar.

A única maneira que existe para tornar este anticheat 99% seguro é pegar na base, ofuscar/encriptar o código para evitar decompile, usar SSL na comunicação cliente > servidor para não haver possibilidade de packet sniffing, alterar os templates de comunicação e usar um método de autenticação mais forte. Tudo isto que eu falei é relativamente fácil de fazer, mas isso cabe a cada um querer ou não adicionar uma maior complexidade ao sistema. Eu podia muito bem fazer isso, bastava disponibilizar apenas o cliente e o amx. Não sabendo como funciona, é muito mais difícil burlar o sistema.

Mas tudo isto para dizer que nada é 100% seguro, basta alguém ter o conhecimento e a motivação para tentar crackar o anticheat, e acho que não é um joguinho de 2004 que vai fazer alguém perder horas e horas a tentar engenharia reversa apenas para conseguir pôr carros a voar dentro de um servidor.

A minha intenção não foi entregar um produto final. Foi entregar uma base (que funcione) para as pessoas que têm curiosidade poderem entender como funciona, e mais tarde criar um melhor do que este.


Obrigado a todos
__________________
RELEASES

[INC] SAMPMailJS
[FS] doxIT!
[GM] Paradise City Roleplay
[TOOL] bAnticheat
[TOOL] Logs Checker
[TUTORIAL] Email confirmation system

mp3it.cc
bruxo00 is offline   Reply With Quote
Old 13/06/2019, 03:16 AM   #7
Lenhador
Little Clucker
 
Join Date: Jun 2014
Location: Floripa/sc
Posts: 11
Reputation: 0
Default Re: bAnticheat v2 [C# Client]

Excelente, dificilmente faço elogios muito bom mesmo continue assim.
Lenhador is offline   Reply With Quote
Old 13/06/2019, 11:52 AM   #8
GM_KoDi
Gangsta
 
GM_KoDi's Avatar
 
Join Date: Oct 2012
Location: Brazil
Posts: 810
Reputation: 257
Default Re: bAnticheat v2 [C# Client]

#PartiuTestar, Bom trabalho!
__________________
Skills with GTA SA and SA-MP
[✔] TextDraws [✔] Mapper [✔] 3D Modeler [✔] Pawn Scripts [✔] Cleo Scripts

GM_KoDi is offline   Reply With Quote
Old 18/06/2019, 11:04 PM   #9
Corin
Little Clucker
 
Corin's Avatar
 
Join Date: Jan 2017
Posts: 13
Reputation: 0
Default Re: bAnticheat v2 [C# Client]

Como eu faço a compilação do cliente bAnticheat v2 ?
Corin is offline   Reply With Quote
Old 19/06/2019, 12:08 AM   #10
bruxo00
High-roller
 
bruxo00's Avatar
 
Join Date: Oct 2012
Location: Portugal
Posts: 1,108
Reputation: 152
Default Re: bAnticheat v2 [C# Client]

Quote:
Originally Posted by Corin View Post
Como eu faço a compilação do cliente bAnticheat v2 ?
Visual studio.
__________________
RELEASES

[INC] SAMPMailJS
[FS] doxIT!
[GM] Paradise City Roleplay
[TOOL] bAnticheat
[TOOL] Logs Checker
[TUTORIAL] Email confirmation system

mp3it.cc
bruxo00 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Tool/Web/Other] bAntiCheat [C#] bruxo00 Lançamentos/Releases 40 20/04/2016 02:23 AM
Client bug Dredd Bug Reports 3 17/08/2014 07:24 PM
FTP Client pagie1111 Everything and Nothing 25 10/04/2010 03:53 AM
New SA:MP Client PowerSurge Client Support 1 14/08/2009 03:42 PM


All times are GMT. The time now is 11:22 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.