Être capable de décompiler / rétroconcevoir facilement le code client n'est vraiment qu'un léger obstacle. Des pirates informatiques entreprenants ont plié les exécutables à leur gré (malicieusement et non) pendant des années avant que des langages de haut niveau, faciles à décompiler comme C #, n'entrent en scène. La sécurité par l'obscurité seule n'est pas du tout une sécurité.
Toutes les données présentes sur la machine de l'utilisateur (code ou données d'actif standard) sont déjà essentiellement compromises. Vous ne pouvez pas vraiment vous protéger contre cela - si vous ne voulez pas que les gens éditent des données, ne les mettez pas sur leur machine, enregistrez-les sur vos serveurs. De même, si vous ne voulez pas qu'ils modifient le code dans le client, assurez-vous que le client n'a aucun contrôle sur quoi que ce soit d'utile.
Si ce n'est pas une option (par exemple, votre multijoueur est entièrement peer-to-peer), vous pouvez faire des choses comme calculer les hachages des ressources pertinentes et autoriser les gens à jouer entre eux uniquement si les hachages correspondent. Oui, quelqu'un pourrait soigneusement créer une modification de l'exécutable de manière à ce qu'elle renvoie un hachage différent, mais tout cela devrait signifier que le joueur fautif se désynchronisera et se déconnectera du jeu relativement rapidement car ses ressources ne correspondent pas au reste de les joueurs'.
Vous pouvez également utiliser un type de test de «règles de majorité» qui vous permet de déconnecter les joueurs dont la simulation a dérivé de la synchronisation avec les autres joueurs, donnant au joueur «hôte» (celui qui a commencé le jeu) le vote décisif.
Lorsque nous commencions à peine à développer notre jeu actuel, nous voulions également avoir un mode de jeu hors ligne. L'idée était de permettre aux joueurs de jouer à travers les niveaux de jeu hors ligne, puis de synchroniser leur progression lorsqu'ils se connectent. Nous avons donc longuement réfléchi à la manière de prévenir la tricherie. La conclusion était: nous ne pouvons pas. Il n'y a vraiment aucun moyen de laisser les joueurs jouer hors ligne et être sûrs à 100% qu'ils n'ont pas triché.
la source
Le hachage est une solution simple utilisée avec le téléchargement de fichiers. Hachez le fichier de sauvegarde et stockez cette "empreinte digitale" quelque part. Lorsque vous le chargez, hachez le fichier et vérifiez-le par rapport à l'empreinte digitale. S'ils ne correspondent pas, le fichier a été modifié.
Bien sûr, si quelqu'un décompile votre code, vous ne pouvez rien faire. Pour cette réponse, cela signifie qu'ils peuvent également stocker le hachage du fichier de sauvegarde modifié.
Une autre option serait d'envoyer l'empreinte digitale à un serveur quelque part, où l'utilisateur final ne peut pas le modifier manuellement s'il a modifié le fichier de sauvegarde. Ceci est similaire à ce que fait iTunes lors de la restauration des images iPhone.
la source