SAMP AC v2 [Launcher] -
F1N4L - 07.05.2018
SAMP AC v2
Sobre:
Foi criado um novo tуpico, pois isso nгo se trata de uma atualizaзгo, mas sim de um novo Anti-Cheat.
Desenvolvi um novo anti-cheat, porйm de forma diferente e muito mais seguro.
Realizei muitos testes atй chegar a uma proteзгo realmente boa.
Diferente do meu primeiro lanзado, este trabalha com sockets e nгo mais com MySQL. Dessa forma a comunicaзгo entre cliente e servidor ocorre (praticamente) em tempo real.
Estudei brevemente a seguranзa do anti-cheat desenvolvido pelo
bruxo00. Usei seus mйtodos de hash e versionamento para trabalhar a seguranзa do AC.
Antes de dizer que isso й uma cуpia/adaptaзгo/modificaзгo faзa uma comparaзгo entre o FS e APP desenvolvido por ele e a Include e APP desenvolvido por mim. Ambos feitos do 0.
Nгo hб CTRL+C e nem CTRL+V em nada do trabalho dele.
Documentaзгo:
Tanto a include quanto o Launcher estгo totalmente documentados, entгo serб apresentado neste tуpico somente o necessбrio.
Seguranзa:
Код:
#define AC_VERSION "1.0.0.0"
#define AC_MD5_HASH "abc123abc123abc123abc123abc123ab"
#define AC_CHECK_DELAY (5) // segundos
AC_VERSION.............Versionamento do Launcher
AC_MD5_HASH..........Hash MD5 do programa para verificar se o mesmo foi modificado pelo jogador
AC_CHECK_DELAY......Delay (em segundos) que o servidor irб requisitar resposta do cliente
O versionamento й muito importante, pois o jogador deve usar a versгo mais atualizada do Launcher.
O hash MD5 do programa й computado no Launcher ao ser executado e envia o hash para o servidor para o mesmo comparar se hб modificaзгo no cliente por parte do jogador. Ao compilar o Launcher vocк pode utilizar um programa de terceiros para computar o hash do mesmo e o adicionar na define AC_MD5_HASH. (Lembrando que DEVE SER MD5, caso seja outro deve-se alterar no Launcher)
Para sabermos se o cliente estб ativo precisamos enviar dados para que possamos saber que o jogador estб sendo monitorado. Esse delay informado nгo tem relaзгo com o tempo em que o cliente irб se comunicar com o servidor, pois o cliente pode se comunicar a qualquer momento.
Modificaзхes:
Algumas coisas mudaram com relaзгo а versгo com MySQL.
#1 - Foi removido a listagem de arquivos suspeitos;
#2 - Comunicaзгo (quase) em tempo real;
#3 - Seguranзa melhorada;
#4 - Nгo forзa a entrada do jogador no servidor.
Funcionalidades:
Andei trabalhando bem a parte de comunicaзгo e troca de dados entre cliente e servidor para tornar as funзхes abaixo possнveis.
OnPlayerConnectAC(playerid, ip[], hash[])
Essa callback й chamada quando o jogador se conecta atravйs do cliente e inicia a comunicaзгo.
Ela pode substituir a callback OnPlayerConnect, mas isso nгo й regra.
playerid.....ID do jogador
ip...........IP do jogador
hash.........Hash do computador do jogador. (3 informaзхes estбticas do computador)
OnPlayerDisconnectAC(playerid, ip[], reason)
Esta callback й chamada quando o jogador encerra a comunicaзгo com servidor, seja por expulsгo ou simples desconexгo.
Ela pode substituir a callback OnPlayerDisconnect, mas isso nгo й regra.
playerid.....ID do jogador
ip...........IP do jogador
reason.......Motivo da desconexгo (padrгo OnPlayerDisconnect: 0/1/2)
OnPlayerCheatAC(playerid, ip[], cheat_code)
playerid.....ID do jogador
ip...........IP do jogador
cheat_code...Cуdigo do cheat detectado no computador do jogador.
Cheat codes:
Код:
CHEATCODE_MULTIPLE_EXEC (2) ~~> Mъltiplas janelas do GTA SA
CHEATCODE_SUSPECT_OBJECTS (3) ~~> Arquivos suspeitos detectados
CHEATCODE_DIFF_NAME (4) ~~> Nick diferente do informado no cliente (Nada grave, pode ser modificado futuramente)
CHEATCODE_CHANGED_AC (5) ~~> Hash MD5 do Launcher diverge do informado na Include
CHEATCODE_DIFF_VERSION (6) ~~> Versгo do Launcher desatualizada ou diferente da informada na Include
CHEATCODE_CLOSE_AC (7) ~~> Fechou o Launcher
Puniзгo:
Eu tenho costume de tornar os projetos mais dinвmicos e, pensando nisso, tento fazer com que o Launcher nгo interfira nas decisхes tomadas pelos donos de servidores: PUNIЗХES!
Por conta disso, o desenvolvedor do GameMode deverб decidir quais puniзхes o jogador deve receber quando a callback OnPlayerCheatAC й acionada.
Screenshot:
Splash
Form
Download:
SAMP AC v2 + Include
Crйditos:
SAMP Team
BlueG
F1N4L
bruxo00
Re: SAMP AC v2 [Launcher] -
Felipe_Freeze - 07.05.2018
Boa!
Eu tinha feito um projeto em cima do AC do Bruxo00 tbm, mas precisa fazer algumas melhorias...
Se o player tiver 2 GTA's instalados no PC, ele consegue entrar no servidor com um, e o Anti Cheat rodando em Outra pasta, burlando o sistema..
Faz uma funзгo que pega o diretorio sozinho a partir do que estб definido no Samp.exe.
Outro problema que tinha, era em casos de o Player alterar o nome do arquivo e o AC nгo detectar mais..
Nгo cheguei a testar o seu ainda, mas quando der eu testo pra ver como tб, uma boa tirar o MySQL pra ficar mais rбpido.
Valeu por compartilhar conosco
Re: SAMP AC v2 [Launcher] -
F1N4L - 07.05.2018
Quote:
Originally Posted by Felipe_Freeze
Se o player tiver 2 GTA's instalados no PC, ele consegue entrar no servidor com um, e o Anti Cheat rodando em Outra pasta, burlando o sistema..
|
Nгo cheguei testar o AC do bruxo00...
Eu criei dois mйtodos para impedir mais de uma janela do GTA.
1# - Verificar os processos do GTA e avisar o servidor.
2# - Verificar o diretуrio de cada processo do GTA e finalizar o que for diferente do informado no Launcher. (Atualmente apenas comentado no cуdigo, porйm funcional.)
Quote:
Originally Posted by Felipe_Freeze
Faz uma funзгo que pega o diretorio sozinho a partir do que estб definido no Samp.exe.
Outro problema que tinha, era em casos de o Player alterar o nome do arquivo e o AC nгo detectar mais..
|
O diretуrio pego pelo AC й o que estб no registro do windows, assim como o nick.
O nome do arquivo que vocк se refere й nome do processo do GTA?
Quote:
Originally Posted by Felipe_Freeze
Nгo cheguei a testar o seu ainda, mas quando der eu testo pra ver como tб, uma boa tirar o MySQL pra ficar mais rбpido.
Valeu por compartilhar conosco 
|
MySQL foi apenas uma saнda por eu nгo ter conhecimento com sockets na йpoca...
Peзo que teste e me ajude a mantк-lo.
Obrigado.
Re: SAMP AC v2 [Launcher] -
KoloradO - 11.05.2018
Fica dando isso:
Re: SAMP AC v2 [Launcher] -
PilateGR - 11.05.2018
Isto й uma obra de arte, o seu trabalho й muito show. Parabйns !!!
Re: SAMP AC v2 [Launcher] -
F1N4L - 11.05.2018
Quote:
Originally Posted by KoloradO
Fica dando isso:

|
Clica em "detalhes" e me mande o conteъdo por privado.
Quote:
Originally Posted by PilateGR
Isto й uma obra de arte, o seu trabalho й muito show. Parabйns !!!
|
Fico lisonjeado. Muito obrigado!
Re: SAMP AC v2 [Launcher] -
PT - 12.05.2018
Aн bem legal bom trabalho
Re: SAMP AC v2 [Launcher] -
F1N4L - 14.05.2018
Quote:
Originally Posted by PT
Aн bem legal bom trabalho
|
Grato, @PT.
Re: SAMP AC v2 [Launcher] -
Cleyson - 14.05.2018
Bacana. Bom trabalho.
Re: SAMP AC v2 [Launcher] -
KoloradO - 14.05.2018
Mano eu compilei o Client dps peguei o hash e abri um server pra testar, mas quando eu executo o client e entro no servidor ele nгo conecta.
GM Teste:
Код:
#include <a_samp>
#include <socket>
#define AC_VERSION "1.0.0.0"
#define AC_MD5_HASH "******"
#define AC_CHECK_DELAY (5) // segundos
#include <samp_ac>
public OnPlayerConnectAC(playerid, ip[], hash[])
{
new str[128];
format(str, 128, "[SAMP -AC] %s(id:%d) Conectou.", Nome(playerid), playerid);
SendClientMessageToAll(-1, str);
print(str);
return 1;
}
public OnPlayerDisconnectAC(playerid, ip[], reason)
{
new str[128];
format(str, 128, "[SAMP -AC] %s(id:%d) Desconectou.", Nome(playerid), playerid);
SendClientMessageToAll(-1, str);
print(str);
return 1;
}
public OnPlayerCheatAC(playerid, ip[], cheat_code)
{
new str[128];
if(cheat_code == CHEATCODE_MULTIPLE_EXEC)
{
format(str, 128, "[SAMP -AC] %s(id:%d) Detectado com Multi EXE.", Nome(playerid), playerid);
SendClientMessageToAll(-1, str);
print(str);
}
else if(cheat_code == CHEATCODE_SUSPECT_OBJECTS)
{
format(str, 128, "[SAMP -AC] %s(id:%d) Detectado com Arquivos suspeitos.", Nome(playerid), playerid);
SendClientMessageToAll(-1, str);
print(str);
}
else if(cheat_code == CHEATCODE_DIFF_NAME)
{
format(str, 128, "[SAMP -AC] %s(id:%d) Detectado com Nick diferente do Client.", Nome(playerid), playerid);
SendClientMessageToAll(-1, str);
print(str);
}
else if(cheat_code == CHEATCODE_CHANGED_AC)
{
format(str, 128, "[SAMP -AC] %s(id:%d) Detectado com Client Editado.", Nome(playerid), playerid);
SendClientMessageToAll(-1, str);
print(str);
}
else if(cheat_code == CHEATCODE_DIFF_VERSION)
{
format(str, 128, "[SAMP -AC] %s(id:%d) Detectado com Client versгo antiga.", Nome(playerid), playerid);
SendClientMessageToAll(-1, str);
print(str);
}
else if(cheat_code == CHEATCODE_CLOSE_AC)
{
format(str, 128, "[SAMP -AC] %s(id:%d) Fechou o Cliente.", Nome(playerid), playerid);
SendClientMessageToAll(-1, str);
print(str);
}
return 1;
}
stock Nome(playerid)
{
new name[24];
GetPlayerName(playerid, name, 24);
return name;
}
stock KickPlayer(playerid) return SetTimerEx("KDel", 1000, false, "i", playerid);
forward KDel(playerid);public KDel(playerid) {Kick(playerid); return 1;}
server_log.txt:
Код:
----------
Loaded log file: "server_log.txt".
----------
SA-MP Dedicated Server
----------------------
v0.3.7-R2, ©2005-2015 SA-MP Team
[16:21:19]
[16:21:19] Server Plugins
[16:21:19] --------------
[16:21:19] Loading plugin: socket.so
[16:21:19] Socket plugin v0.2b loaded.
[16:21:19] Loaded.
[16:21:19] Loaded 1 plugins.
[16:21:19]
[16:21:19] Filterscripts
[16:21:19] ---------------
[16:21:19] Loaded 0 filterscripts.
[16:21:19] Script[gamemodes/SAMP_AC.amx]: Run time error 20: "Invalid index parameter (bad entry point)"
[16:21:19] Number of vehicle models: 0
[16:23:26] [connection] incoming connection: 177.35.69.184:61264 id: 0
[16:23:27] [join] Kolor4dO has joined the server (0:177.35.69.184)
[16:23:56] Kicking 177.35.69.184 because they didn't logon to the game.
[16:24:30] socket_connect(): Socket ID 0 has failed to connect.
[16:24:30] [part] Kolor4dO has left the server (0:1)
[16:25:09] [connection] incoming connection: 177.35.69.184:54953 id: 0
[16:25:10] [join] Kolor4dO has joined the server (0:177.35.69.184)
[16:25:39] Kicking 177.35.69.184 because they didn't logon to the game.
[16:26:13] socket_connect(): Socket ID 0 has failed to connect.
E acho que vocк colocou a include errada no download da uma olhada ae.