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

C++ Discussion :

Intégration d'une licence


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut Intégration d'une licence
    Bonsoir,
    J'ai une petit question : j'ai un système de licence à ma disposition que je dois intégrer dans mon programme.
    Moi la méthode que j'utilise, qui est simple, est en gros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If (maLicence)
             //tu executes mon code

    Du coup ma question est : est ce que c'est très sécurisé de n'utiliser que un "if" pour le checking de licence ?
    Il y a t'il une méthode plus compliqué/sécurisé qu'un pauvre if ? (qui je pense, peut être facilement jumpé après en assembleur).

    Ma question peut être idiote, mais je préfère faire appelle aux experts pour ne pas faire n'importe quoi.
    (A noter que je ne fais pas de C++, d'ou le fait que j'ai acheté un système de licence et doit juste l'intégrer).

    Merci.

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Il y a, très certainement beaucoup mieux à faire que cela car, au niveau de l'exécutable, cela se traduira par une seule instruction processeur, et que les gens savent très bien laquelle (un jmp ou ses dérivés)

    Il suffirait donc à la personne mal intentionnée de repérer se saut (sans doute conditionnel, d'ailleurs) et de modifier le binaire avec un éditeur hexadécimal pour que le programme réagisse exactement comme si la licence était tout à fait valide

    Ceci dit, presque toutes les possibilités qui te seront offertes ne feront, en définitive, que rendre le travail de la personne mal intentionnée "qu'à peine plus difficile" en multipliant les endroits de code à modifier et en les plaçants de manière plus ou moins complexe.

    Mais, au final, le seul résultat sera peut etre que la personne mal intentionnée devra être un peu plus compétente pour y arriver et mettra peut être quelques heures au lieu de cinq minutes

    Et comme, au final, le patch ou le crack se retrouvera surement sur internet, tout ce que cela risque de faire, c'est d'emm... bien plus les gens qui utilisent "légalement" ton application que ceux qui auront décidé de le faire de manière illégale
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    La seule solution un peu efficace que je verrais c'est de mettre le programme sur un serveur et ne fournir au client qu'un programme pour se connecter au serveur et bénéficier de ton service.

    Après on peut toujours utiliser une licence pour deux programmes, dans ce cas là, on peut banni les licences si deux clients essayent de se connecter avec la même licence en même temps.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut
    Merci pour vos réponses.
    Enfaite le programme en C++ n'est la que pour "démarrer" tout le reste (qui est en Python).
    A partir de la, "pourrir" le programme en C++ de variables qui servent à rien, qui embrouillent, etc etc...ne me gêne absolument pas.
    Le système de licence que j'utilise est "limelm".
    Du coup, ils donnent un exemple pour intégrer leur système de licence en C++ : ici.

    Comme on peut le voir, le check se fait juste par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (IsActivated(ProductVersionGUID) != TA_OK)
         //blabla
    D’où ma question en faite.
    J'ai fais la méthode d'utiliser leur librairie static (et non la dll a part).

    Donc au final, c'est sécure ou par juste le "if" (avec leur lib en static) ?

    Si c'est non, la meilleur méthode est de pourrir un peu le checking par des trucs inutiles ? (cela ne me gêne vraiment pas, comme je l'ai dit, le programme C++ ne sert qu'à charger la licence).

    Je sais très bien que ça va être cracké au final, mais si je peux pourri la vie un peu avant et évité que ça soit fait en 5min...

    Merci.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    si tu veux pourrir la vie, je pense qu'il vaut mieux utiliser la dll.
    Elle sera un fichier autonome, dont tu pourras vérifier l'integrité.

    D'un point de vue pirate, ici, toute l'intelligence est dans la fonction IsActivated, il suffit d'en sauter l'appel pour être tranquile.

    De toute facon, le code sera forcément du genre "si valide faire sinon planter"
    Il suffit de sauter tous les tests disant "ce n'est pas valide"

    Aucun code n'est totalement sécurisé. Je pense par exemple au "proxy pour diablo 3", permettant de jouer en local...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 7
    Par défaut
    Citation Envoyé par leternel Voir le message
    si tu veux pourrir la vie, je pense qu'il vaut mieux utiliser la dll.
    Elle sera un fichier autonome, dont tu pourras vérifier l'integrité.
    Quand tu parles de vérifier l'intégrité, c'est par exemple inclure un sha-1 du fichier dans mon programme, et ensuite checker si ce sha-1 n'a pas été modifié ?

    J'avais pensé à cette méthode, on m'a dit qu'il faut mieux utiliser la lib static car une fois que la dll est cracké, elle est cracké...

    Un avis ?

    Ne pas oublier que je connais pas grand chose en C++, et que je suis pas contre des exemples.

    Merci.

Discussions similaires

  1. [POURSUITE] après une licence pro web-developpeur
    Par Jerem' dans le forum Etudes
    Réponses: 2
    Dernier message: 15/04/2008, 15h10
  2. Delphi 8 contient-il une licence SQL Server ?
    Par Bruno75 dans le forum EDI
    Réponses: 9
    Dernier message: 13/12/2004, 13h38

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