2015-02-06 13 views
5

Sarà questo anti lavoro tecnica trucco per un gioco multiplayer utilizzando server privati ​​(pubblicamente sconosciuta eseguibile):cheat prevenzione da Code Generation

Quando il client si avvia il gioco sarà di aggiornamento automatico in sé tutti i giorni (utilizzando un lanciatore). Anche i server si aggiorneranno da soli. A meno che non ci sia una patch reale, l'aggiornamento consiste solo in cambiamenti nel layout di memoria degli oggetti di gioco, netcode e shader. Questo viene fatto usando un sistema automatico che genera automaticamente e randomizza le classi (C++). Forse potrebbe anche aggiungere oggetti falsi alla gerarchia per rendere più difficili gli oggetti identificativi.

In questo modo spero di aggiornare il gioco più veloce di una lattina di cracking e sarà decodificare, aggiornare e pubblicare/aggiornare un nuovo trucco.

Questo lavoro o gli hacker possono in qualche modo aggirare questo meccanismo? Faranno questo lavoro quotidianamente o potranno automatizzarlo ad un certo punto? Cosa posso fare per migliorare questo sistema?

Sembra casuale che il layout della memoria non sia di aiuto a lungo termine perché il layout può essere estratto più o meno facilmente seguendo le chiamate di funzione nell'eseguibile ed estraendo gli offset del puntatore da quel codice. Quindi, per prevenire in modo efficiente ciò, anche la struttura delle chiamate e il codice stesso devono essere randomizzati.

Ci sono buoni modi per farlo? Funziona affatto contro il cracking automatico?

+1

pensare a quanto male questo si sente per un giocatore, se per * nessun motivo * (nessuna patch) si forza un aggiornamento e ritardare il giocatore di sperimentare il tuo gioco – BeyelerStudios

+0

@BeyelerStudios Se il ritardo era pochi secondi che avresti mai notarlo; Ho giocato a giochi senza tale protezione (per quanto ne so) e ci sono già un sacco di ritardi nel caricamento di risorse, compilazione di shader per il tuo set preciso di driver, SO ecc. –

+0

Nel mio gioco particolare, il ritardo non sarà un problema la sua natura Penso anche che l'aggiornamento sarà relativamente piccolo, non si tratta di gigabyte – ecreif

risposta

8

La corsa agli armamenti tecnologici lato client è un modo completamente sbagliato per farlo. mai essere migliore o più veloce di un gruppo di ragazzi che hanno troppo tempo per risparmiare. Non puoi competere con un'orda di attaccanti che non hanno costi (oltre a non fare i compiti) mentre le tue azioni ti costano tempo e denaro. Questa è una gara che perderai, sia sul piano finanziario che sul risultato finale.

Ci sono due modi le persone possono barare:

  1. acquisire informazioni gli altri non hanno (per esempio guardare attraverso i muri)
  2. Automatica di gameplay che gli altri hanno a che fare manualmente ("allevamento")

ci sono esattamente due modi per impedire alla gente di fare questo:

  1. Interrompere la trasmissione di tali informazioni al client. Conservalo sul server.
  2. Smetti di avere parti del tuo gioco che non sono divertenti. Le persone automatizzano solo le parti che sono noiose, non giocano un gioco per annoiarsi. Rendilo divertente e nessuno sprecherà il suo tempo cercando di automatizzarlo. Se viene visualizzata l'automazione del tuo gioco, pensa seriamente come migliorare il tuo gioco invece di combattere con i robot tecnologicamente.

Ricordate il vecchio detto: "Il cliente è nelle mani del nemico."

+0

tutto: solo ack completo! – BeyelerStudios

+1

E gli aimbots? – ecreif

+0

@ecreif Esattamente. Non credo che nvoigt non capisca la natura del tradimento in (molti) giochi online. È possibile rimuovere tutte le parti noiose e mantenere vicino a tutto ciò che si trova sul server, ma c'è ancora capacità/scopo nel barare. –

4

non so se un tale sistema sarebbe successo ad evitare imbrogli, ma avrei preoccupazioni per quanto riguarda la produzione e il mantenimento di tale sistema.Per esempio, si dice

Questo viene fatto utilizzando un sistema automatizzato che auto genera e casualmente (C++) Classi. Forse potrebbe anche aggiungere oggetti falsi alla gerarchia per rendere più difficili gli oggetti identificativi.

  • Che cosa si intende per randomizzazione una classe? Questo è tutt'altro che banale.
  • oggetti falsi finiranno per essere individuati (codice morto)

Comunque, dubito che si sarà in grado di eseguire una sorta di offuscamento efficiente sulle porzioni critial del vostro codice, senza gravi inconvenienti, come ad esempio le prestazioni degradate o calcoli completamente sbagliati (es. calcolo fluttuante). Se si dispone di due meccanismi diversi per il calcolo dello stesso valore, è possibile che alla fine abbiano risultati diversi per lo stesso set di input.

+0

Per darti un suggerimento. Uso i buffer del protocollo di google per descrivere determinati oggetti di gioco e messaggi inviati attraverso la rete. Posso usare la reflection a per cambiare automaticamente la descrizione, aggiungere dati casuali e avere ancora un'interfaccia valida – ecreif

+0

@ecreif Se offuscate i dati inviati al client, quindi non sta generando classi C++, correggere? O mi manca qualcosa riguardo a una reflection API che stai menzionando? – piwi

+0

No. I buffer del protocollo Google generano classi C++ utilizzate per la serializzazione. Quindi ho appena inserito un randomizzatore tra la descrizione effettiva e il generatore di classi. Questo genera un nuovo codice per server e client – ecreif