[Include] Previnindo GOD
#1

em um tуpico OFF de discussхes algumas pessoas citaram que o SA-MP deveria tomar providкncias em relaзхes aos hacks, coisa que eu nгo discordo muito, mas ai comeзaram a citar exemplos bestas como god, dinheiro e outros que nгo me lembro, alguns destes exemplos podem ser simplesmente solvidos com o prуprio pawn, como o 'god', eu fiz essa include rapidinha aqui no bloco de notas pra demonstrar uma forma simples de inverter toda a lуgica do god, ele te aplica vida infinita e a include te aplica a vida anterior que vocк tinha antes de usa-lo.

A include em si й mais um exemplo para o pessoal ver que as coisas podem ser feitas de forma simples e sucinta se vocк souber usar a lуgica de uma coisa contra ela prуpria.

Include:
pawn Код:
//By Willian Luigi

#define HEALTH_HACK (0)
#define ARMOUR_HACK (1)

enum FLAGS
{
    Float:PLAYER_HEALTH_FLAG,
    Float:PLAYER_ARMOUR_FLAG
};
new flagsAccess[MAX_PLAYERS][FLAGS];

forward OnPlayerUseHack(playerid, hackType);

stock setHealth(playerid, Float:value)
{
    flagsAccess[playerid][PLAYER_HEALTH_FLAG] = value;
    SetPlayerHealth(playerid, value);
}
stock setArmour(playerid, Float: value)
{
    flagsAccess[playerid][PLAYER_ARMOUR_FLAG] = value;
    SetPlayerArmour(playerid, value);
}
stock Float:getHealth(playerid)
{
    return flagsAccess[playerid][PLAYER_HEALTH_FLAG];
}
stock Float:getArmour(playerid)
{
    return flagsAccess[playerid][PLAYER_ARMOUR_FLAG];
}

public OnPlayerConnect(playerid)
{
    setArmour(playerid, 0);
    setHealth(playerid, 100);
    #if defined hook_OnPlayerConnect
        hook_OnPlayerConnect(playerid);
    #endif
    return 1;
}

public OnPlayerUpdate(playerid)
{
    new Float:h, Float:a;
    GetPlayerHealth(playerid, h);
    GetPlayerArmour(playerid, a);
    if (h > getHealth(playerid) + 0x2 || h < getHealth(playerid) - 0x2)
    {
        setHealth(playerid, flagsAccess[playerid][PLAYER_HEALTH_FLAG]);
        if (funcidx("OnPlayerUseHack") != -1)
            CallLocalFunction("OnPlayerUseHack", "ii", playerid, HEALTH_HACK);
    }
    if (a > getArmour(playerid) + 0x2 || a < getArmour(playerid) - 0x2)
    {
        setArmour(playerid, flagsAccess[playerid][PLAYER_ARMOUR_FLAG]);
        if (funcidx("OnPlayerUseHack") != -1)
            CallLocalFunction("OnPlayerUseHack", "ii", playerid, ARMOUR_HACK);
    }
    #if defined hook_OnPlayerUpdate
        hook_OnPlayerUpdate(playerid);
    #endif
    return 1;
}

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    if (issuerid != INVALID_PLAYER_ID)
    {
        if (flagsAccess[playerid][PLAYER_ARMOUR_FLAG] < amount)
        {
            flagsAccess[playerid][PLAYER_HEALTH_FLAG] -= amount;
            flagsAccess[playerid][PLAYER_HEALTH_FLAG] += flagsAccess[playerid][PLAYER_ARMOUR_FLAG];
            setHealth(playerid, flagsAccess[playerid][PLAYER_HEALTH_FLAG]);
            setArmour(playerid, flagsAccess[playerid][PLAYER_ARMOUR_FLAG]);
        }
        else
        {
            flagsAccess[playerid][PLAYER_ARMOUR_FLAG] -= amount;
            setHealth(playerid, flagsAccess[playerid][PLAYER_HEALTH_FLAG]);
        }
    }
    else
    {
        flagsAccess[playerid][PLAYER_HEALTH_FLAG] -= amount;
        setHealth(playerid, flagsAccess[playerid][PLAYER_HEALTH_FLAG]);
    }

    #if defined hook_OnPlayerTakeDamage
        hook_OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid);
    #endif
    return 1;
}

public OnPlayerSpawn(playerid)
{
    setHealth(playerid, 100);
    #if defined hook_OnPlayerSpawn
        hook_OnPlayerSpawn(playerid);
    #endif
    return 1;
}

#if defined _ALS_OnPlayerSpawn
    #undef OnPlayerSpawn
#else
    #define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn hook_OnPlayerSpawn
#if defined _ALS_OnPlayerSpawn
    forward hook_OnPlayerSpawn(playerid);
#endif
#if defined _ALS_OnPlayerConnect
    #undef OnPlayerConnect
#else
    #define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect hook_OnPlayerConnect
#if defined hook_OnPlayerConnect
    forward hook_OnPlayerConnect(playerid);
#endif
#if defined _ALS_OnPlayerTakeDamage
    #undef OnPlayerTakeDamage
#else
    #define _ALS_OnPlayerTakeDamage
#endif
#define OnPlayerTakeDamage hook_OnPlayerTakeDamage
#if defined hook_OnPlayerTakeDamage
    forward hook_OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid);
#endif
#if defined _ALS_OnPlayerUpdate
    #undef OnPlayerUpdate
#else
    #define _ALS_OnPlayerUpdate
#endif
#define OnPlayerUpdate hook_OnPlayerUpdate
#if defined hook_OnPlayerUpdate
    forward hook_OnPlayerUpdate(playerid);
#endif
exemplo de uso:

no meu GM de teste eu exportei a include para receber a chamada quando hack for encontrado...
pawn Код:
//GM
public OnPlayerUseHack(playerid, hackType)
{
    if (hackType == HEALTH_HACK) //Verifica se tб alterando a vida(GOD)
    {
        SendClientMessage(playerid, -1, "Vocк tentou usar god hack, mas nгo funcionou :)");
    }
    return 1;
}
imagens de teste:
pra simular um god eu fiz um programa bбsico pra alterar a vida, nгo vou postar aqui porque й ilegal e a finalidade dele era somente testar o sistema.



A include tб funcionando assim:

Ela estabelece conexгo entre os valores de vida/colete com duas variбveis quaisquer, se tu alterar o valor da vida no GM, a variбvel que tб conectada a ela altera tambйm.

Como a include detecta o god ? Se tu modificar a vida por um processo externo(hack), somente a vida serб alterada, a variбvel que tб conectada a ela nгo serб alterada, e nisso a verificaзгo de igualdade serб quebrada e a callback OnPlayerUseHack serб chamada com o ID do jogador que alterou a vida de uma forma externa(hack).

OBS: A callback OnPlayerUseHack sу serve pra decidir oque serб feito com o hacker, se vocк vai kikar, vai banir ele, ou se vai avisar ou entгo nгo vai fazer nada, a include por si sу, nгo deixa vocк usar o hack, quando tentar alterar a vida de forma externa ela jб volta para o valor antigo.

Talvez eu nгo tenha explicado bem, mas se sobrar dъvidas ou achar bugs podem postar aqui que eu respondo.

Abraзos.
Reply
#2

Bom trabalho parabens

+REP

isso e a prova que muitos falam sem antes saberem sequer o que estгo a falar
Reply
#3

Grande include ,tu vai ficar famosaum aki с.с

@ps: vixxi tu viro a kasaka e komesso fazer anti-hacks ...n vo mata mais ninguem agora tao acakando com meu xiter
Reply
#4

Mais Gente, decha nois se felix. SQN e.e bom trabalho
Reply
#5

n й ke to jogando praga,mais kero ka kaiam shampoo no zуi desses karas ke fazem anti-cheater rsrsrs
Reply
#6

Uma forma de prevenir o "Speed hack" й "tambйm" checando o FPS do player, bom, mas o fps tambйm depende da Placa de vнdeo/processador do player, mas, mesmo assim o FPS cai e nгo й pouco nгo. Existe outras formas tambйm de reverter o speed, mas, enfim se entenderem como o Speed funciona й bem simples de revertк-lo.

@Tуpico,

Parabйns Wilian. <3

Nota: 10/10
Reply
#7

Quote:
Originally Posted by Coe1
Посмотреть сообщение
Uma forma de prevenir o "Speed hack" й "tambйm" checando o FPS do player, bom, mas o fps tambйm depende da Placa de vнdeo/processador do player, mas, mesmo assim o FPS cai e nгo й pouco nгo. Existe outras formas tambйm de reverter o speed, mas, enfim se entenderem como o Speed funciona й bem simples de revertк-lo.

@Tуpico,

Parabйns Wilian. <3

Nota: 10/10
Pelo que ja vi , o speed da pra ser pego apenas getando a velocidade do jogador , se ele estiver de 315 acima e speed hack . Bom esse e o metodo mais facil , tem outros metodos getando teclas e etc .
Reply
#8

Quote:
Originally Posted by Don_Speed
Посмотреть сообщение



Pelo que ja vi , o speed da pra ser pego apenas getando a velocidade do jogador , se ele estiver de 315 acima e speed hack . Bom esse e o metodo mais facil , tem outros metodos getando teclas e etc .
Sim, existe vбrios mйtodos... Mas, por exemplo, se ele pular la do Mont Chiliad ? aheuaheuae
Reply
#9

Quote:
Originally Posted by Coe1
Посмотреть сообщение
Sim, existe vбrios mйtodos... Mas, por exemplo, se ele pular la do Mont Chiliad ? aheuaheuae
Vai do veiculo , se nгo me engano nгo passa do limite .

#edit

Todo veiculo tem seu limite .


#editІ

Vou fazer alguns testes.
Reply
#10

Esse metodo й eficaz contra maquininhas de refrigerante? .--.

Quote:
Originally Posted by Don_Speed
Посмотреть сообщение


Vai do veiculo , se nгo me engano nгo passa do limite .

#edit

Todo veiculo tem seu limite .


#editІ

Vou fazer alguns testes.
Todo veiculo tem um limite de aceleraзгo, jб a velocidade mбxima й global. Por isso que hydra indo reto ou caindo tem a mesma velocidade
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)