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

Java Discussion :

Java vs memory editing


Sujet :

Java

  1. #1
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut Java vs memory editing
    Salut,

    Je sais pas si l'intitulé est parlant mais vous allez comprendre de quoi je voulais parler à cette adresse :
    http://www.softcows.com/memory_editor_faqs.htm

    où l'on peut lire :
    Q: Is Quick Memory Editor able to cheat Java games on the internet?
    A: Yes, just select Internet Explorer or whatever your browser is, as the game and search as you normally do, then cheat.
    J'ai essayé et ça marche bien .

    Y a t'il un moyen de prévenir ce genre de modification, par exemple déjà au niveau des accesseurs ?

    Merci.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Manifestement ça accède directement la mémoire, donc à mon avis les accesseurs ou la visibilité des variables n'ont rien à voir là dedans.

    De toute façon si quelqu'un veut tricher sur un jeu en Java, il peut le lancer en debug et il aura accès à toute la pile.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    De toute facon cela ne remet rien en cause.

    La meilleure hypothèse pour un logiciel sécurisé est qu'il ne faut pas faire confiance au client, ainsi toutes les données critiques doivent etre stockée sur le serveur.

    Une autre solution (je ne sais pas comment marche ce logiciel) serait de crypter les données de la meme facon que flash. Mais bon comme c'est pas fait à la base par java, si c'est possible cela doit etre tres lourd. Le mieux reste le serveur.

    Apres cette facilitée à tricher et lier au fait que l'utilisateur arrive a determiner quelle memoire correspond a quoi. Selon le jeu, tricher est donc plus ou moins facile. Si le jeu repose sur des variables dont l'utilisateur n'a pas conscience cela sera plus dur pour lui de tricher.
    Ex : Si l'or est affiché, il sera relativement facile pour l'utilisateur de retrouver la memoire associée.

    Une solution assez efficace mais ralentissant le jeu est de creer des codes de verifications. Du genre MD5 et en cas de non conformité arréter le jeu. Cela est vraiment efficace pour tester si les fichiers de données ne sont pas corrompus/modifiés. L'application à la mémoire implique que ce code soit recalculé de nombreuses fois... (On pourrait envisager un code par objet. )

  4. #4
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    La meilleure hypothèse pour un logiciel sécurisé est qu'il ne faut pas faire confiance au client, ainsi toutes les données critiques doivent etre stockée sur le serveur.
    En fait c'est un jeu multijoueur en développement depuis 1 an et je vais faire une sorte de beta test d'ici à deux mois. Je commence à penser aux façons de tricher.
    Pour les données critiques toutes les données critiques sont gérées par le serveur. Le seul problème c'est qu'il est toujours possible d'altérer certaines variables en mémoires qui servent à redessiner certains graphismes et en particulier la droite qui matérialise la ligne de visée du joueur. Pour un jeu similaire en flash, il m'avait suffit de changer la valeur d'une variable pour que cette ligne de visée soit infinie (pour trouver l'adresse de la variable il a juste fallu repérer son adresse dans le source).
    Peut-etre que la création d'un objet encapsulant ces variables rendrait dynamique cet adressage ?

    Une solution assez efficace mais ralentissant le jeu est de creer des codes de verifications. Du genre MD5 et en cas de non conformité arréter le jeu.
    oui ou alors vérifier la valeur du hashcode des objets critiques et là si non conformité je mets le joueur sur la liste noire.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    A mon avis tu perds ton temps, si quelqu'un a envie de tricher en manipulant le client, tu n'as aucun moyen de l'en empêcher. Le coup de la mémoire cryptée, ça ne sert à rien puisqu'il faut que le client ait la clé pour fonctionner. Et s'il a la clé c'est comme si ce n'était pas crypté.

    Si tu mets des contrôles d'intégrité, il va décompiler ton code, le lancer en debug et voir comment ça marche. Il n'aura aucun mal à désactiver la fonction censée le mettre sur liste noire.

    Il faut trouver un compromis entre le temps que tu passes à prévenir la triche et le nombre de tricheur que acceptes de laisser passer.

  6. #6
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    Si tu mets des contrôles d'intégrité, il va décompiler ton code, le lancer en debug et voir comment ça marche. Il n'aura aucun mal à désactiver la fonction censée le mettre sur liste noire.
    justement pour les contrôles d'intégriter, je fais aussi exécuter au client du code distant dans certains cas. J'essaye donc de jouer sur le fait que le tricheur ne peux pas comprendre le code ainsi exécuté en un temps trés court. C'est sûr que ça mange de la bande passante mais si je le fais seulement en cas de suspicion ça devrait aller.
    Si jamais le client repère la commande servant à ce genre de contrôle et stope la connection dés qu'il y a un contrôle, je le mets sur la liste noire.

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 241
    Par défaut
    Bonjour,
    s'il s'agit effectivement d'un jeu de type MMOG, ceci m'inquiète.
    Citation Envoyé par orelero
    Le seul problème c'est qu'il est toujours possible d'altérer certaines variables en mémoires qui servent à redessiner certains graphismes et en particulier la droite qui matérialise la ligne de visée du joueur. Pour un jeu similaire en flash, il m'avait suffit de changer la valeur d'une variable pour que cette ligne de visée soit infinie (pour trouver l'adresse de la variable il a juste fallu repérer son adresse dans le source).
    Si j'ai parfaitement compris et déduit le fonctionnement de la "ligne de visée", cela correspond au champ de vision environnant le joueur? Mais ne doit-on pas calculer ceci dans le serveur en envoyant un message au client lui disant:" Tiens, voici ce que tu vois " ?

    S. Desbois

  8. #8
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    non en fait c'est un jeu "semi temps réel" où l'on peut tirer sur ses adversaire. On est repésenté par un tank et lorsque l'on veut visée, il y a cette ligne de visée qui prolonge le canon de la tourelle (pour aider à viser).

Discussions similaires

  1. Java outOf memory
    Par soukaina123 dans le forum Général Java
    Réponses: 19
    Dernier message: 08/07/2014, 19h17
  2. [Livre] Java & XML 2nd Edition
    Par khayyam90 dans le forum Livres
    Réponses: 0
    Dernier message: 25/06/2014, 20h52
  3. [Moon Edit] Est ce du Java ?
    Par Rekiem dans le forum Général Java
    Réponses: 4
    Dernier message: 21/01/2006, 17h06
  4. [Print]Edition en java : JTable ou JasperReports
    Par calimero82 dans le forum Composants
    Réponses: 5
    Dernier message: 05/11/2004, 15h50
  5. Edition d'un simple fichier java
    Par mcrepin dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 21/03/2003, 14h28

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