Guida [HowTo] src - Anti WallHack

Stato
Discussione chiusa ad ulteriori risposte.

ErNabbone

Utente Gold
24 Settembre 2008
765
51
121
328

Introduzione

Ecco una guida semplice sul come bloccare ogni tipo di WallHack, del presente, del passato e magari del futuro, sui nostri server. Ovviamente bisogna avere la possibilità di modificare l'eseguibile server del gioco dal codice sorgente.


Guida

Il tutto va fatto nel file input_main.cpp, sopra
Codice:
constfloat fDist = DISTANCE_SQRT((ch->GetX()- pinfo->lX)/100,(ch->GetY()- pinfo->lY)/100);
e sotto una parentesi graffa aperta "{" (cercate nel file la prima stringa e lavorate nelle righe subito prima);
In questo spazio, incolliamo quanto segue:

Codice:
PIXEL_POSITION pos = ch->GetXYZ(); //Ottengo la posizione del giocatore
if(!SECTREE_MANAGER::instance().GetMovablePosition(ch->GetMapIndex(), pos.x, pos.y, pos)){ //Qualora non sia in una zona calpestabile...
if(ch->GetDesc()){ // ..e possa ottenere informazioni sul player..
LogManager::instance().HackLog("WALLHACK", ch); //Salvo il tutto nei log
ch->GetDesc()->DelayedDisconnect(1); //Mando il player offline
}
}

Ovviamente il codice può essere modificato a vostro piacimento salvando, ad esempio, le coordinate in cui è avvenuto il controllo, semplicemente modificando gli argomenti di questa funzione: LogManager::instance().HackLog()


Breve Spiegazione del Codice

Quel che andremo a fare non è altro che interrogare il server affinché ci dica se le coordinate su cui è posizionato il personaggio sono "calpestabili" tramite un metodo della classe SECTREE_MANAGER chiamato GetMovablePosition(x,y,z). Qualora non sia calpestabile, otteniamo le informazioni su ch (puntatore a cui precedentemente è stato assegnato l'indirizzo in memoria dell'oggetto del personaggio, ovvero character) tramite il metodo GetDesc()
(relativo alla classe LPCHARACTER se non erro). Se queste informazioni sono reperibili, tramite il metodo HackLog(text, lpcharacter) del LogManager
salvo negli HackLOG il testo "WALLHACK" collegato al player trasgressore ed infine faccio disconnettere il player dopo 1 secondo.

La guida è "pubblica" e rispetta le norme di licenza per i prodotti come da T&C della piattaforma in uso ed è altresì regolata dalla medesima norma. È autorizzata la copia ed il riutilizzo a fini non commerciali previa citazione del sottoscritto.
 
Un piccolo cheat che ti permette di passare attraverso i muri o meglio di camminare nei punti della mappa altrimenti inaccessibili.
Di per se non causa molti problemi, ma chi riesce ad usare il wallhack probabilmente utilizza anche altri cheat sul nostro server: è un modo per tenere d'occhio l'utenza.
 
Stato
Discussione chiusa ad ulteriori risposte.