Je lisais récemment un article sur les façons intelligentes dont les programmeurs ont protégé leurs jeux contre les pirates, tels que les créateurs de Game Dev Tycoon . Cela m'a rendu curieux: comment détectent-ils que la copie du jeu en cours d'exécution est en fait une version piratée au niveau technique? La réponse la plus proche que j'ai pu trouver grâce à certaines recherches était de savoir comment les cartouches SNES peuvent détecter si elles sont piratées , mais cette tactique ne s'applique évidemment pas aux PC.
27
Réponses:
Tout d'abord: il n'y a aucun moyen pour un ordinateur de savoir si un fichier est piraté ou non. Le piratage est un terme juridique / moral, et comme tel, il n'a aucune signification sur un fichier, qui n'est composé que de uns et de zéros.
Cela dit, la prévention du piratage et les contre-mesures visent généralement à savoir si un utilisateur possède ou non quelque chose (généralement un objet) qui ne peut être obtenu que si une copie du jeu a été achetée, et qui rend la reproduction difficile. Il existe de nombreuses façons de le faire, chacune présentant des avantages et des défauts. J'en mentionnerai quelques-uns:
Les premiers jeux demandaient aux utilisateurs de saisir un mot du manuel du jeu, que vous ne devriez obtenir que si vous avez acheté une boîte de jeu. Un photocopieur ou un scanner déjoue facilement cette technique.
Plus récemment, les vérifications des médias sont plus courantes. L'idée est que vous avez besoin du CD du jeu dans le lecteur pour que le jeu fonctionne. Pour l'implémenter, vous pouvez par exemple accéder aux fichiers de données critiques à partir du CD sans lesquels le jeu ne peut pas fonctionner, ou simplement vérifier l'existence d'un fichier sur le CD. Cela fonctionnait assez bien lorsque les CD étaient difficiles à dupliquer, mais les copieurs de CD et, plus récemment, les émulateurs de lecteurs peuvent être utilisés pour déjouer facilement cette technique.
Cependant, les copies de CD ne sont pas parfaites, de nombreuses autres techniques visent donc à détecter si le CD est le CD d'origine pressé ou une copie. Pour implémenter cela, un jeu peut vérifier les éléments non standard qui sont insérés sur le disque du jeu pendant le temps de presse, mais ne peuvent pas être reproduits facilement et de manière fiable par un graveur de CD, sur un CD-R. Voici quelques façons courantes de procéder:
Création de fichiers "fantômes" fictifs sur le CD pendant le mastering, qui ne sont pas accessibles depuis le système de fichiers du CD, mais existent, et peuvent être lus si vous savez où les trouver. Ces données sont absentes sur les copies de disque fichier par fichier. La copie de l'image du disque entier copiera cependant ces fichiers.
Une autre façon consiste à insérer intentionnellement des erreurs dans le disque. Les CD contiennent des codes de correction d'erreur. En insérant des erreurs dans les données, qui peuvent être corrigées de manière transparente par un lecteur de disque, le disque fonctionnera normalement, mais les erreurs ne seront pas copiées sur le CD-R. En recherchant ces erreurs intentionnelles, un jeu peut considérer un CD comme une copie originale pressée. Les copies d'images de disque RAW le contrecarrent cependant.
L'insertion de secteurs jumeaux, avec la même adresse mais des données différentes produira des résultats différents lors de la recherche de données en avant et en arrière. Vérifier l'existence de ceci est possible, et la duplication d'un CD avec ces secteurs jumeaux est très difficile.
Mesurer la position réelle des puits dans le CD. Encore une fois, la duplication d'un CD avec les fosses dans les mêmes positions est très difficile.
Cependant, de nombreux émulateurs de CD, comme Daemon Tools ou Alcohol 120% peuvent réellement émuler ces fonctionnalités. Pour cette raison, de nombreux éditeurs choisissent d'inclure une étape de détection d'émulateur de CD et empêchent le jeu de s'exécuter si un émulateur est détecté. L'implémentation d'un détecteur émulateur est cependant hors de portée de cette réponse.
Au lieu de, ou en plus de rechercher un CD physique, un jeu peut demander à l'utilisateur de saisir certaines données, comme une clé de produit . Voici quelques façons d'utiliser les clés de produit:
Vérification des fonctionnalités mathématiques dans la clé. Cependant, cela n'empêche pas la duplication des clés, et si l'algorithme de vérification est découvert ou reconstitué, un pirate peut être en mesure de créer à volonté de nouvelles clés qui sembleront légitimes pour le jeu. Les logiciels qui créent des clés à volonté sont appelés " keygens ".
En générant un hachage basé sur le matériel de l'utilisateur, envoyez ce hachage et la clé de produit (généralement une combinaison, appelée "clé d'installation") à un serveur appartenant à la société de jeux, et en fonction du hachage et de la série, créez une clé d'activation . En utilisant des méthodes numériques à sens unique (comme l'arithmétique modulaire ou certaines méthodes avec des courbes elliptiques), un jeu peut voir si la clé d'activation correspond au hachage et au code série, et ne s'exécuter que si elles correspondent. Cette technique est appelée "activation".
Avec l'activation, un serveur peut refuser de fournir des clés d'activation pour plusieurs hachages matériels avec le même code de série. Pour cette raison, même si le code de série et la clé d'activation sont copiés, la clé d'activation ne correspondra pas et le jeu ne fonctionnera pas sur d'autres ordinateurs.
Toutes ces mesures visent à déterminer si l'utilisateur possède ou non une copie achetée du jeu. Cependant, leur mise en œuvre nécessite un code de programme qui vérifie cela. Il est possible pour un pirate de modifier le code du jeu pour désactiver ou contourner les contrôles au lieu d'attaquer les mécanismes de protection contre la copie eux-mêmes. L'acte de modifier les binaires du jeu pour supprimer les contrôles anti-piratage est appelé "cracking".
Le cracking peut simplement consister à démonter l'exécutable du jeu, à trouver l'endroit où les vérifications pertinentes sont effectuées, à le modifier pour désactiver les vérifications ou à ignorer les résultats, et à le réassembler. Voici quelques moyens de lutter contre la fissuration:
Vérification du binaire avec un peu de hachage. Cependant, il doit y avoir un programme qui vérifie le hachage, qui peut également être piraté.
Crypter le programme, ou simplement la routine de vérification, et le décrypter en runtime. Cela rend le démontage plus difficile, car il implique une ou plusieurs étapes de déchiffrement supplémentaires. SI la clé de déchiffrement est incluse dans le programme (comme elle doit l'être, car sans elle, le jeu ne peut pas être déchiffré), alors le pirate peut inverser le déchiffrement, trouver la routine et casser la protection contre la copie.
Pour cette raison, en tant qu'éditeur de jeux, vous souhaitez rendre la clé aussi difficile à trouver que possible, et éventuellement rendre l'algorithme de déchiffrement difficile à comprendre. Voici quelques façons de rendre la clé difficile à trouver:
Obscurcissez-le en le créant de façon étrange. Cela ralentit simplement le processus de fissuration.
Créez des clés principales par machine similaires à la protection série mentionnée ci-dessus.
Cependant, quelle que soit la méthode que vous utilisez pour créer vos clés, les clés elles-mêmes seront en mémoire pendant le décryptage. Les inspecteurs de mémoire, les débogueurs et les émulateurs peuvent aider un pirate à trouver et à copier la clé lorsqu'elle est en mémoire. La mémoire furtive peut être attaquée de plusieurs manières:
Avoir un service privilégié qui détecte les accès à la mémoire dans la région spécifiée et redirige l'adressage ailleurs. Comme cela nécessite un accès à Ring 0 et que les programmes qui le font sont plus couramment utilisés à des fins non légitimes , les logiciels antivirus les bloquent généralement. (c'est pourquoi de nombreux jeux et autres logiciels demandent de désactiver la protection antivirus lors de l'exécution). L'écriture d'un logiciel qui le fait correctement est extrêmement difficile et peut facilement compromettre la stabilité et la sécurité du système d'exploitation hôte. Le scandale XCP est un bon exemple d'implémentation de cette méthode qui a mal tourné.
Le matériel et les systèmes d'exploitation modernes fournissent certains outils, tels que des rideaux de mémoire , des chemins d'accès sécurisés et des modules TP , pour faciliter la création d'un programme qui déchiffre les données, tout en résistant à l'inspection de la mémoire.
Il existe de nombreuses autres techniques pour attaquer le piratage, allant du trivial à l'ésotérique. Malheureusement, il est possible que toutes ces techniques ne reconnaissent pas une copie authentique, et ce sont généralement les techniques les plus agressives qui ont des taux de faux positifs plus élevés.
En tant qu'éditeur de jeux, vous souhaitez généralement choisir un ensemble de techniques dont le coût de mise en œuvre, le temps de cracking prévu et le taux de faux positifs correspondent à vos attentes.
Il est faux de penser que la protection contre le piratage est censée être totalement incassable. La plupart des ventes de jeux ont lieu dans les premiers mois suivant leur sortie, donc un système de protection contre le piratage est généralement considéré comme efficace si le briser prend suffisamment de temps pour que l'éditeur du jeu recueille une grande quantité de bénéfices avant qu'il ne soit brisé.
Concernant Game Dev Tycoon, ils n'ont utilisé aucune technologie anti-piratage. Ils ont simplement créé une version "cassée" et l'ont distribuée sur BitTorrent, comme indiqué au début de l'article que vous avez mentionné.
la source
C'est assez facile, il vous suffit d'exécuter un MD5 ou SHA256 sur votre propre exécutable, puis, lorsque vous détectez que la signature a changé de ce que vous avez codé en dur en binaire après avoir construit la version finale, il est clair que quelqu'un a piraté votre exécutable. Ensuite, la plupart des entreprises ne montrent plus seulement une fenêtre contextuelle (ce qui était le cas auparavant) qui dit «PE cassé» ou «virus détecté», puis quittez le jeu, car cela sera très rapidement contre-cracké par les pirates. Parce que le jeu est suspendu sur la boucle de message de la boîte de dialogue, il est donc immédiat de voir à cause de quelle branche la boîte de dialogue a été affichée, et contournez simplement la branche en changeant le code lors de la vérification de la condition.
Aujourd'hui, les entreprises utilisent des changements de jeu très subtils, comme multiplier la vie des monstres pour rendre le jeu injouable, ou incroyablement intelligemment intégré dans ce jeu de gestion, où vous dirigez une société de jeux et vous perdez finalement parce que trop de joueurs pirataient votre jeu. Jolie mise en abyme dans ce cas. Parfois, il vous obtient simplement un drapeau rouge téléchargé sur les serveurs de l'entreprise, et lorsque vous souhaitez les appeler pour obtenir de l'aide, vous obtenez un discours, ou piégé dans la révélation de votre identité.
mais c'est tout le sujet, la technique est hachée. et ces vérifications peuvent être exécutées à de nombreux endroits dans le binaire de sorte que si les pirates en trouvent un et le suppriment, ce n'est pas suffisant.
EDIT: Si vous copiez simplement le jeu tel quel, cela peut fonctionner si le jeu n'a aucune mesure anti-piratage. Il fonctionnait avec de très vieux jeux, avant l'ère des graveurs de CD. C'est pourquoi, la plupart du temps, le jeu doit être installé pour fonctionner, pas seulement le dossier d'installation copié. Cela implique des fichiers cachés placés un peu partout dans le système et des clés de registre. Le jeu vérifie la présence de ces éléments, qui ne peuvent être créés que par l'installateur. Et le programme d'installation ne peut être exécuté qu'à partir du CD, qui n'est pas copiable en raison de bits erratiques qui ne respectent pas le système de code de correction d'erreur dans les premiers octets du disque, ce qui tue la plupart des pilotes de lecteur de CD. Certains logiciels de copie, comme Nero of Alcohol, vous proposent d'ignorer les erreurs mais ce qu'ils brûlent est alors une copie corrigée, l'installateur le détecte et vous y retournez.
EDIT2:
@ Byte56: Merde, nous recevons des commentaires intelligents ici :) Oui, c'est un paradoxe et il ne peut pas être résolu. Le hachage doit donc être fait de la part du binaire qui ne contient pas le hachage. Et le code de vérification doit savoir cela, pour exclure cette zone lors du hachage pour l'auto-vérification. J'ai vu des gens utiliser des balises, comme ~~ #### [mettre le hachage ici] #### ~~ pour joindre leur hachage et faire l'exclusion. Mais il a le défaut d'être facile à repérer pour les pirates, donc le hachage doit être brouillé et dispersé à plusieurs endroits. Même chiffré pourquoi pas, et la même opération de camouflage va stocker la clé privée.
la source
ne peuvent pas juste mettre une partition ext sur un jeu mac
macs ne peut pas lire ext
la source