Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Resolu] Empecher l'utilisateur de modifier les fichiers du jeu  (Lu 1972 fois)

0 Membres et 1 Invité sur ce sujet

Despay

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Bonjour,

tout est dans le titre, je cherche un moyen efficace de 'cacher/protéger' les ressources de mon jeu tel que les sprites, map, et peut être de futurs scripts.

Merci a vous.
« Modifié: Avril 12, 2015, 07:19:54 pm par Despay »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Empecher l'utilisateur de modifier les fichiers du jeu
« Réponse #1 le: Avril 12, 2015, 07:06:12 pm »
Réponse 1 : ça ne sert à rien.

Réponse 2 : embarque les dans ton exécutable, ou dans un fichier de données externe au format plus compliqué à lire. Après tout dépend du niveau de protection que tu veux.
Laurent Gomila - SFML developer

kimci86

  • Full Member
  • ***
  • Messages: 128
    • Voir le profil
Re : Empecher l'utilisateur de modifier les fichiers du jeu
« Réponse #2 le: Avril 12, 2015, 07:09:04 pm »
Sachant que ton jeu sera capable d'accéder aux ressources en clair, il est évident qu'il n'y a pas de méthode incassable. Comme dit Laurent, ça ne sert à rien.
Il n'y a pas à ma connaissance de méthode canonique pour accomplir ce que tu veux. Cependant, je pense que tu peux par exemple mettre toutes tes ressources dans une archive compressée et/ou appliquer une transformation bijective pour mettre un peu de pagaille dans les données.
J'espère que cela t'aura aidé.

Despay

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Re : Empecher l'utilisateur de modifier les fichiers du jeu
« Réponse #3 le: Avril 12, 2015, 07:19:34 pm »
Du coup je pense que la meilleure solution est l'archive. Je souhaite un minimum de protection du fait que j'ai pour projet de faire un jeu multijoueur, j'aimerais éviter que les utilisateurs bidouilleur mettent les mains ou il ne faut pas :P.

Merci de vos réponses !

blackmetal

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
    • E-mail
Re : [Resolu] Empecher l'utilisateur de modifier les fichiers du jeu
« Réponse #4 le: Avril 19, 2015, 04:47:13 am »
Je ne suis pas expert dans le domaine mais un moyen facile de gérer ca si ton jeu est multijoueur c'est d'utiliser un checksum.

C'est un petit programme (voir un petit algo que tu peux inclure dans ton code) qui prends un fichier, fait un ensemble de calculs sur ce qu'il contient et te ressort un identifiant, par exemple: t5788927jiqc8hz7az1.

Voici la doc wikipedia du md5sum en anglais: http://en.wikipedia.org/wiki/Md5sum

L'objectif est que tu le passe sur chacun des fichiers que tu veux protéger. Cela va te donner un identifiant unique par fichier. Tu les enregistre coté serveur de ton application dans une hashmap (table qui relie une clé à une valeur) avec pour clé le nom de ton fichier de ressource et pour valeur l'identifiant du checksum.

Ensuite, quand tu veux dans ton programme (au lancement par exemple), ton application client passe le checksum sur l'ensemble des fichiers que tu veux vérifier et demande confirmation au serveur.

Tu n'aura qu'a comparer le checksum effectué par ton client à celui pré-enregistré par ton serveur.
Si ils sont différents, l'utilisateur a modifié les ressources et tu peux lui mettre un message d'erreur du genre: Le je ne se lancera pas car vous avez toucher les ressources, veuillez restaurer l'installation initiale.

Le seul inconvénient de cette technique est que le checksum peut être long si tu veux avoir une sécurité élevée et que tu as beaucoup de données (je n'ai pas d'ordre de grandeur à te donner par contre, trop longtemps que je n'ai pas remis les mains la dedans). Du coup, il vaudrait mieux le faire en même temps que tu charges les données en mémoire, par exemple quand ton joueur entre dans une nouvelle map ou charge sa partie.

Tu peux faire ca pour toutes tes ressources, même pour la sauvegarde de ton joueur. Au moment ou il sauvegarde, tu checksum son fichier et tu envoi la valeur au serveur (tu peux même envoyer une copie du perso par précaution si tu ne veux pas perdre les données au cas ou elles aient été modifiées). Le serveur la sauvegarde et au prochain chargement, tu la vérifie. Ca te permettra d'éviter que le joueur se booste les stats, se rajoute de l'argent, des items, etc.

En espérant t'avoir été utile :)