"Noi incoraggiamo gli individui, consapevolmente curiosi, a passare dalla complessità alla semplicità, dall'interno all'esterno e, a metà strada fra la ricerca e la negazione del significato, vogliamo che i curiosi facciano una dannata scelta". Wachowski

sabato 19 ottobre 2013

SCHOLAR: SCOPRIRE UN AIMBOT CON LA STATISTICA

Questo terzo appuntamento della sezione SCHOLAR, dove approfondiamo le letture della comunità scientifica che si occupano di FPS, ci porta a parlare di cheating.
Forse non ci crederete, ma gli studi scientifici in termini di detection del cheating sono davvero molti e questo che vi voglio presentare si basa interamente sulla statistica.
Prima di iniziare, e vi consiglio di seguire dato che una delle frasi iniziali del paper è “Cheating in a FPS is especially annoying ….. can drive away most honest player from the game…” vale una suddivisione generale abbastanza diffusa in internet:
 
hacker: colui che altera il codice software, iniettando o usando codice malevole che altera la memoria o le istruzioni del gioco
cheater: colui che utilizza un vantaggio sleale senza alterare il codice
 
Adesso stà a voi:
 
pillola azzura: fine della storia. chiudete questa pagina internet e ve ne tornate a giocare
pillola rossa: premete il link “continua la lettura”, accendete un po’ più di due neuroni, attivate quella parte del cervello che stimola la curiosità e l’intuito e scoprirete quanto è profonda la tana del bianconiglio.


OK. Avete preso la pillola rossa. Avete fatto bene.
Prima di tutto, prendiamo il punto di vista dei ricercatori:

hacker: colui che altera lo schermo, mostrando ad esempio, la posizione di tutti sulla mappa
cheater: colui che usa aimbot, colui che utilizza parti del gioco in maniera automatica.
 
Ci occuperemo di quest ultimi ovvero degli aimbottari.
 
Questo gruppo di ricercatori universitari, un giapponese, un canadese ed un inglese (non è una barzelletta), nel loro studio, (questo è il link al pdf) hanno pensato questa cosa:
Cerchiamo di trovare un modo per smascherare un cheater con le poche cose che può riceve/ricavare un server, ovvero

1) La posizione del giocatore (fermo o in movimento)
2) La posizione del avversario al quale sta puntando (fermo o in movimento)
3) La variazione della mira del giocatore (ho detto la variazione, poi vediamo perché)
4) La distanza tra il giocatore e l’avversario
5) La probabilità di cheating (vedremo alla fine che cosa è)
 
I ricercatori si propongo di sviluppare un sistema di cheating universale, insomma, visto che tutti gli fps hanno queste informazioni.
 
La cosa da capire è che queste cose appena dette (variabili statistiche) sono alla base dell’accuratezza della mira di un giocatore, che rappresenta il fine ultimo per dire se un giocatore cheatta oppure no.
 
Quello che i ricercatori hanno in mente è di smascherare un aimbot, ovvero una forma di cheat per la quale la mira viene controllata automaticamente. Vediamo perciò quali sono i criteri base.
 
Tutte le variabili appena descritte sono tutte indipendenti tra di loro. Distanza, variazione di mira, movimento del giocatore, tutte. Alcune però hanno delle peculiarità:
Ad esempio il processo che porta a mirare viene considerato come un processo di aggiustamento fine, ovvero una volta che la mira è abbastanza sul target, questa verrà corretta solo leggermente. Possiamo essere tutti d’accordo. Questo vuol dire che la mira, in ogni istante, dipende fortemente dagli istanti precedenti. Perciò può essere credibilmente modellata con un processo di Markov (roba statistica, lasciate stare, va più che bene quanto detto prima).
 
Inoltre, statisticamente, possiamo dire tutte le variabili di cui sopra, sebbene indipendenti tra di loro, possono essere composte, tramite inferenza statistica, secondo una rete Bayesiana per determinare se l’insieme delle variabili evidenziano un cheating.
 
Spieghiamo Bayes facendo un esempio.
 
Provate a comporre le variabili insieme in alcuni casi  reali.
Come sarà secondo voi la variazione della mira, se un avversario è fermo oppure si muove? Saranno diverse ovviamente. Se l’avversario è fisso, la mira convergerà verso l’avversario rapidamente. Se l’avversario è in movimento, la mira potrebbe convergere, poi divergere ampiamente, poi ri-convergere, ecc, proprio perché è in movimento.
 
Di per se, perciò, la variazione della mira da solo non ci dice niente. Se invece la inferiamo statisticamente con la posizione dell’avversario, può dirci se il giocatore cheatta oppure no, dato che un aimbot presenta sempre la stessa convergenza (pari a zero) in qualsiasi caso.
 
State iniziando a capire il senso? La variabilità di alcuni parametri può essere ragionata, insieme ad altri parametri, per capire se statisticamente il processo di mira è credibile oppure no.
 
Come hanno fatto allora a testare questo modello?
Leggete bene, hanno creato un prototipo di sistema multiplayer, usato un shooter open source CUBE, sviluppato nel server il sistema con le caratteristiche sopra esposte.
 
Poi hanno sviluppato un aimbot sul client. Queste sono le caratteristiche:
1) Quando attivo trova il target più vicino e lo mira accuratamente
2) L’aimbot continua a tenere sotto mira il target anche se c’è uno più vicino, finchè la distanza non è elevata al punto che passa automaticamente su quello più vicino
3) Se c’è un solo target visibile, l’aimbot continuerà mirarlo finché non sparisce
 
Questo aimbot è stato poi differenziato/generato secondo tre modi:
1) quello più comune in giro, ovvero una volta attivato, mira automaticamente sempre.
2) quello che casualmente si accende e spegne, dato che un utente può accenderlo e spegnerlo in corsa ( e questo spiega l’ultima variabile, ovvero se l’utente accende o spegne un cheat)
3) quello che intenzionalmente crea dei “lisci” ovvero colpi non sul target, la versione più furba, come se fosse un umano.
 
Sono state create alcune sessioni di gioco, mischiando giocatori onesti con giocatori con i tre diversi aimbot, da quello più ignorante a quello più paraculo.
Le prime sessioni sono servite per valutare la statistica degli onesti e fornire i coefficienti per la rete Bayesiana mentre gli altri sono stati i veri e propri test.
Abbiamo quasi finito, ma ci tengo a sottolineare una cosa che non viene fatta nel paper, giusto per far capire meglio.
 
Riprendiamo la variabile “variazione della mira”.
 
Immaginiamo che avete un avversario a 10 gradi di distanza a destra fermo e vi spostate per mirarlo. Come fareste? Grande movimento prima e piccoli movimenti poi.
Volendo vedere come evolve la variabile, potremmo fare questo esempio:
10; 6; 4; 2;1; 0,4; -0,1(il segno meno è perché siamo andati oltre); 0,2; 0,1 ecc.
Vi lascio immaginare per un target in movimento.
 
Ecco, i primi test servivano a collezionare tutti questi eventi di mira, tutte queste variabili, valutarle ed assegnarne un peso.
 
Il vero problema, infatti, di tutti i sistemi di cheating sono i falsi positivi, ovvero dare del cheat a uno che magari è tanto bravo. Mi dispiace per voi, ma in sistemi di segnalazione o warning, il falso allarme è peggio dell’allarme stesso.
 
Vi lascio la curiosità di andare a vedere i diagrammi finali, dove ovviamente, visto che è un paper pubblicato, il sistema rileva adeguatamente un cheater con una bassa probabilità di falsi allarmi.
La riga orizzontale alta che vedrete è la soglia. Un cheater fluttua continuamente su quella soglia, mentre un player onesto è sempre al di sotto.
 
La cosa che vorrei dire è che lo rileva quasi immediatamente. Invece su youtube si vede gente che fa massacri su massacri e solo successivamente viene bannata, magari solo per youtube e non per il sistema di anticheating in se.
Big respect a questi studiosi, perciò, visto che hanno teorizzato, progettato e realizzato questo sistema (tutto questo sembra essere tra i 6 ai 12 mesi di lavoro direi) e big respect a tutta quella comunità scientifica che studia l’anticheating.
Se non ci credete, basta cercare le classiche parole come “hack cheat FPS o roba simile” su scholar google, per farsi una idea del numero dei lavori e dello spessore di chi li realizza.


Nessun commento:

Posta un commento