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 :

[JAR] Sécuriser un JAR exécutable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut [JAR] Sécuriser un JAR exécutable
    Salut,
    Je voulais savoir comment faire pour :
    -Ne pas pouvoir extraire mon fichier JAR exécutable.
    -Rendre mon JAR exécutable sur une seule machine que je définie moi même ou lors du premier lancement de l'application le jar ne serai pas exécutable d'une autre machine.
    Le fait est que je veut vendre une application et me garantir de ne pas la distribuer sans mon autorisation.
    J'ai fais une recherche et j'ai trouvé la méthode de signature mais je ne comprend pas à quoi ça sert exactement et est ce qu'elle résolue mon problème.
    Merci d'avance

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par elmes Voir le message
    -Ne pas pouvoir extraire mon fichier JAR exécutable.
    Impossible. Un JAR n'est qu'un .zip qui contient un programme. Et si tu en fais un .zip protégé par mot de passe, il ne démarrera pas.
    (Il existe sûrement des services pour transformer un JAR en un programme encapsulé dans un format moins connu qu'un .zip, mais je ne les connais pas.)

    Citation Envoyé par elmes Voir le message
    -Rendre mon JAR exécutable sur une seule machine que je définie moi même ou lors du premier lancement de l'application le jar ne serai pas exécutable d'une autre machine.
    C'est pas fourni par Java de base, et j'ai pas connaissance de fournisseurs de ce genre de choses à intégrer à un JAR.
    Ceci étant dit, il existe des fournisseurs plus ou moins efficaces de ce genre de choses pour d'autres environnements, et je ne les connais pas non plus.

    À noter que :
    - De toute façon, c'est contournable, sauf si la plupart du programme s'exécute en fait sur Internet, avec des ordinateurs sous ton contrôle.
    - Tes clients vont moyennement apprécier que leur programme cesse de marcher parce qu'ils ont changé de carte réseau / carte graphique / carte mère / processeur.
    - Tes clients peuvent ne pas apprécier qu'une connexion Internet avec accès à ton serveur (ou à ton fournisseur de protection anticopie) soit nécessaire pour démarrer le programme la première fois.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut
    Merci thelvin tu m'indique un peu la route à prendre je vais chercher un peu et trouver une solution, dès que je trouve une, je te met en courant

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    à ma connaissance, tu ne peux pas arriver à ce genre de résultats avec du Java pur.
    Une des solutions les plus 'viables' rien qu'avec du java serait de mettre en place une connexion à un serveur distant pour valider l'utilisation.
    C'est une solution assez courante et qui te permet de faire ce que tu veux (contrôler le nombre de licenses, gérer une date d'expiration, etc.)

    Je vois deux inconvénients:
    - Un accès internet est obligatoire (dans certaines entreprises, ça peut être génant : problèmes de droit d'accès au réseau, configuration du proxy),
    - ça reste contournable pour quelqu'un qui sait faire du reverse engineering. Pour lui compliquer la tâche, tu peux toujours obfusquer, mais cela ne fera que décourager les moins motivés. Donc si ton projet a un attrait particulier et que l'utilisateur s'y connait, c'est cuit...

    En ce qui concerne la signature, cela permet à l'utilisateur de s'assurer que tu es bien l'auteur du JAR car tu l'as signé avec une clé privée à ton nom.
    Rien n'empêchera l'utilisateur de supprimer la signature du Manifest pour changer cela...

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut Java Web Start
    Si une connexion Web est possible sur le poste client, tu peux utiliser Java Web Start. C'est un système intéressant pour :
    - décourager le piratage : le programme est enregistré dans un "cache" dédié. En regardant le contenu du cache, je me suis rendu compte que le programme est éclaté en une multitudes de petits fichiers en binaire. Je souhaite bon courage au pirate ...
    - faciliter la maintenance : tu fais une nouvelle version et hop, tes clients sont à jour.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Si une connexion Web est possible sur le poste client, tu peux utiliser Java Web Start. C'est un système intéressant pour :
    - décourager le piratage : le programme est enregistré dans un "cache" dédié. En regardant le contenu du cache, je me suis rendu compte que le programme est éclaté en une multitudes de petits fichiers en binaire. Je souhaite bon courage au pirate ...
    - faciliter la maintenance : tu fais une nouvelle version et hop, tes clients sont à jour.
    Tiens oui, c'est pas con. Reste que :
    - La contrainte "ne marche que sur un seul ordinateur" reste chaude à mettre en œuvre. Ou alors il faut que le programme ouvre une session sur le serveur, et que le serveur n'accepte qu'une session par copie vendue du programme. (Genre par identifiant client)
    - L'accès Internet devient obligatoire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. exécuter un jar depuis un jar
    Par michelp3 dans le forum Général Java
    Réponses: 1
    Dernier message: 29/05/2012, 09h51
  2. Création de .jar et problème d'exécution
    Par kyryan dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 09/06/2011, 10h34
  3. Un jar et ensuite? Installeur / exécutable?
    Par HerQuLe dans le forum Général Java
    Réponses: 8
    Dernier message: 16/12/2008, 03h21
  4. [Comm.jar] Classe inconnue à l'exécution
    Par Mister Nono dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 15/02/2005, 10h26
  5. [Jar]Faire un jar exécutable
    Par Melchisedec dans le forum Général Java
    Réponses: 2
    Dernier message: 09/06/2004, 18h58

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