In che modo i giochi per PC / Mac rilevano la pirateria?


27

Di recente ho letto un articolo su come i programmatori hanno protetto i loro giochi dai pirati, come i creatori di Game Dev Tycoon . Questo mi ha incuriosito: come rilevano che la copia del gioco in esecuzione è in realtà una versione piratata a livello tecnico? La risposta più vicina che sono riuscito a trovare attraverso alcune ricerche è stato il modo in cui le cartucce SNES sono in grado di rilevare se sono piratate , ma quella tattica ovviamente non si applica ai PC.


1
Penso che questa domanda sia troppo ampia. Esistono diversi modi in cui i giochi rilevano la pirateria e molti di essi sono specifici di ciascun gioco.
MichaelHouse

10
@ Byte56 Sono d'accordo sul fatto che la domanda sia piuttosto ampia, ma penso che sia ancora una buona domanda. Una risposta ideale potrebbe fornire un metodo comune di rilevazione della pirateria e forse collegamenti a fonti che spiegano altre soluzioni note.
kevintodisco,

2
Probabilmente il modo migliore in assoluto per evitare la pirateria è fare ciò che Blizzard ha fatto per Diablo III: il client esegue il rendering e così, ma la maggior parte delle regole e della logica del gioco sono memorizzate solo sul lato server di Blizzard (es: quanto oro ricevi quando apri una cassa nella stanza X con il giocatore al livello Y). Non è possibile sconfiggerlo a meno che tu non abbia rubato i binari / sorgente Blizzard per la parte server (che è molto improbabile). Alcune persone hanno creato emulatori, ma poiché non sono le stesse regole (sono approssimazioni), non danno affatto la stessa esperienza di gioco.
Tigrou,

Risposte:


53

Prima cosa: non c'è modo per un computer di sapere se un file è piratato o meno. Pirateria è un termine legale / morale e, in quanto tale, non ha alcun significato in un file, che è composto solo da uno e zero.

Detto questo, la prevenzione della pirateria e le contromisure di solito si concentrano sullo scoprire se un utente ha o meno qualcosa (di solito un oggetto) che può essere ottenuto solo se è stata acquistata una copia del gioco e rende difficile la duplicazione. Ci sono molti modi per farlo, ognuno con vantaggi e difetti. Ne citerò alcuni:

  • I primi giochi chiedevano agli utenti di inserire una parola dal manuale del gioco, che dovresti ottenere solo se hai acquistato una scatola di gioco. Una fotocopiatrice o uno scanner sconfigge facilmente questa tecnica.

  • Più recentemente, i controlli dei media sono più comuni. L'idea è che è necessario che il CD del gioco sia nell'unità per l'esecuzione del gioco. Per implementarlo, puoi ad esempio accedere ai file di dati critici dal CD senza i quali il gioco non può essere eseguito, o semplicemente controllare l'esistenza di un file nel CD. Funzionava abbastanza bene quando i CD erano difficili da duplicare, ma le fotocopiatrici di CD e più recentemente gli emulatori di unità possono essere usati per sconfiggere facilmente questa tecnica.

  • Tuttavia, le copie del CD non sono perfette, quindi molte altre tecniche si concentrano sul rilevare se il CD è il CD stampato originale o una copia. Per implementare ciò, un gioco può verificare la presenza di elementi non standard che vengono inseriti sul disco del gioco durante il tempo di stampa, ma non può essere replicato facilmente e in modo affidabile da un masterizzatore CD, su un CD-R. Alcuni modi comuni per farlo sono:

    • Creazione di file "fantasma" fittizi nel CD durante la masterizzazione, che non sono accessibili dal file system del CD, ma esistono e possono essere letti se si sa dove trovarli. Questi dati sono assenti nelle copie del disco file per file. Copiando l'intera immagine del disco, questi file verranno copiati.

    • Un altro modo è quello di inserire intenzionalmente errori nel disco. I CD contengono codici di correzione degli errori. Inserendo errori nei dati, che possono essere corretti in modo trasparente da un lettore di dischi, il disco funzionerà normalmente, ma gli errori non verranno copiati sul CD-R. Cercando questi errori intenzionali, un gioco può considerare un CD come una copia stampata originale. Tuttavia, le copie di immagini disco RAW lo sconfiggono.

    • L'inserimento di settori gemelli, con lo stesso indirizzo ma dati diversi produrrà risultati diversi quando si cercano dati in avanti e indietro. È possibile verificare l'esistenza di questo e duplicare un CD con questi settori gemelli è molto difficile.

    • Misurazione della posizione effettiva delle fosse nel CD. Ancora una volta, duplicare un CD con i box nelle stesse posizioni è molto difficile.

    Tuttavia, molti emulatori di CD, come Daemon Tools o Alcohol 120%, possono effettivamente emulare queste funzionalità. Per questo motivo, molti editori scelgono di includere una fase di rilevamento dell'emulatore CD e impediscono l'esecuzione del gioco se viene rilevato un emulatore. L'implementazione di un rilevatore di emulatori non rientra nell'ambito di questa risposta.

  • Invece di, o in aggiunta alla ricerca di un CD fisico, un gioco può richiedere all'utente di inserire alcuni dati, come un codice Product Key . Alcuni modi per utilizzare i codici Product Key sono:

    • Verifica delle caratteristiche matematiche nella chiave. Tuttavia, ciò non impedisce la duplicazione delle chiavi e se l'algoritmo di controllo viene scoperto o retroingegnerizzato, un pirata può essere in grado di creare nuove chiavi a piacimento che sembreranno legittime al gioco. I software che creano chiavi a piacere sono chiamati " keygens ".

    • Generando un hash basato sull'hardware dell'utente, invia questo hash e la chiave del prodotto (di solito una combinazione, chiamata "chiave di installazione") a un server di proprietà della società di gioco e, sulla base dell'hash e del seriale, crea una chiave di attivazione . Utilizzando metodi numerici unidirezionali (come l'aritmetica modulare o alcuni metodi con curve ellittiche), un gioco può vedere se la chiave di attivazione corrisponde all'hash e al codice seriale e può essere eseguita solo se corrispondono. Questa tecnica si chiama "attivazione".

    Con l'attivazione, un server può rifiutare di fornire chiavi di attivazione per più hash hardware con lo stesso codice seriale. Per questo motivo, anche se il codice seriale e la chiave di attivazione vengono copiati, la chiave di attivazione non corrisponderà e il gioco non verrà eseguito su altri computer.

Tutte queste misure hanno lo scopo di scoprire se l'utente possiede o meno una copia del gioco acquistata. Tuttavia, la loro implementazione richiede un codice di programma che lo controlla. È possibile che un pirata modifichi il codice di gioco per disabilitare o aggirare i controlli invece di attaccare i meccanismi di protezione della copia stessi. L'atto di modificare i file binari del gioco per rimuovere i controlli antipirateria si chiama "cracking".

Il cracking può consistere semplicemente nello smontare l'eseguibile del gioco, trovare il luogo in cui vengono effettuati i controlli rilevanti, modificarlo per disabilitarli o ignorare i risultati e riassemblarlo. Alcuni modi per contrastare il cracking sono:

  • Controllo del file binario con un po 'di hash. Tuttavia, ci deve essere un programma che controlla l'hash, che a sua volta può anche essere decifrato.

  • Crittografia del programma o semplicemente della routine di controllo e decrittografia in fase di esecuzione. Ciò rende più difficile lo smontaggio, in quanto comporta una o più fasi di decodifica aggiuntive. SE la chiave di decrittazione è inclusa nel programma (come deve essere, perché senza di essa, il gioco non può essere decifrato), quindi il pirata può decodificare la decodifica, trovare la routine e rompere la protezione dalla copia.

    Per questo motivo, come editore di giochi, vuoi rendere la chiave il più difficile da trovare possibile e, facoltativamente, rendere difficile la comprensione dell'algoritmo di decodifica. Alcuni modi per rendere la chiave difficile da trovare sono:

    • Oscuralo creando in modi strani. Questo semplicemente rallenta il processo di cracking.

    • Crea chiavi master per macchina simili alla protezione seriale sopra menzionata.

    Tuttavia, indipendentemente dal metodo utilizzato per creare le chiavi, le chiavi stesse rimarranno in memoria mentre è in corso la decrittografia. Ispettori di memoria, debugger ed emulatori possono aiutare un pirata a trovare e copiare la chiave mentre è in memoria. La visualizzazione della memoria può essere attaccata in diversi modi:

    • Avere un servizio privilegiato che rileva gli accessi alla memoria nella regione specificata e reindirizza l'indirizzo da qualche altra parte. Poiché ciò richiede l'accesso dell'anello 0 e i programmi che lo fanno sono più comunemente usati per scopi non così legittimi , il software antivirus di solito li blocca. (ecco perché molti giochi e altri software chiedono di disattivare la protezione antivirus durante l'esecuzione). Scrivere software che lo fa correttamente è estremamente difficile e può facilmente compromettere la stabilità e la sicurezza del sistema operativo host. Lo scandalo XCP è un buon esempio di implementazione di questo metodo andato storto.

    • I moderni sistemi operativi e hardware forniscono alcuni strumenti, come tende di memoria , percorsi multimediali sicuri e moduli TP , per rendere più semplice la creazione di un programma che decodifica i dati, resistendo al contempo all'ispezione della memoria.

Esistono molte altre tecniche per attaccare la pirateria, che vanno dal banale all'esoterico. Sfortunatamente, è possibile che tutte queste tecniche non riescano a riconoscere una copia autentica, e di solito sono le tecniche più aggressive che hanno rapporti falsi positivi più elevati.

Come editore di giochi, di solito vuoi scegliere un insieme di tecniche il cui costo di implementazione, tempo di cracking atteso e rapporto di falsi positivi sono in linea con le tue aspettative.

È un'idea sbagliata comune che la protezione della pirateria sia completamente infrangibile. La maggior parte delle vendite di giochi avvengono nei primi mesi dopo il rilascio, quindi uno schema di protezione dalla pirateria è generalmente considerato efficace se romperlo richiede abbastanza tempo perché l'editore del gioco raccolga una grande quantità di profitti prima che si rompa.

Per quanto riguarda Game Dev Tycoon, non hanno utilizzato alcuna tecnologia antipirateria. Hanno semplicemente creato una build "non funzionante" e distribuita su BitTorrent, come indicato all'inizio dell'articolo che hai citato.


1
Anche avendo una risposta competitiva, devo abbassare il cappello per la tua risposta, una migliore presentazione e ovviamente più tempo da dedicare. Migliore copertura tecnica anche, e devo dire che non ho mai sentito parlare di "tende di memoria, percorsi multimediali sicuri e moduli TP". Cos'è quello ??
v.oddou

@ v.oddou: si tratta di elementi che possono essere utilizzati per DRM con supporto hardware. Un modulo TP è un chip di processore crittografico. Molti computer moderni (2007 e successivi) includono un TPM. Una cortina di memoria consente di creare sezioni di memoria di sola scrittura che non sono leggibili nemmeno per il sistema operativo, in particolare per memorizzare le chiavi da utilizzare per il TPM. Un percorso multimediale sicuro è un sistema in cui i contenuti viaggiano crittografati da un capo all'altro (anche fino alla visualizzazione). L'uso corretto di queste tecnologie è tutt'altro che banale ...
Panda Pajama,

Proprio come un piccolo componente aggiuntivo, c'è un ottimo articolo sulla protezione dalla copia di Spyro che discute molte di queste cose applicate a un gioco, insieme ad alcune motivazioni e una storia interessante: gamasutra.com/view/feature/3030/keeping_the_pirates_at_bay .php
magro

Questa risposta è completamente errata. youtube.com/watch?v=FVVx5WYmO2s Segnalazione per intervento del moderatore.
Krythic,

@Krythic che ne dici di scrivere il tuo e poi?
Panda Pajama,

3

È abbastanza facile, devi solo eseguire un MD5 o SHA256 sul tuo eseguibile, quindi, quando rilevi che la firma è cambiata da ciò che hai codificato nel binario dopo aver creato la versione finale, allora è chiaro che qualcuno ha hackerato il tuo eseguibile. Quindi la maggior parte delle aziende, non solo mostra più un popup (era il caso prima) che dice "PE rotto" o "virus rilevato" e quindi esce dal gioco, perché questo sarà molto rapidamente contro gli hacker. Perché il gioco è in pausa sul ciclo di messaggi della finestra di dialogo, quindi è immediato vedere a causa di quale ramo è stata visualizzata la finestra di dialogo e basta bypassare il ramo modificando il codice al controllo delle condizioni.

Oggi, le aziende usano cambiamenti molto sottili nel gameplay, come moltiplicare la vita dei mostri per rendere il gioco ingiocabile o incredibilmente integrato in questo gioco di gestione, dove gestisci un'azienda di gioco e alla fine perdi perché troppi giocatori stavano piratando il tuo gioco. Bella mise en abyme in questo caso. A volte ti viene semplicemente caricata una bandiera rossa sui server dell'azienda e quando vuoi chiamarli per ricevere assistenza ricevi un discorso o intrappolato nel rivelare la tua identità.

ma questo è tutto argomento, la tecnica è hash. e questi controlli possono essere eseguiti in molti punti del binario in modo che se gli hacker ne trovano uno e lo cancellano, non è abbastanza.

EDIT: se copi il gioco così com'è, potrebbe funzionare se il gioco non ha alcuna misura antipirateria. Funzionava con giochi molto vecchi, nell'era dei masterizzatori pre-CD. Ecco perché, il più delle volte, il gioco deve essere installato per funzionare, non solo la cartella di installazione copiata. Ciò implica che i file nascosti si trovano un po 'ovunque nel sistema e le chiavi di registro. Il gioco controlla la presenza di queste cose, che possono essere create solo dall'installatore. E il programma di installazione può essere eseguito solo dal CD, che non è copiabile a causa di bit erratici che non rispettano il sistema di codici di correzione degli errori nei primi byte del disco, che uccide la maggior parte dei driver del lettore CD. Alcuni software di copia, come il nero di alcol, ti propongono di ignorare gli errori ma ciò che bruciano è quindi una copia corretta, il programma di installazione lo rileva e il gioco è fatto.

EDIT2:

D: come eseguire l'hash di un file, quindi inserire l'hash nel file che modifica l'hash?

@ Byte56: Accidenti stiamo ricevendo commenti intelligenti qui :) Sì, è un paradosso e non può essere risolto. Quindi l'hash deve essere creato dalla parte del file binario che non contiene l'hash. E il codice di controllo deve saperlo, per escludere quella zona quando si esegue il controllo automatico. Ho visto persone che usano tag, come ~~ #### [metti l'hash qui] #### ~~ per racchiudere il loro hash e fare l'esclusione. Ma ha il difetto di essere facile da individuare per gli hacker, quindi l'hash deve essere confuso e sparso in più posizioni. Anche crittografato perché no, e la stessa operazione di camuffamento va a memorizzare la chiave privata.


Cosa succede se i file di gioco vengono copiati così come sono? L'hash non sarà validato in questo caso?
Panda Pajama,

@PandaPajama: eccellente osservazione. sto facendo una modifica.
v.oddou

In che modo gestiscono l'hash di un eseguibile e quindi la codifica hardware dell'hash nell'eseguibile, cambiando così l'hash?
MichaelHouse

@ Byte56: modificato di nuovo :)
v.oddou il

@MickLH: Devo dire che mi è piaciuta la tua risposta per il motivo che sono d'accordo con l'esperienza che dovrebbe spingere le persone a dare naturalmente soldi per timore. Peccato che non abbia veramente risposto alla domanda e sei stato sottratto (naturalmente si potrebbe dire). Sei troppo assoluto sulla chiave privata. Questa chiave privata non vale altro che la crittografia hash, ad esempio non ha un grande valore come il database delle carte di credito. Ma se insisti, il checksum potrebbe essere inviato sulla rete per il controllo sul server. Ma la sicurezza è tanto forte quanto il suo punto più debole, e questo ha un grave difetto, un hacker
v.oddou

-5

non possono semplicemente mettere una partizione ext su un gioco mac

macs non può leggere ext


Se sulla partizione era necessario un file, il gioco non poteva essere eseguito. Se solo l'esistenza della partizione fosse "prova" che si trattava di una copia legittima, sarebbe incredibilmente facile da replicare.
Jesse Williams,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.