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 :

Protection contre la copie en java


Sujet :

Java

  1. #1
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut Protection contre la copie en java
    Bonjour à tous

    Je suis en train de développer un jeu en java que je compte vendre. Je cherche (peut être mal) depuis un certain temps un moyen d’empêcher la copie du logiciel. L'idée n'est pas d'avoir une protection totale et imparable je suis bien conscient que ça n'existe pas mais disons que je cherche un système qui rend difficile la copie.
    Pour l'instant je cherche surtout une solution Windows ou Mac.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    La premiere chose à savoir est qu'il est facile de decompiler un .jar (c'est à dire de prendre un .jar et de retrouver les sources java).
    Pour protéger ton jeu, tu peux deja obfusquer ton code (renommer tes classes pour qu'elle ne veulent rien dire, ...). Pour cela, il existe des logiciels comme proguard:
    http://proguard.sourceforge.net/

    Pour essayer d'avoir une vraie protection, il faut passer par un serveur et/ou du physique (dongle usb, ...). Mais c'est pas forcement simple donc il faut voir quel est l'investissement (en temps et en argent) que tu acceptes pour proteger ton programme. Pour determiner cela, il faut essayer de voir à combien de personnes tu penses pouvoir vendre ton projet et à quel prix (c'est ca qui determine quel effort sera pret à faire quelqu'un pour te hacker).
    Surtout, il ne faut pas perdre de vue que plus tu ajoutes de protections, plus tu embetes tes utilisateurs payants (parce que ca les oblige à avoir une connexion internet si c'est un serveur, parce que ca demande un dongle, ...). Donc, il ne faut pas sur-dimensionner les protections non plus...

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    C'est vrai que c'est une bonne question. Quand on dit "protéger contre la copie" on parle de quelle copie ?

    - S'il s'agit d'empêcher l'utilisateur lambda de donner à son pote une copie du jeu pour qu'ils puissent tous les deux jouer en n'ayant acheté qu'un seul jeu, eh ben... Y a pas grand-chose.
    Si on veut pas y réfléchir par soi-même, je proposerai de faire comme tous les jeux de notre ère du Steam, Battlenet et j'en passe : les jeux fournissent au joueur une "identité" en ligne, qui lui vient soit d'un compte créé soit d'une "licence d'utilisation", et le joueur ne peut pas jouer avant d'avoir connecté son identité en ligne au moins une fois, ainsi que régulièrement. Et la même identité ne peut pas être en ligne depuis deux postes différents, donc impossible pour les deux potes de jouer en même temps. A des moments différents par contre, c'est interdit et mal, mais possible.
    Et précision importante : tout ça, ou en tout cas la majeure partie, il va falloir se le coltiner soi-même, parce que rien n'est prévu pour.

    - S'il s'agit d'empêcher des programmeurs concurrents de reprendre le jeu pour s'en servir à leur sauce et le revendre en leur nom, il y a bien proguard pour que ce soit pas trop facile à comprendre.
    Mais bon, au bout d'un moment le voleur de code il a pas vraiment besoin de savoir comment marche le code, il a juste besoin de le voler pour que ça fasse la même chose. Et un programmeur ça se laisse quand même pas trop impressionner par de la simple offuscation. De par sa conception robuste et élégante, la plate-forme Java est bien trop facile à étudier et à reprendre en pièces détachées pour se protéger contre la reprise. Si ce genre de concepts existent avec des technologies de code natif, c'est simplement parce que les processeurs natifs et leur architecture sont des abominations sans queue ni tête.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par thelvin Voir le message
    C'est vrai que c'est une bonne question. Quand on dit "protéger contre la copie" on parle de quelle copie ?

    - S'il s'agit d'empêcher l'utilisateur lambda de donner à son pote une copie du jeu pour qu'ils puissent tous les deux jouer en n'ayant acheté qu'un seul jeu, eh ben... Y a pas grand-chose.
    Si on veut pas y réfléchir par soi-même, je proposerai de faire comme tous les jeux de notre ère du Steam, Battlenet et j'en passe : les jeux fournissent au joueur une "identité" en ligne, qui lui vient soit d'un compte créé soit d'une "licence d'utilisation", et le joueur ne peut pas jouer avant d'avoir connecté son identité en ligne au moins une fois, ainsi que régulièrement. Et la même identité ne peut pas être en ligne depuis deux postes différents, donc impossible pour les deux potes de jouer en même temps. A des moments différents par contre, c'est interdit et mal, mais possible.
    Et précision importante : tout ça, ou en tout cas la majeure partie, il va falloir se le coltiner soi-même, parce que rien n'est prévu pour.
    C'est surtout de ça dont je veux protéger le jeu. Qu'un joueur qui a acheté le jeu ne le redistribue pas gratuitement à tous ses copains. J'avais bien pensé à un système de licences mais je ne sais pas comment le mettre en place. Je veux éviter la connexion internet à chaque lancement de jeu car le public visé pour ce jeu n'a pas forcément possibilité de ce connecter.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  5. #5
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Dans ce cas, il faut que tu definisses un cahier des charges:
    - Est ce que l'utilisateur doit avoir une connexion internet pour utiliser ton jeu ? => A priori non
    - Est ce qu'il est acceptable de demander une connexion internet uniquement à l'installation ?
    - Est ce qu'il est acceptable d'avoir un dongle physique ?
    - Est ce qu'un utilisateur (qui a payé) peut jouer sur plusieurs ordinateurs ? => Si oui, ca devient compliqué de proteger le jeu sans connexion internet
    - Dans le cas ou tu voudrais lier ton jeu à un ordinateur (donc non à la question précédente), comment geres tu le cas d'un utilisateur payant qui change d'ordi ?

    Il faut bien comprendre que les protections que tu vas mettre en oeuvre vont 99,9% du temps embeter tes utilisateurs payants et vont necessiter de ta part du SAV (en plus du developpement des protections en question). Par ailleurs, j'imagine que tu n'es pas microsoft donc la pérennité de ton SAV n'est pas assurée. En ce qui me concerne, il y a tres peu de chances que j'achete un jeu (meme bien fait) si j'ai un doute sur le fait que je pourrais encore l'utiliser si je change d'ordi.

  6. #6
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par hwoarang Voir le message
    - Est ce que l'utilisateur doit avoir une connexion internet pour utiliser ton jeu ? => A priori non
    NON
    Citation Envoyé par hwoarang Voir le message
    - Est ce qu'il est acceptable de demander une connexion internet uniquement à l'installation ?
    OUI
    Citation Envoyé par hwoarang Voir le message
    - Est ce qu'il est acceptable d'avoir un dongle physique ?
    NON
    Citation Envoyé par hwoarang Voir le message
    - Est ce qu'un utilisateur (qui a payé) peut jouer sur plusieurs ordinateurs ? => Si oui, ca devient compliqué de proteger le jeu sans connexion internet
    NON
    Citation Envoyé par hwoarang Voir le message
    - Dans le cas ou tu voudrais lier ton jeu à un ordinateur (donc non à la question précédente), comment geres tu le cas d'un utilisateur payant qui change d'ordi ?
    Il demande une nouvelle licence en fournissant l'ancienne

    Citation Envoyé par hwoarang Voir le message
    Il faut bien comprendre que les protections que tu vas mettre en oeuvre vont 99,9% du temps embeter tes utilisateurs payants et vont necessiter de ta part du SAV (en plus du developpement des protections en question). Par ailleurs, j'imagine que tu n'es pas microsoft donc la pérennité de ton SAV n'est pas assurée. En ce qui me concerne, il y a tres peu de chances que j'achete un jeu (meme bien fait) si j'ai un doute sur le fait que je pourrais encore l'utiliser si je change d'ordi.
    Justement je ne veux pas un truc qui gène les utilisateurs je veux juste une protection qui empêche un acheteur de refiler le jeu à tous ses copains. Quand tu achètes un jeu dans le commerce en général tu peux l'installer sur une machine et tu as souvent la possibilité de le faire sur une nouvelle. Sans que ce soit la croix et la bannière.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  7. #7
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    Il demande une nouvelle licence en fournissant l'ancienne
    Typiquement, ca, ca necessite du SAV et ca rend ton jeu potentiellement non perenne (si tu arretes la maintenance, au fur et a mesure que les utilisateurs renouvellent leurs ordis, ils ne peuvent plus utiliser le jeu payé).

    Citation Envoyé par Gouyon Voir le message
    Justement je ne veux pas un truc qui gène les utilisateurs je veux juste une protection qui empêche un acheteur de refiler le jeu à tous ses copains
    Les protections que tu vas mettre, dans tous les cas, generont tes utilisateurs. Par exemple, lorsque les editeurs ont sorti les CD/DVD "incopiables", les utilisateurs payants ne pouvaient plus faire une copie de sauvegarde. Et s'ils abimaient leur CD, il fallait passer par le bon vouloir de l'editeur pour avoir une nouvelle copie.

    Citation Envoyé par Gouyon Voir le message
    Quand tu achètes un jeu dans le commerce en général tu peux l'installer sur une machine et tu as souvent la possibilité de le faire sur une nouvelle. Sans que ce soit la croix et la bannière.
    Les anciens jeux necessitaient la présence du CD pour fonctionner. C'est donc l'equivalent d'utiliser un dongle.
    Les nouveaux jeux demandent une connexion internet.
    Et pour ta derniere remarque, pour en avoir fait les frais, je te confirme que ca peut etre la croix et la banniere d'obtenir une nouvelle license lorsqu'on change d'ordinateur. Et je parle d'un fonctionnement similaire à ce que tu souhaites mettre en place (license necessaire à l'installation et remplacement de la license en cas de changement d'ordi).

    Maintenant, il faut determiner le niveau de sécurité que tu veux. Les basiques facilement crackables: un flag dans un fichier de config ou un registre.
    Sinon, pour avoir une protection un peu meilleure, tu peux utiliser un identifiant du PC (par exemple ID du processeur) pour crypter des données critiques de l'application et utiliser ce meme ID pour les decrypter. Note que si tu fais ca, il convient de ne stocker les données en question que sur le serveur et de ne les transmettre qu'au moment de l'enregistrement, après cryptage.

  8. #8
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par hwoarang Voir le message
    Typiquement, ca, ca necessite du SAV et ca rend ton jeu potentiellement non perenne (si tu arretes la maintenance, au fur et a mesure que les utilisateurs renouvellent leurs ordis, ils ne peuvent plus utiliser le jeu payé).
    Il y aura du SAV car le jeu est prévu pour évoluer dans le temps et il y aura des mise à jour ou extensions payantes régulières.

    Citation Envoyé par hwoarang Voir le message
    Et pour ta derniere remarque, pour en avoir fait les frais, je te confirme que ca peut etre la croix et la banniere d'obtenir une nouvelle license lorsqu'on change d'ordinateur. Et je parle d'un fonctionnement similaire à ce que tu souhaites mettre en place (license necessaire à l'installation et remplacement de la license en cas de changement d'ordi).
    Ca dépend du type de protection je penses j'ai plusieurs jeux que j'ai pu installer à nouveau sans problèmes et d'autres qui ne fonctionnaient plus parce que le nouveau matériel n'était pas pris en charge

    Citation Envoyé par hwoarang Voir le message
    Maintenant, il faut determiner le niveau de sécurité que tu veux. Les basiques facilement crackables: un flag dans un fichier de config ou un registre.
    Sinon, pour avoir une protection un peu meilleure, tu peux utiliser un identifiant du PC (par exemple ID du processeur) pour crypter des données critiques de l'application et utiliser ce meme ID pour les decrypter. Note que si tu fais ca, il convient de ne stocker les données en question que sur le serveur et de ne les transmettre qu'au moment de l'enregistrement, après cryptage.
    La seconde me convient très bien. J'avais pensé utiliser l'adresse MAC de la machine mais je me suis aperçu que ce n'est pas toujours possible.
    Exemple sur mon portable la routine ci-dessous me donne A1-B2-C3-D4-E5-F6 lorsque je suis connecté au réseau et rien du tout si je ne le suis pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    private void getMAC() {
    		try {
    			InetAddress address = InetAddress.getLocalHost();
    			NetworkInterface ni = NetworkInterface.getByInetAddress(address);
    			if (ni != null) {
    				byte[] mac = ni.getHardwareAddress();
    				if (mac != null) {
    					for (int i = 0; i < mac.length; i++) {
    						System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");
    					}
    				} else {
    					System.out.println("Address doesn't exist or is not " + "accessible.");
    				}
    			} else {
    				System.out.println("Network Interface for the specified " + "address is not found.");
    			}
    		} catch (UnknownHostException e) {
    			e.printStackTrace();
    		} catch (SocketException e) {
    			e.printStackTrace();
    		}
    	}
    Je vais regarder comment obtenir des info sur la machine avec Java
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  9. #9
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Enfin, à mon avis, mieux vaut ne pas passer trop de temps sur ce genre de protection. Si tu tombes sur quelqu'un qui connait un peu java, il sera tres simple de décompiler ton programme, voir que tu utilises la MAC (ou autre chose) et bouchonner la fonction qui fait ca de maniere à ce qu'elle renvoie la MAC originale qui fonctionne.

    Sinon, tu peux aussi passer par la génération d'un UUID coté serveur qui servira de clé pour décrypter les données. Mais encore une fois, si tu veux que ton programme soit lancable sans connexion internet et sans dongle, il sera forcement assez simplement crackable...

  10. #10
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par hwoarang Voir le message
    Enfin, à mon avis, mieux vaut ne pas passer trop de temps sur ce genre de protection. Si tu tombes sur quelqu'un qui connait un peu java, il sera tres simple de décompiler ton programme, voir que tu utilises la MAC (ou autre chose) et bouchonner la fonction qui fait ca de maniere à ce qu'elle renvoie la MAC originale qui fonctionne.
    Je ne compte pas y passer des jours et des nuits et je suis très conscient qu'il n'y a pas de protection miracle. Le public visé n'est pas un public de joueur chevronné et bon en informatique et le prix du jeu sera de l'ordre de 10€. C'est juste pour éviter que le jeu puisse être diffusé par une simple opération de copie.

    Citation Envoyé par hwoarang Voir le message
    Sinon, tu peux aussi passer par la génération d'un UUID coté serveur qui servira de clé pour décrypter les données. Mais encore une fois, si tu veux que ton programme soit lancable sans connexion internet et sans dongle, il sera forcement assez simplement crackable...
    Bonne idée surtout que j'ai trouvé quelque chose là dessus en java (cf->http://johannburkard.de/software/uuid/)
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    La class UUID existe en Java depuis Java 5...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    La class UUID existe en Java depuis Java 5...
    Merci du renseignement.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  13. #13
    Membre actif Avatar de zaza576
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 175
    Points : 275
    Points
    275
    Par défaut
    Salut,


    Côté client (sur le PC du joueur), tu ne peux rien faire pour garantir la sécurité contre la copie. Tu ne peux que copier les infos du PC ou du joueur et les transmettre à ton serveur.

    Côté serveur (chez toi donc), là ça devient intéressant.
    Quand un joueur installe le jeu une première fois, il se connecte à ce serveur et fournit le numéro de série de sa licence de jeu.
    En interne, tu récupères son adresse MAC, éventuellement la date d'installation du jeu (prend la date à laquelle ton serveur est interrogé), le nom du joueur éventuellement car le login n'a pas trop d'intérêt (trop variant).
    Par contre, que se passe t'il si le joueur enlève sa carte réseau et la fille à un pote ou s'il l'utilise sur un autre PC ?
    Pour cela, je pense qu'il faut au moins un autre paramètre lié au info du joueur pour être tranquille.
    Quelle info serait la plus fiable ? Numéro de Sécurité Sociale ? lol.

    Après la première install, tu l'as en base de données. Si une nouvelle demande te parvient avec le même numéro de série et des infos joueurs différentes, tu sais que le gars a tenté de filer sa licence aux autres, ou qu'il tente de faire une install ailleurs. Si la même MAC te parviens mais avec un numéro de série différent, soit le joueur a acheté une seconde licence, soit c'est louche !

    Pour solutionner un peu l'idée de hwoarang qui disait que le reverse engineering de ton projet java pouvait poser des soucis, tu peux aussi demander à ton projet de s'auto-hasher et de comparer dans la partie serveur avec le md5 de ton projet java original.

    En gros, tu as monProjetDOrigine.jar
    Tu fais md5(monProjetDOrigine.jar) => abc123456
    Cette valeur-là sera connue que du serveur.
    Côté client, le joueur 1 obtient ton jeu, monProjetJoueur1.jar
    Quand il va vérifier sa licence, tu fais un md5(monProjetJoueur1.jar) et tu le transmet côté serveur, pour vérifier si les deux sont identiques.
    Si le md5 du joueur 1 est différent (md5(monProjetJoueur1.jar) != abc123456), alors tu sais qu'il en a modifié le contenu !
    La comparaison se faisant côté serveur, cela reste un peu plus sécurisant.
    Je te laisse le choix de l'algorithme de hachage (j'ai proposé md5 mais il y en a tellement d'autres plus rassurants).

    hwoarang, y trouves-tu encore une faille dans cette solution ? (Il y en aura tjrs mais c'est plus agréable de savoir vers quoi on tend)

    Sinon, il y a encore l'idée des DRM. D'ailleurs de nombreux hackers se plaignent de la difficulté à casser ces dernières, car elles sont de plus en plus sophistiquées.
    La solution ultime c'est de créer un simulacre virtuel de ton PC (VM) sur laquelle tu bouchonnerais toutes les infos vitales (MAC, OS, navigateurs, emails, login, date, ...) afin de faire tes installs dessus. L'avantage d'une idée pareille, c'est que la VM, tu peux la dupliquer autant de fois que tu veux et partout, sans contraintes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function googleIsYourF*ck*ngFriend(String url, String maQuestion){
        goTo(url);
        reponse = find(maQuestion);
        if(isAcceptable(reponse)){
            clickOn(By.xpath("//button[@id='resolvedButton']"));
        }
        sendMessage("Merci");
    }
    
    googleIsYourF*ck*ingFriend("http://www.google.fr", "ma question");

  14. #14
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Merci je vais regarder ça à tête reposée. Mais plutôt que de demander le numéro de sécurité sociale j'avais pensé à demander un échantillon de sang pour l'ADN
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  15. #15
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par zaza576 Voir le message
    Après la première install, tu l'as en base de données. Si une nouvelle demande te parvient avec le même numéro de série et des infos joueurs différentes, tu sais que le gars a tenté de filer sa licence aux autres, ou qu'il tente de faire une install ailleurs. Si la même MAC te parviens mais avec un numéro de série différent, soit le joueur a acheté une seconde licence, soit c'est louche !
    La question de base, c'est est ce que le client n'a pas le droit d'installer un logiciel sur plusieurs ordinateurs ? Comment on gere si il a perdu/cassé son portable et qu'il veut l'installer sur un nouveau ? Ou bien s'il a 2 ordinateurs (dans sa chambre et dans son salon) et qu'il veut pouvoir jouer sur les 2 ? Comme d'hab, c'est l'utilisateur classique payant qui va se retrouver embêté et ca fera du SAV pour rien.

    Citation Envoyé par zaza576 Voir le message
    Pour solutionner un peu l'idée de hwoarang qui disait que le reverse engineering de ton projet java pouvait poser des soucis, tu peux aussi demander à ton projet de s'auto-hasher et de comparer dans la partie serveur avec le md5 de ton projet java original.

    En gros, tu as monProjetDOrigine.jar
    Tu fais md5(monProjetDOrigine.jar) => abc123456
    Cette valeur-là sera connue que du serveur.
    Côté client, le joueur 1 obtient ton jeu, monProjetJoueur1.jar
    Quand il va vérifier sa licence, tu fais un md5(monProjetJoueur1.jar) et tu le transmet côté serveur, pour vérifier si les deux sont identiques.
    Si le md5 du joueur 1 est différent (md5(monProjetJoueur1.jar) != abc123456), alors tu sais qu'il en a modifié le contenu !
    La comparaison se faisant côté serveur, cela reste un peu plus sécurisant.
    Je te laisse le choix de l'algorithme de hachage (j'ai proposé md5 mais il y en a tellement d'autres plus rassurants).

    hwoarang, y trouves-tu encore une faille dans cette solution ? (Il y en aura tjrs mais c'est plus agréable de savoir vers quoi on tend)
    Malheureusement, oui, j'y vois une grosse faille. Le calcul se fait coté client donc c'est très facile à contourner. C'est comme si les radars auto demandaient à la voiture à quelle vitesse elle roule plutot que de la relever. Bizarrement, c'est pas comme ca que c'est fait...

    Citation Envoyé par zaza576 Voir le message
    Sinon, il y a encore l'idée des DRM. D'ailleurs de nombreux hackers se plaignent de la difficulté à casser ces dernières, car elles sont de plus en plus sophistiquées.
    La solution ultime c'est de créer un simulacre virtuel de ton PC (VM) sur laquelle tu bouchonnerais toutes les infos vitales (MAC, OS, navigateurs, emails, login, date, ...) afin de faire tes installs dessus. L'avantage d'une idée pareille, c'est que la VM, tu peux la dupliquer autant de fois que tu veux et partout, sans contraintes.
    La solution la plus pratique est de demander une connexion internet au lancement du jeu. Cela permet de s'assurer que le jeu n'est utilisé qu'à un seul moment à la fois. Cela permet également de lui transmettre des infos nécessaires non présentes dans le jar pour etre sur qu'il ne puisse pas s'executer sans connexion. Mais c'est contraignant pour l'utilisateur et deja écarté par Gouyon.

  16. #16
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par hwoarang Voir le message
    La question de base, c'est est ce que le client n'a pas le droit d'installer un logiciel sur plusieurs ordinateurs ? Comment on gere si il a perdu/cassé son portable et qu'il veut l'installer sur un nouveau ? Ou bien s'il a 2 ordinateurs (dans sa chambre et dans son salon) et qu'il veut pouvoir jouer sur les 2 ? Comme d'hab, c'est l'utilisateur classique payant qui va se retrouver embêté et ca fera du SAV pour rien.
    Pour ce qui et de l'installation multiple la politique générale des éditeur de logiciel c'est une licence unique égale une installation sur une machine. Après il y en a qui autorisent plusieurs installation successives et d'autres qui peuvent accorder une licence installation multiple.

    Ce que je veux éviter c'est qu'un l'utilisateur quelconque aie simplement à copier le répertoire d'installation pour le refiler à un copain rien de plus. Il est évident que celui qui a cassé ou changé sa machine doit pouvoir refaire une installation.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  17. #17
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    Ce que je veux éviter c'est qu'un l'utilisateur quelconque aie simplement à copier le répertoire d'installation pour le refiler à un copain rien de plus. Il est évident que celui qui a cassé ou changé sa machine doit pouvoir refaire une installation.
    Et comment on fait la différence entre celui qui réinstalle parce qu'il a cassé son PC et celui qui donne l'installateur à son copain ?

  18. #18
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par hwoarang Voir le message
    Et comment on fait la différence entre celui qui réinstalle parce qu'il a cassé son PC et celui qui donne l'installateur à son copain ?
    Bonne question. Normalement après l'installation le joueur devrait demander une clef d'activation. Si on voit qu'il en demande une dizaine en peu de temps on peut se douter que l'installeur a été "prêté" aux copains (ou alors il est très mauvais il y en a quelques uns parait il).
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  19. #19
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    Normalement après l'installation le joueur devrait demander une clef d'activation. Si on voit qu'il en demande une dizaine en peu de temps on peut se douter que l'installeur a été "prêté" aux copains (ou alors il est très mauvais il y en a quelques uns parait il).
    Mouais. Un utilisateur lambda ne donnera qu'à 2 ou 3 de ses copains (puisqu'on parle de personnes qui jouent, qui aiment ce type de jeu...). Pour avoir autant de demandes d'activation, c'est que l'utilisateur a mis sa clef sur internet.
    Dans tous les cas, tu ne pourras voir que des choses tres grosses comme celle la compte tenu des contraintes que tu souhaites.

Discussions similaires

  1. [XL-2013] Protection contre la copie
    Par jobemon dans le forum Excel
    Réponses: 9
    Dernier message: 03/04/2016, 14h07
  2. Protection des emails contre la copie
    Par slokix dans le forum Exchange Server
    Réponses: 2
    Dernier message: 28/01/2009, 15h40
  3. protection de cd contre la copie
    Par mufassa dans le forum Sécurité
    Réponses: 12
    Dernier message: 28/09/2007, 14h50
  4. Protection contre la copie
    Par abdelghani_k dans le forum Sécurité
    Réponses: 2
    Dernier message: 08/01/2007, 18h02

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