IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Protection anti-triche pour un jeu


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut Protection anti-triche pour un jeu
    Bonjour,
    Je suis actuellement entrain de coder un petit programme test (en mode console c++) dans lequelle il y a des valeurs que je fait changer au cours de son execution. Certaines de ces valeurs changent automatiquement (à l'aide de compteurs), pour d'autres c'est moi même qui les change.
    Ce programme n'a pour but que de me servir de base pour protéger mon jeu des tricheurs.

    J'aimerai donc savoir s'il existe un, ou des, moyens pour protéger un jeu contre la triche. ici je ne considère que les valeurs mises en mémoire (comme les ressources, les points de vie, la position, etc.).

    D'une manière générale, je me demande s'il est possible de vraiment protéger un jeu.

  2. #2
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Pour un jeu hors ligne, c'est impossible d'être sur de contrer la triche. Par contre sur un jeu en ligne, c'est tout à fait faisable.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    en fait il ne s'agit pas d'un jeu en ligne, mais multijoueurs. Je pense donc faire en sorte qu'un joueur joue le rôle de serveur pour une partie, mais j'aimerais éviter que celui qui joue ce rôle n'en profite pour tricher.

  4. #4
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Est ce que tu penses probable qu'un mec aille trifouiller dans tes fichier ou désassemble ton programme pour tricher à ton jeu ?
    "Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
    "Less is more" Ludwig Mies Van Der Rohe

    Risk & Security Mgmt

  5. #5
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut
    Je pense que si tu stockes tes données de manière binaire, le joueur en question aura déjà du mal à tricher. Je ne suis pas sûr qu'il soit nécessaire d'aller plus loin.
    Chen norris
    C/C++, C#, Java, PHP & SQL coder
    Web developer

  6. #6
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Je poserais plutot la question ainsi: si quelqu'un fait serveur et qu'il en profite pour tricher, plus personne ne viendra sur son serveur. Et donc, il restera tout seul sans jouer. Donc, il se punira lui-meme. Quelle energie est-tu pret `a mettre en oeuvre pour empecher ce detail?

    Sinon, une chose que tu peux faire, c'est dans tes fichiers de donnees, ajouter un marqueur de validite et de coherence des donnees enregistrees. Tu fais une fonction de hash sur les donnees enregistrees, et le hash code, tu l'ajoutes `a la fin. Lors de la lecture, tu testes afin de voir si le hash code est le bon, si oui, c'est que les donnees n'ont pas ete modifies...

  7. #7
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Citation Envoyé par luckyvae Voir le message
    Je poserais plutot la question ainsi: si quelqu'un fait serveur et qu'il en profite pour tricher, plus personne ne viendra sur son serveur. Et donc, il restera tout seul sans jouer. Donc, il se punira lui-meme. Quelle energie est-tu pret `a mettre en oeuvre pour empecher ce detail?

    Sinon, une chose que tu peux faire, c'est dans tes fichiers de donnees, ajouter un marqueur de validite et de coherence des donnees enregistrees. Tu fais une fonction de hash sur les donnees enregistrees, et le hash code, tu l'ajoutes `a la fin. Lors de la lecture, tu testes afin de voir si le hash code est le bon, si oui, c'est que les donnees n'ont pas ete modifies...
    ++ bonne idée
    "Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
    "Less is more" Ludwig Mies Van Der Rohe

    Risk & Security Mgmt

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par Anthony.Desvernois Voir le message
    Est ce que tu penses probable qu'un mec aille trifouiller dans tes fichier ou désassemble ton programme pour tricher à ton jeu ?

    Citation Envoyé par luckyvae Voir le message
    Sinon, une chose que tu peux faire, c'est dans tes fichiers de donnees, ajouter un marqueur de validite et de coherence des donnees enregistrees. Tu fais une fonction de hash sur les donnees enregistrees, et le hash code, tu l'ajoutes `a la fin. Lors de la lecture, tu testes afin de voir si le hash code est le bon, si oui, c'est que les donnees n'ont pas ete modifies...
    Je compte faire une vérification à l'aide de l'algorithme MD5 sur les fichiers. Ce que je ne vois pas comment protéger de manière efficace ce sont les valeurs en mémoire. J'avais pensé à "crypter" les données, mais en fait c'est pas efficace, pour expliquation cela consistait à multiplier la valeur d'une variable par un coefficient qui change de manière aléatoire à chaque cycle (bien entendu la valeur affiché à l'écran était diviser par ce facteur) (on peut bien entendu compliquer cette étape, addition, changement de signe...). Dans ce cas le tricheur doit d'abord trouver où se cache le coefficient dans la mémoire, mais il peut la trouver. J'en avais d'ailleurs conclu, qu'à partir du moment où l'on stocke des données dans la mémoire d'un PC, même si on en complique la lecture, un tricheur peut faire ce qu'il veut...

  9. #9
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Penses tu qu'il y aura beaucoup de mec qui s'amuseront à modifier la mémoire utilisé par ton jeu ? Tu te compliques la vie pour rien. Un ptit MD5 sur tes fichiers c'est déjà plus que nécessaire
    "Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
    "Less is more" Ludwig Mies Van Der Rohe

    Risk & Security Mgmt

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    je peux pas te donner tort

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 80
    Points : 30
    Points
    30
    Par défaut
    Bonne idée ,

    Au pire regarde quel système utilise le jeu soldat, à son lancement il est écrit :
    Because of the Anti-Cheat protection system used in Soldat you
    cannot use any hack tools like: memory finders, trainers, packet
    editors, hex editors and disassemblers while Soldat is running
    Contact le créateur (E-mail : michal.marcinkowski<at>gmail.com ) ou regarde le logiciel qui se lance lors d'une partie près de l'horloge windows ( je me rappelle plus du nom )

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    je me rappel que dans Risk You Life il y a aussi ce genre de logiciel, je vais regarder le jeu dont tu m'as parlé

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    bon, j'ai regardé le jeu soldat, j'ai vu que le gars qui a écrit ce jeu le fait dans un but commercial, je pense donc pas qu'il sera ouvert à l'idée de partagé son code anti-triche...

  14. #14
    screetch
    Invité(e)
    Par défaut
    un moyen simple d'eviter la triche de ce gout la est de deplacer la memoire contenant tes valeurs.

    Et egalement de dupliquer tes donnees et de les comparer.

    Les "trainers" lisent la memoire et par exemple, tu continues a amasser de l'argent et le programme essaye de reperer les cases memoires ou la valeur augmente toujours, puis tu achetes un truc et tu dis que maintenant la valeur va augmenter, etc etc.

    Cela permet d'essayer de trouver les cases memoires representant le fric.

    Si la case memoire change en permanence c'est plus dur de la trouver.



    On est jamais a l'abri de la triche, le tout est de se debrouiller pour que ca coute plus au hacker que ca ne lui rapporte.

  15. #15
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par screetch Voir le message
    un moyen simple d'eviter la triche de ce gout la est de deplacer la memoire contenant tes valeurs.

    .
    pas certain et bonjour les plantages , les core dumped et unhandled exception

  16. #16
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    pas certain et bonjour les plantages , les core dumped et unhandled exception
    bah non, c'est plutôt simple à faire, il suffit de stocker les valeurs dans des objets alloué dynamiquement, et a chaque frame, on créer une nouvelle instance, puis on copie et supprime l'objet précédent... bon après, ça fait plus d'allocation mémoire et ça peut fortement fragmenter la mémoire
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  17. #17
    screetch
    Invité(e)
    Par défaut
    testé et approuvé!

    cela n'a pas besoin d'etre fait toute les frames

    tu peux stocker toute tes donnees dans une classe speciale comme "SensitiveDatas" qui s'occuppe de faire les get set, et la reallocation au besoin

    tu peux osciller entre 8-10 cases memoires, et lorsque tu passes d'une case a l'autre tu remplis la case dont tu sors de bêtises qu'un trainer aura du mal a comprendre

    du coup tu fais tes 10 allocations au debut et voila, plus de ralentissement.

    Le coup des core dumps, c'est comme dire que la classe std::string crashe tout le temps car elle travaille avec du char* en interne :-/

  18. #18
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par TocTocKiéLà? Voir le message
    D'une manière générale, je me demande s'il est possible de vraiment protéger un jeu.
    Pour répondre directement à la question c'est un peu difficile car tu as , si tu est sous Windows des API de débogage comme ReadProcessMemory ou de gestion mémoire comme MoveMemory
    Donc si je me fais un utilitaire je balaie les processus en fonction j'obtiens un handle sur ton jeu, je peux utiliser ces API pour l'espionner ce que font peut-être des logiciels d'espionnages de jeu du commerce.
    Un moyen pour contourner cela c'est d'avoir recours à une technique comme le API Hooking
    Sous Linux je ne peux pas dire

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 185
    Points : 118
    Points
    118
    Par défaut
    Merci pour ces réponses, effectivement le coup de ballader les variables m'avait traversé l'esprit; seulement j'ai peur d'avoir à gonfler le programme, sachant qu'il faut que ceux qui écrivent et ceux qui lisent soient synchronnes. J'avais également pensé à doubler les variables, mais ça me semble difficile à contrôler en temps réel... J'ai également pensé coder une valeur, exemple l'or sur deux variables; ainsi la valeur affichée pourrait par exemple être une multiplication des deux, où une addition... j'avais également pensé écrire un chiffre d'une valeur par variable, exemple si OR = 1256, faire une variable mille = 1, centaine = 2, dizaine = 5, unité =6.

    Maintenant ce que je compte faire, c'est écrire de petits programmes en console, qui reprennent chacun une de ces idées. Puis tester de les hacker à l'aide de logiciels prévus à cet effet. Etant donné que je vous fait participer à la réflexion, je trouve normale que si quelqu'un veut participer, que je fournisse les codes et exécutables. En clair je vous invite à hacker .

    Dans tout ça, j'ai tjrs le soucis de ne pas non plus tomber dans une forme de paranoïa, car je crois que surprotéger un jeu est inutil, comme la dit l'un d'entre vous, il faut que cela soit non pas une barrière infranchissable, mais une barrière qui décourage...

    tout commentaire sera tjrs le bienvenu

  20. #20
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Pourquoi vouloir empêcher que les joueurs trichent? Chacun joue comme il veut, tant que ça ne gène pas les autres.

Discussions similaires

  1. Menus en OpenGL pour un jeu?
    Par shifty.net dans le forum OpenGL
    Réponses: 7
    Dernier message: 02/07/2004, 12h38
  2. Réponses: 6
    Dernier message: 30/06/2004, 08h16
  3. [Threads]Comment les organiser pour un jeu du serpent ?
    Par Pill_S dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 11/05/2004, 15h22
  4. Quel style de DirectX pour un jeu 2D ?
    Par delire8 dans le forum DirectX
    Réponses: 34
    Dernier message: 31/07/2003, 00h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo