SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 27/06/2012, 05:49 AM   #1
ipsBruno
Godfather
 
ipsBruno's Avatar
 
Join Date: Apr 2010
Location: Brazil, Caxias RS
Posts: 6,092
Reputation: 540
Default (Pawn) bProteção. Anti Hacking

http://forum.sa-mp.com/showthread.php?t=386231

^
i

Lancado





Como alguns sabem. Estou criando um anti hacking com algumas funções ..

Inicialmente estou primando para a simplificação do filterscript e eficiência do mesmo. Também estou desenvolvendo voltado para os hackings mais conhecidos e que estão dando mais problemas atualmente.

Segue aqui o trecho de versão em desenvolvimento:
-> http://pastebin.com/Zm5fgEER


Porque em OnPlayerUpdate? Porque é alí que eu tive o melhor detalhe. Isto é, algumas funções que interferem em deteção de hackings estão sendo hockeadas/redefinidas nativamente e nisto eu quero uma base sólida de verifição, que tenha pouco intervalo de tempo. Não dará lag pois tem condicionais bem condicionadas. rs. Como podem ver, OnPlayerUpdate foi essencial para o Anti Teleport, Anti Freeze e Anti Ammo hack ..

O motivo real de eu criar este tópico é demonstrar o desenvolvimento. Tanto como pedir dicas de sistemas preventivos para aplicar no filterscript. Dicas para novos itens.

Sendo mais direto:
Qual problema de cheats principal no seu servidor? Qual seria a lógica usada para bloquear isto?

Abraços galera.
Quote:
Originally Posted by [FeK]DraKiNs View Post
Foi atualizado e colocado novas funcionalidades no anti hacking !! Este ainda não é o lançamento real, mas todos estão convidados para testarem a include

É só colocar como #include, as callbacks já estão hookeadas .. As seguintes funcionalidade foram implementadas:


// Detectar:
// bots,
// ataques ddos
// fake kill
// player surf vehicle (cleo)
// player car teleport
// car teleport player
// player state hack (player push/get cars) car mass spawn
// weapon hack
// ammo hack
// no reload hack
// freeze hack
// score hack
// hack
// ofensa
// flood
// spam
// publicação
// teleport
// air break
// high ping
// anti spider car hack,
// cprace hack
// speed hack
// fly hack
// anti god mode
// sync lag shoot
// armour hack


Após plugar, deve colocar a seguinte callback:

pawn Code:
forward OnPlayerHacking(playerid, hackid);
public OnPlayerHacking(playerid, hackid) {

    if(hackid == PLAYER_BOT_LEVEL1) {
        SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
        Kick(playerid);
    }
    if(hackid == PLAYER_BOT_LEVEL2) {
        SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
        Kick(playerid);
    }
    if(hackid == PLAYER_BOT_LEVEL3) {
        SendClientMessage(playerid, -1, "noob para de ddos no meu sv BAN ");
        BanEx(playerid, "fdppp");
    }

    if(hackid == PLAYER_DEATHFLOOD_LEVEL1 || PLAYER_DEATHFLOOD_LEVEL2 == hackid || PLAYER_DEATHFLOOD_LEVEL3 == hackid) {
        SendClientMessage(playerid, -1, "noob para de fake kill");
    }

    if(hackid == PLAYER_SURF_VEHICLE) {
        SendClientMessage(playerid, -1, "noob para de surf vehicle");
    }

    if(hackid == PLAYER_SURF_VEHICLE) {
        SendClientMessage(playerid, -1, "noob para de surf vehicle");
    }

    if(hackid == PLAYER_CAR_TELEPORT) {
        SendClientMessage(playerid, -1, "noob para de car teleport");
    }

    if(hackid == PLAYER_STATE_HACK) {
        SendClientMessage(playerid, -1, "noob para de state hack");
    }

    if(hackid == PLAYER_FREEZE_HACK) {
        SendClientMessage(playerid, -1, "noob para de freeze hack");
    }

    if(hackid == PLAYER_SCORE_HACK) {
        SendClientMessage(playerid, -1, "noob para de score hack");
    }

    if(hackid == PLAYER_MONEY_HACK) {
        SendClientMessage(playerid, -1, "noob para de money hack");
    }
    if(hackid == PLAYER_PUBLISH_TEXT) {
        SendClientMessage(playerid, -1, "ninguem quer entrar no teu sv noob");
    }
    if(hackid == PLAYER_OFFEND_TEXT) {
        SendClientMessage(playerid, -1, "vtnc, para de ofende os outros fdp");
    }
    if(hackid == PLAYER_FLOOD_TEXT) {
        SendClientMessage(playerid, -1, "calma ai mermão, rlx cuca");
    }
   
    if(hackid == PLAYER_TELEPORT_HACK) {
        SendClientMessage(playerid, -1, "preguiçoso, USA CARRO mas não teleport !!1");
    }
    if(hackid == PLAYER_WEAPON_HACK) {
        SendClientMessage(playerid, -1, "não usa weapon hack po");
    }
    if(hackid == PLAYER_AMMO_HACK) {
        SendClientMessage(playerid, -1, "fdp nao usa ammo hack");
    }
    if(hackid == PLAYER_NORELOAD_HACK) {
        SendClientMessage(playerid, -1, "fdp nao usa no reload hack");
    }
    if(hackid == PLAYER_AIRBREAK_HACK) {
        SendClientMessage(playerid, -1, "fdp para de usa no airbreak hack");
    }
    if(hackid == PLAYER_SPIDER_HACK) {
        SendClientMessage(playerid, -1, "fdp para de usa no spider car");
    }
    if(hackid == PLAYER_CPRACE_HACK) {
        SendClientMessage(playerid, -1, "fdp para de usa no cprace hack");
    }
    if(hackid == PLAYER_SPEED_HACK) {
        SendClientMessage(playerid, -1, "fdp para de usa no speed hack");
    }
    if(hackid == PLAYER_FLY_HACK) {
        SendClientMessage(playerid, -1, "fdp para de nadar no céu !!1");
    }

    return true;
}

http://pastebin.com/Zm5fgEER

Por Bruno e Paulor. Include ainda não finalizada, precisa de mais coisas e mais ajustes do que imaginávamos.
__________________
Baixar Músicas Grátis

Last edited by ipsBruno; 09/12/2012 at 07:24 AM.
ipsBruno is offline   Reply With Quote
Old 27/06/2012, 10:08 AM   #2
Rick_DR
Huge Clucker
 
Rick_DR's Avatar
 
Join Date: Mar 2010
Posts: 403
Reputation: 9
Default Re: (Pawn) bProteção. Anti Hacking

Muito bom post!

O meu principal problema, são aqueles Voadores, ando tao farto disso !
__________________
Hostname: [PB] Patos-Tugas V2 Host 24 H
Rick_DR is offline   Reply With Quote
Old 27/06/2012, 10:20 AM   #3
Edu33
High-roller
 
Edu33's Avatar
 
Join Date: Apr 2012
Location: Tanzânia
Posts: 1,148
Reputation: 95
Default Re: (Pawn) bProteção. Anti Hacking

Adorei a parte do anti no reload
E... faltou o pior o fly e o airbrk, e essa parada que OnPlayerUpdate laga o server é mito,
Pra quem não sabe usar laga sim, mas pra quem sabe sempre tem um jeito
__________________


UM USUÁRIO QUE EXISTIU À ALGUNS TEMPOS ATRÁS

░░░░░░░░░░░▄▄▄▄░░░░░░░░░░░░░░░░░░░░░░░▄▄▄▄▄
░░░█░░░░▄▀█▀▀▄░░▀▀▀▄░░░░▐█░░░░░░░░░▄▀█▀▀▄░░░▀ █▄
░░█░░░░▀░▐▌░░▐▌░░░░░▀░░░▐█░░░░░░░░▀░▐▌░░▐▌░░░ ░█▀
░▐▌░░░░░░░▀▄▄▀░░░░░░░░░░▐█▄▄░░░░░░░░░▀▄▄▀░░░░ ░▐▌
Edu33 is offline   Reply With Quote
Old 27/06/2012, 02:51 PM   #4
ViniBorn
Godfather
 
ViniBorn's Avatar
 
Join Date: Aug 2010
Location: Brasília
Posts: 5,316
Reputation: 719
Default Re: (Pawn) bProteção. Anti Hacking

Quote:
Originally Posted by Edu33 View Post
Adorei a parte do anti no reload
E... faltou o pior o fly e o airbrk, e essa parada que OnPlayerUpdate laga o server é mito,
Pra quem não sabe usar laga sim, mas pra quem sabe sempre tem um jeito
Não é de fato um mito, realmente pode ocorrer, mas depende de alguns fatores, como por exemplo o tipo de instrução que está sendo colocado...
__________________




CONTATO: F A C E B O O K: @vinibornpawn


GameMode = Modo de jogo = Masculino
Colabore com os olhos de quem lê. Não diga "Minha GM"!
ViniBorn is offline   Reply With Quote
Old 27/06/2012, 03:28 PM   #5
ipsBruno
Godfather
 
ipsBruno's Avatar
 
Join Date: Apr 2010
Location: Brazil, Caxias RS
Posts: 6,092
Reputation: 540
Default Re: (Pawn) bProteção. Anti Hacking

Quote:
Originally Posted by Viniborn View Post
Não é de fato um mito, realmente pode ocorrer, mas depende de alguns fatores, como por exemplo o tipo de instrução que está sendo colocado...
É verdade. No caso eu estou usando várias condicionais, é meio raro ocorrer latência, mas não improvável O importa é que o sistema é eficiente.

Vou criar o anti-air break
__________________
Baixar Músicas Grátis
ipsBruno is offline   Reply With Quote
Old 27/06/2012, 03:47 PM   #6
Vitor_Gorzoni
Big Clucker
 
Vitor_Gorzoni's Avatar
 
Join Date: Jun 2012
Posts: 63
Reputation: 2
Default Re: (Pawn) bProteção. Anti Hacking

Muito bom drakins!
Vitor_Gorzoni is offline   Reply With Quote
Old 27/06/2012, 03:55 PM   #7
[JD]BlackFire
Gangsta
 
[JD]BlackFire's Avatar
 
Join Date: Apr 2011
Location: Caxias do Sul - RS
Posts: 743
Reputation: 42
Default Re: (Pawn) bProteção. Anti Hacking

será útil.
__________________

Programadores e desenvolvedores SA:MP

Gamemodes, Filterscripts, Includes, Sites, Painéis de controle, e muito mais...
AGORA COM HOSPEDAGEM NO BRASIL
Visite nosso site.


iPs Team
Uma das melhores equipes de programadores.

Eu voltei , Yap!!
(BlackCoder)

[JD]BlackFire is offline   Reply With Quote
Old 27/06/2012, 04:25 PM   #8
ipsBruno
Godfather
 
ipsBruno's Avatar
 
Join Date: Apr 2010
Location: Brazil, Caxias RS
Posts: 6,092
Reputation: 540
Default Re: (Pawn) bProteção. Anti Hacking

Coloquei agora anti air break. Aos poucos vou colocando mais coisas até que finalmente seja publicado de verdade.

pawn Code:
#include <a_samp>


////////////////////////////////////////////////////////////////////////////////
//
//
//        #### ########   ######     ######## ########    ###    ##     ##
//         ##  ##     ## ##    ##       ##    ##         ## ##   ###   ###
//         ##  ##     ## ##             ##    ##        ##   ##  #### ####
//         ##  ########   ######        ##    ######   ##     ## ## ### ##
//         ##  ##              ##       ##    ##       ######### ##     ##
//         ##  ##        ##    ##       ##    ##       ##     ## ##     ##
//        #### ##         ######        ##    ######## ##     ## ##     ##
//
//
//                    Criado por Bruno da Silva (iPs DraKiNs)
//
//          Acesse meu blog sobre programação [url]www.brunodasilva.com.br[/url]
//
//
//              -----------------------------------
//
//                  Detectar:
//                      bots, ataques
///                     fake kill
//                      flood chat
//                      publicacao chat
//                      ofensa chat
//                      freeze hack
//                      score hack
//                      money hack
//                      state hack
//                      car teleport
//                      anti ammo hack, noreload,
//                      anti weapon hack, high ping
//
//              ------------------------------------
//
//                 [url]www.brunodasilva.com.br[/url]
//
//              Ingresse também na [iPs]TeaM
//              wwww.ips-team.forumeiros.com
//
//////////////////////////////////////////////////////////////////////////////////

// ------------------------

#define Hook%0(%1) \
            stock %0_Ex(%1)

// ------------------------

#define varGet(%0) \
            getproperty(0,%0)

// ------------------------

#define varSet(%0,%1) \
            setproperty(0, %0, %1)


// --------------------------



enum {
    // Anti DDos Bots
    PLAYER_BOT_LEVEL3,
    PLAYER_BOT_LEVEL2,
    PLAYER_BOT_LEVEL1,

    // Anti Cleo4 Fake-kill
    PLAYER_DEATHFLOOD_LEVEL3,
    PLAYER_DEATHFLOOD_LEVEL2,
    PLAYER_DEATHFLOOD_LEVEL1,

    // Anti Bug Cars
    PLAYER_SURF_VEHICLE,
    PLAYER_CAR_TELEPORT,
    PLAYER_STATE_HACK,

    // Ammo Weapon
    PLAYER_NORELOAD_HACK,
    PLAYER_WEAPON_HACK,
    PLAYER_AMMO_HACK,


    // hackings
    PLAYER_FREEZE_HACK,
    PLAYER_SCORE_HACK,
    PLAYER_MONEY_HACK,

    // Text Chat
    PLAYER_PUBLISH_TEXT,
    PLAYER_OFFEND_TEXT,
    PLAYER_FLOOD_TEXT,

    // pos cheat
    PLAYER_TELEPORT_HACK,
    PLAYER_AIRBREAK_HACK,
   
    // outros
    PLAYER_HIGH_PING
}



#define INVALID_CHAT_BLOCK

#define MAX_STRING_CHAT     (128)

#define WEAPON_SLOT_HACK    (015)

#define SERVER_SIDE_DELAY   (002)

#define MAX_DISTANCE_DEF        (83.1)

#define MAX_PING            (800)


// =============================================================================
//
// OBSERVAÇõES IMPORTANTES:

// #define INVALID_CHAT_BLOCK
// Em caso de não quiser bloquear o texto em caso de texto inválido
// Texto inválido, spam, flood, palavreado, ofensa, publicação. etc

// Ping acima de 1 segundo (1000 ms) poderá ocorrer graves problemas de precisão no anti cheater.
// Em caso de ping muito elevado aconselha-se o uso de SERVER_SIDE_DELAY elevado para maior precisão

// SERVER_SIDE_DELAY equivale ao tempo de delay entre o uso de uma função registrada
// que influencia no detectamento do anti cheater. Aconselhável 1 a 5 segundos.
// Dependendo da conexão do servidor você coloca maior delay ou menor dealay

// MAX_DISTANCE_DEF é essencial para busca e detecção de anti-teleport e air break
// O número padrão foi calculado e não houve bugs por parte do sistema
// A única coisa que pode influenciar será o sistema de SetPlayerPos. Mas o SERVER_SIDE_DELAY supriu isto com precisão

// Este sistema apenas detecta cheaters. É aconselhavél a checagem de um administrador humano antes de aplicar o banimento.

// ========================================================================================================

new connect = -1;
new Float:g_ucPos[4];
new databaseIP[MAX_PLAYERS][20];
new Float:g_diferencasAngle[MAX_VEHICLES];


stock resetBot(o);
stock registerBot(p);
stock registrarJogador(playerid);

// ---------------------------------------------
//  Nesta parte aparecem funções hookeadas
//  Elas são essenciais para ter controle server-side detalhado
//  Essencial para qualquer anti-hack. Controle minucioso
// ---------------------------------------------

Hook GivePlayerMoney(playerid, value)
{
    return SetPVarInt(playerid, #registerMoney, GetPVarInt(playerid, #registerMoney) + value), GivePlayerMoney(playerid, value);
}


// ---------------------------------------------

Hook SetPlayerScore(playerid, value)
{
    return SetPVarInt(playerid, #registerScore, value), SetPlayerScore(playerid, value);
}


// ---------------------------------------------

Hook PutPlayerInVehicle(playerid,vehicleid,seatid)
{
    return SetPVarInt(playerid, #registerState, gettime()-SERVER_SIDE_DELAY), PutPlayerInVehicle(playerid, vehicleid, seatid);
}


// ---------------------------------------------

Hook SetPlayerPos(playerid,Float:x,Float:y,Float:z)
{

    return SetPVarInt(playerid,"tposSet", gettime()), SetPlayerPos(playerid, x, y, z);
}


Hook GivePlayerWeapon(playerid, weaponid, ammo)
{
    return SetPVarInt(playerid, #ammoTime, gettime()), GivePlayerWeapon(playerid, weaponid, ammo), SetPVarInt(playerid, getWeaponNameID(weaponid), ammo + GetPVarInt(playerid, getWeaponNameID(weaponid)));
}


stock getWeaponNameID(id)
{
    static stringWeapon[12];
    return format(stringWeapon, 12, "wepid%d", id), stringWeapon;
}


// ---------------------------------------------

Hook TogglePlayerControllable(playerid, bool:control)
{

    if(control) {

        static Float:x, Float:y, Float:z;

        GetPlayerPos(playerid,x, y, z);
        SetPVarFloat(playerid,"xposControll", x),
            SetPVarFloat(playerid,"yposControll", y),
            SetPVarFloat(playerid,"zposControll", z);
    }
    else {
        SetPVarFloat(playerid,"xposControll", 0.0);
        SetPVarFloat(playerid,"yposControll", 0.0);
        SetPVarFloat(playerid,"zposControll", 0.0);
    }

    return SetPVarInt(playerid, "PlayerControllable", _:control), TogglePlayerControllable(playerid, control);
}


// ---------------------------------------------

Hook SetPlayerHealth(playerid, Float:health)
{
    return SetPVarFloat(playerid,"healthServerside", health), SetPlayerHealth(playerid, health);
}


// ---------------------------------------------

Hook SetPlayerArmour(playerid, Float:armour)
{
    return SetPVarFloat(playerid,"armourServerside", armour), SetPlayerArmour(playerid, armour);
}


// ---------------------------------------------

public OnPlayerConnect(playerid)
{
    // registrar conexão logo que o jogador entra
    return registrarJogador(playerid);
}


public OnFilterScriptInit()
{
    // parte importante para registrar cada jogador em timers e variáveis no inicio do game mode
    // em caso de reloadfs / loadfs
    for(new i; i != MAX_PLAYERS; i++) if(IsPlayerConnected(i)) registrarJogador(i);
}


public OnPlayerDisconnect(playerid, reason)
{
    // Não retire está parte. Isto serve para não enviar mensagens de desconecção quando o player é bot ddos
    if(GetPVarInt(playerid, #jogadorDisponivel)) return false;
    return true;
}

new const palavreado[][24] = {
    "daputa","babaca","baitola","piranha","bicha","bichona","biscat","bitch","bix", "boiola","boiolona","buceta","bucetudo","cuzona","bund","burr","fude","cacet",
    "viad","caral","vadi","carai","rola","chup","idiot","corno","nocu","eucu""ocu","cusa","cusi","cuza","cuzinho","piroca","embecil","fdp","foda",
    "fode","fuck","fud","hetard","homo","imbess","jegu","kacet","karai","karaleo","kct","kral", "krl","noku","lasarent","lazarent","mula","otari","pnc","pereb","penis","pint","prosti","punhet",
    "put","retardado","tnc","viad","viadi","vsf","vtnc","sobe","vogelz","baranga", "vagab","broxa","ignorant","comed",
    "ejacu","prosti","cachorr", "surub","peni","chup","pau","viad","perere", "bucet","bicha.","bixa","gay","desgra", "troxa", "tomanocu", "seucu"
};

public OnPlayerText(playerid, text[])
{

    /*--------------------------------------------------
     *
     *  Anti Publicação de IP Inteligente
     *   Usando OnPlayerText com manipulação de strings e outros
     *   A precisão deste sistema está em torno de 95%
     *
     * Detecta: 127.0.0.1 | 1 2    7 .   0  0 1 etc
    -------------------------------------------------*/


    static szText[MAX_STRING_CHAT], numerosNochat, j;

    numerosNochat = -1, j = -1;
    for(new i; text[i]; i++) {
        if(text[i] >= '0' && '9' >= text[i]) {
            numerosNochat ++ ;
            if(numerosNochat >= 8) {
                CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_PUBLISH_TEXT);
                #if defined INVALID_CHAT_BLOCK
                return false;
                #endif

            }
        }
        switch(text[i]) {
            case '0':{ szText[j] = 'o'; j++; continue; }
            case '1':{ szText[j] = 'i'; j++; continue; }
            case '2':{ szText[j] = 'z'; j++; continue; }
            case '3':{ szText[j] = 'e'; j++; continue; }
            case '4':{ szText[j] = 'a'; j++; continue; }
            case '5':{ szText[j] = 's'; j++; continue; }
            case '6':{ szText[j] = 'g'; j++; continue; }
            case '7':{ szText[j] = 't'; j++; continue; }
            case '8':{ szText[j] = 'b'; j++; continue; }
            case 65 .. 90, 97 .. 122: { szText[j] = tolower(text[i]); j++; continue; }
        }
    }

    /*--------------------------------------------------
     *
     *  Anti Palavreado Inteligente
     *   Usando OnPlayerText com manipulação de strings e outros
     *   A precisão deste sistema está em torno de 85%
     *
     * Detecta: buceta, b - u c |e t-a, buc 3 7 4 etc
    -------------------------------------------------*/


    for(new i = 0; i < sizeof(palavreado); i++) {
        if(strfind(szText, palavreado[i], false) != -1) {
            CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_OFFEND_TEXT);
            #if defined INVALID_CHAT_BLOCK
            return false;
            #endif
        }
    }

    /*--------------------------------------------------
     *
     *  Anti Flood
     *   Usando OnPlayerText com gettime e outros
     *   A precisão deste sistema está em torno de 95%
     *
    -------------------------------------------------*/


    if(gettime() - GetPVarInt(playerid, #floodChat) < 3) {
        CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FLOOD_TEXT);
        #if defined INVALID_CHAT_BLOCK
        return false;
        #endif
    }

    SetPVarInt(playerid, #floodChat, gettime());
    return true;
}


public resetBot(o)
{
    varSet(databaseIP[o],0);
    return databaseIP[o][0] = EOS;
}


public registerBot(p)
{

    /*--------------------------------------------------
     *
     *  Anti DDos Bots
     *   Usando GetPlayerPing/OnPlayerConnect com gettime e outros
     *   A precisão deste sistema está dividido em partes
     *
     *  PLAYER_BOT_LEVEL1 -> 70%
     *  PLAYER_BOT_LEVEL2 -> 90%
     *  PLAYER_BOT_LEVEL3 -> 100%
     *
     *
    -------------------------------------------------*/


    if(GetPlayerPing(p) != 0xffff && GetPlayerPing(p)  != 0) SetPVarInt(p, #jogadorDisponivel, 1);
    if(IsPlayerConnected(p) && GetPlayerPing(p)  == 0xffff) {
        static tmpip[20];
        GetPlayerIp(p, tmpip, 20);
        if(0x1c5 > gettime() - varGet(tmpip)) {
            tmpip[strlen(tmpip)-1] = 'x';
            if(varGet(tmpip) > 3) {
                return CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL3);
            }
            CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL2);
        }
        CallLocalFunction("OnPlayerHacking", "ii", p, PLAYER_BOT_LEVEL1);
        SetTimerEx("registerBot", 700, false, #i , p);
    }
    return false;
}



public registrarJogador(playerid)
{

    static tmpip[20];
    g_diferencasAngle[playerid] = 0;
    GetPlayerIp(playerid, tmpip, 20);
    varSet(tmpip, gettime()); ++connect;

    if(connect == MAX_PLAYERS - 1) {
        for(connect = 0; databaseIP[connect][0]; connect++) continue;
    }
    SetTimerEx("resetBot", 50000, false, "i", connect);

    tmpip[strlen(tmpip)-1] = 'x';
    format(databaseIP[connect], 20, tmpip);
    varSet(tmpip, varGet(tmpip) +1);

    SetTimerEx(#pdataCheck, 1000, true, "i", playerid);
    return SetTimerEx("registerBot", 700, false, #i , playerid);
}


public OnPlayerDeath(playerid,killerid,reason)
{

    /*--------------------------------------------------
     *
     *  Anti Fake Kill
     *   Usando OnPlayerDeath com gettime e outros
     *   A precisão deste sistema está dividido em partes
     *
     *  PLAYER_DEATHFLOOD_LEVEL1 -> 070%
     *  PLAYER_DEATHFLOOD_LEVEL2 -> 090%
     *  PLAYER_DEATHFLOOD_LEVEL3 -> 100%
     *
     *
    -------------------------------------------------*/


    if(gettime() - GetPVarInt(playerid, #registerDeath) < 20) {
        if(GetPVarInt(playerid, #registerValDeath) > 15) {
            CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL1);
        }
        if(gettime() - GetPVarInt(playerid, #registerDeath) < 2) {
            CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL2);
        }
        if(gettime() - GetPVarInt(playerid, #registerDeath) < 5) {
            if(GetPVarInt(playerid, #registerValDeath) > 3) {
                CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_DEATHFLOOD_LEVEL3);
            }
        }
    }
    SetPVarInt(playerid, #registerDeath, gettime());
    SetPVarInt(playerid, #registerValDeath, GetPVarInt(playerid, #registerValDeath) +1);
    return true;
}




public OnPlayerUpdate(playerid)
{

    /*--------------------------------------------------
     *
     *  Anti Ping Alto
     *   Usando GetPlayerScore com variáveis server sided
     *   A precisão deste sistema fica em torno de 90%
     *
    -------------------------------------------------*/


    if(GetPlayerPing(playerid) > MAX_PING) {
        CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_HIGH_PING);
    }

    /*--------------------------------------------------
     *
     *  Anti Score Hack
     *   Usando GetPlayerScore com variáveis server sided
     *   A precisão deste sistema fica em torno de 100%
     *
    -------------------------------------------------*/


    if(GetPlayerScore(playerid) <  GetPVarInt(playerid, #registerScore)) {
        CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SCORE_HACK);
    }

    /*--------------------------------------------------
     *
     *  Anti Money Hack
     *   Usando GetPlayerMoney com variáveis server sided
     *   A precisão deste sistema fica em torno de 100%
     *
    -------------------------------------------------*/


    if(GetPlayerScore(playerid) <  GetPVarInt(playerid, #registerMoney)) {
        CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_MONEY_HACK);
    }

    /*--------------------------------------------------
     *
     *  Anti No-Reload
     *   Usando GetWeaponState e GetWeaponAmmo
     *   A precisão deste sistema fica em torno de 90%
     *
    -------------------------------------------------*/


    static keyTecla, keySetas;
    GetPlayerKeys(playerid, keyTecla, keySetas, keySetas);
    if(keyTecla == KEY_FIRE) {
        if(GetPlayerWeaponState(playerid) != 3) {
            if(GetPlayerAmmo(playerid) == GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid)))) {

                SetPVarInt(playerid, "keyFire", GetPVarInt(playerid, "keyFire") +1);
                SetPVarInt(playerid, "keyTime", gettime());

                if(GetPVarInt(playerid, "keyFire") >= WEAPON_SLOT_HACK) {
                    SetPVarInt(playerid, #keyFire, 0);
                    CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_NORELOAD_HACK);
                }
            }
        }
        else {
            SetPVarInt(playerid, #keyFire, 0);
        }
    }

    /*--------------------------------------------------
     *
     *  Anti Weapons Hack - Weapons Ammo Hack
     *   Usando GetWeaponAmmo com variáveis server sided
     *   A precisão deste sistema fica em torno de 85%
     *
    -------------------------------------------------*/


    if((GetPlayerAmmo(playerid) > (GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid))) +100) > 0 || (GetPlayerAmmo(playerid) < 0 && GetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid))) < 9999))) {

        static intid;
        intid = GetPlayerInterior(playerid);

        if(intid != 1 && intid != 7 && intid != 4 && intid != 6) {
            if(GetPlayerAmmo(playerid) != 0 && gettime() - GetPVarInt(playerid, #ammoTime) > 1) {
                if(GetPVarInt(playerid, #warnAmmo) == WEAPON_SLOT_HACK) {
                    CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_AMMO_HACK);
                    SetPVarInt(playerid, #warnAmmo, 0);
                }
                SetPVarInt(playerid, #warnAmmo, GetPVarInt(playerid, #warnAmmo) +1);
            }
            else if(gettime() - GetPVarInt(playerid, #ammoTime) > 1) {
                CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_WEAPON_HACK);
            }
        }
        SetPVarInt(playerid, getWeaponNameID(GetPlayerWeapon(playerid)), GetPlayerAmmo(playerid));
    }

    SetPVarInt(playerid, #registerMoney, GetPlayerMoney(playerid));
    SetPVarInt(playerid, #registerScore, GetPlayerScore(playerid));

    /*--------------------------------------------------
     *
     *  Anti Freeze Hack
     *   Usando GetPlayerPos com variáveis server sided
     *   A precisão deste sistema fica em torno de 90%
     *
    -------------------------------------------------*/


    static Float:x, Float:y,Float:z;

    if(GetPVarInt(playerid, "PlayerControllable")) {
        GetPlayerPos(playerid, x, y, z);
        if((GetPVarFloat(playerid,"xposControll") != x) ||  (GetPVarFloat(playerid,"yposControll") != y) || (GetPVarFloat(playerid,"zposControll") != z)) {
            CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_FREEZE_HACK);
        }
    }
    else {

        GetPlayerPos(playerid, x, y, z);
        if(GetPVarFloat(playerid,"xposSet") != 0 && GetPVarFloat(playerid,"yposSet") != 0 && GetPVarFloat(playerid,"zposSet") != 0) {

            new Float:MAX_DISTANCE = MAX_DISTANCE_DEF;
           
            x = GetPVarFloat(playerid,"xposSet") - x;
            y = GetPVarFloat(playerid,"yposSet") - y;
            z = GetPVarFloat(playerid,"zposSet") - z;
           
            if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && GetPlayerSurfingVehicleID(playerid) == INVALID_VEHICLE_ID){
                MAX_DISTANCE = 20.0;
            }
            if((x > MAX_DISTANCE || x < -MAX_DISTANCE ) || (y > MAX_DISTANCE  || y < -MAX_DISTANCE ) ||  (z > MAX_DISTANCE  || z < -MAX_DISTANCE )) {
                if(gettime() - GetPVarInt(playerid,"tposSet") > 3) {
               
                    GetPlayerPos(playerid, x, y, z);
                    SetPlayerPos(playerid, x, y, z + 1.0);
                   
                    SetTimerEx(#pCheckPos, 500, false, "ifff", playerid, x, y, z);
                }
            }
            MAX_DISTANCE = MAX_DISTANCE_DEF;
        }

        GetPlayerPos(playerid, x, y, z);
        SetPVarFloat(playerid,"xposSet", x);
        SetPVarFloat(playerid,"yposSet", y);
        SetPVarFloat(playerid,"zposSet", z);
    }

    return true;
}

pCheckPos(i, Float:x, Float:y, Float:z);
public pCheckPos(i, Float:x, Float:y, Float:z) {

    /*--------------------------------------------------
     *
     *  Anti Teleport Hack
     *   Usando GetPlayerPos com variáveis server sided
     *   A precisão deste sistema fica em torno de 85%
     *
    -------------------------------------------------*/

       
    if(IsPlayerInRangeOfPoint(i, 2.012837, x, y, z)) {
        CallLocalFunction("OnPlayerHacking", "ii", i, PLAYER_TELEPORT_HACK);
    }
   
    /*--------------------------------------------------
     *
     *  Anti AirBreak Hack
     *   Usando GetPlayerPos e SetPlayerPos com variáveis server sided
     *   A precisão deste sistema fica em torno de 95%
     *
    -------------------------------------------------*/

       
    else {
        CallLocalFunction("OnPlayerHacking", "ii", i, PLAYER_AIRBREAK_HACK);
    }
    return true;
}


public OnPlayerStateChange(playerid, newstate, oldstate)
{
    /*--------------------------------------------------
     *
     *  Anti State Hack
     *   Usando OnPlayerStateChange com gettime
     *   A precisão deste sistema fica em torno de 95%
     *
    -------------------------------------------------*/


    if(newstate == PLAYER_STATE_DRIVER) {
        if(gettime() - GetPVarInt(playerid, #registerState) < 2) {
            CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_STATE_HACK);
        }
        SetPVarInt(playerid, #registerState, gettime());
    }
    return 1;
}


public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat)
{

    /*--------------------------------------------------
     *
     *  Anti Surfer Vehicle
     *   Usando OnUnoccupiedVehicleUpdate com gettime e outros
     *   A precisão deste sistema fica em torno de 85%
     *
    -------------------------------------------------*/


    GetVehiclePos(vehicleid, g_ucPos[0], g_ucPos[1], g_ucPos[2]);

    if(IsPlayerInRangeOfPoint(playerid, 4.0, g_ucPos[0], g_ucPos[1], g_ucPos[2])) {
        GetVehicleZAngle(vehicleid, g_ucPos[3]);
        if(g_diferencasAngle[vehicleid] != g_ucPos[3]) {
            if(!IsPlayerInAnyVehicle(playerid)) {
                GetPlayerPos(vehicleid, g_ucPos[1], g_ucPos[1], g_ucPos[3]);
                if(g_ucPos[3] > g_ucPos[2]) {
                    SetPVarInt(playerid, #registrosUAF, GetPVarInt(playerid, #registrosUAF) +1);
                    if(GetPVarInt(playerid, #registrosUAF) > 15) {
                        CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_SURF_VEHICLE);
                    }
                }
            }
        }
        g_diferencasAngle[vehicleid] = g_ucPos[3];
        return true;
    }

    /*--------------------------------------------------
     *
     *  Anti Teleport Vehicle
     *   Usando OnUnoccupiedVehicleUpdate com gettime e outros
     *   A precisão deste sistema fica em torno de 85%
     *
    -------------------------------------------------*/


    else if(!IsPlayerInRangeOfPoint(playerid, 100.0, g_ucPos[0], g_ucPos[1], g_ucPos[2])) {
        if(!IsPlayerInAnyVehicle(playerid)) {
            CallLocalFunction("OnPlayerHacking", "ii", playerid, PLAYER_CAR_TELEPORT);
        }
    }
    return true;
}



#define GivePlayerMoney             GivePlayerMoney_Ex
#define SetPlayerScore              SetPlayerScore_Ex
#define PutPlayerInVehicle          PutPlayerInVehicle_Ex
#define PutPlayerInVehicle          PutPlayerInVehicle_Ex
#define SetPlayerArmour             SetPlayerArmour_Ex
#define SetPlayerHealth             SetPlayerHealth_Ex
#define TogglePlayerControllable    TogglePlayerControllable_Ex
#define GivePlayerWeapon            GivePlayerWeapon_Ex



/*
    Exemplo de uso para OnPlayerHacking
    INCLUDE AINDA NÃO TERMINADA. FALTA CRIAR ITENS ANTI HACKINGS E HOOKEAR PUBLICAS !!!
*/

forward OnPlayerHacking(playerid, hackid);
public OnPlayerHacking(playerid, hackid) {

    if(hackid == PLAYER_BOT_LEVEL1) {
        SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
        Kick(playerid);
    }
    if(hackid == PLAYER_BOT_LEVEL2) {
        SendClientMessage(playerid, -1, "noob para de ddos no meu sv ");
        Kick(playerid);
    }
    if(hackid == PLAYER_BOT_LEVEL3) {
        SendClientMessage(playerid, -1, "noob para de ddos no meu sv BAN ");
        BanEx(playerid, "fdppp");
    }

    if(hackid == PLAYER_DEATHFLOOD_LEVEL1 || PLAYER_DEATHFLOOD_LEVEL2 == hackid || PLAYER_DEATHFLOOD_LEVEL3 == hackid) {
        SendClientMessage(playerid, -1, "noob para de fake kill");
    }

    if(hackid == PLAYER_SURF_VEHICLE) {
        SendClientMessage(playerid, -1, "noob para de surf vehicle");
    }

    if(hackid == PLAYER_SURF_VEHICLE) {
        SendClientMessage(playerid, -1, "noob para de surf vehicle");
    }

    if(hackid == PLAYER_CAR_TELEPORT) {
        SendClientMessage(playerid, -1, "noob para de car teleport");
    }

    if(hackid == PLAYER_STATE_HACK) {
        SendClientMessage(playerid, -1, "noob para de state hack");
    }

    if(hackid == PLAYER_FREEZE_HACK) {
        SendClientMessage(playerid, -1, "noob para de freeze hack");
    }

    if(hackid == PLAYER_SCORE_HACK) {
        SendClientMessage(playerid, -1, "noob para de score hack");
    }

    if(hackid == PLAYER_MONEY_HACK) {
        SendClientMessage(playerid, -1, "noob para de money hack");
    }
    if(hackid == PLAYER_PUBLISH_TEXT) {
        SendClientMessage(playerid, -1, "ninguem quer entrar no teu sv noob");
    }
    if(hackid == PLAYER_OFFEND_TEXT) {
        SendClientMessage(playerid, -1, "vtnc, para de ofende os outros fdp");
    }
    if(hackid == PLAYER_FLOOD_TEXT) {
        SendClientMessage(playerid, -1, "calma ai mermão, rlx cuca");
    }
    if(hackid == PLAYER_TELEPORT_HACK) {
        SendClientMessage(playerid, -1, "preguiçoso, USA CARRO mas não teleport !!1");
    }
    if(hackid == PLAYER_WEAPON_HACK) {
        SendClientMessage(playerid, -1, "não usa weapon hack po");
    }
    if(hackid == PLAYER_AMMO_HACK) {
        SendClientMessage(playerid, -1, "fdp nao usa ammo hack");
    }
    if(hackid == PLAYER_NORELOAD_HACK) {
        SendClientMessage(playerid, -1, "fdp nao usa no reload hack");
    }
    if(hackid == PLAYER_AIRBREAK_HACK) {
        SendClientMessage(playerid, -1, "fdp para de usa no airbreak hack");
    }

    return true;
}

O anti air break é bastante preciso. Mas só detecta após uns 10 segundos que o jogador usou.

Se puder colaborarem com mais anti hackings. Eu estou contruindo o anti god car, god e regeneração de vida. Mas existem muitos outros que ainda podem ser detectado. Dicas?
__________________
Baixar Músicas Grátis
ipsBruno is offline   Reply With Quote
Old 27/06/2012, 04:29 PM   #9
leonardo1434
High-roller
 
leonardo1434's Avatar
 
Join Date: Mar 2012
Posts: 1,673
Reputation: 179
Default Re: (Pawn) bProteção. Anti Hacking

ótimo trabalho, sempre inovando a board.


Sem dúvida digno de resp !
__________________
c++
leonardo1434 is offline   Reply With Quote
Old 27/06/2012, 04:52 PM   #10
paulor
High-roller
 
Join Date: Nov 2011
Location: Brasil
Posts: 3,117
Reputation: 222
Default Re: (Pawn) bProteção. Anti Hacking

Um detalhe:

pawn Code:
if(GetPlayerScore(playerid) <  GetPVarInt(playerid, #registerScore))

if(GetPlayerScore(playerid) <  GetPVarInt(playerid, #registerMoney))

Essas partes estão erradas não é ?

@Edit

Outro detalhe:

No seu 'Anti Publicação de IP Inteligente', vou dar um exemplo no meu GM, os telefones do meu GM tem o tamanho de 8 números, vai que ele digite o número de telefone no texto, vai acusar que ele esta divulgando!
__________________
Meus Projetos - contato@paulorwd.com.br
[IMG]https://sites.******.com/site/facesbypaulo/MetropoleGames.png[/IMG]
paulor 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
elm is hacking the RP, anyone knows a fix? ikkentim Scripting Help 4 15/12/2011 04:16 PM
Money Hacking e.t.c. Martin_Smith Help Archive 8 08/07/2011 12:11 AM


All times are GMT. The time now is 12:42 AM.


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