Reverse engineering et décompilation...
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Reverse engineering et décompilation...



  1. #1
    Lanceliogs

    Reverse engineering et décompilation...


    ------

    Salut à tous !

    Entrons dans le vif du sujet. Je code un soft en C++ dans le câdre de mon travail et on m'a chargé de créé un système de license de mon choix. J'ai donc codé une classe (appelons là licensekey) qui contient des méthodes pour générer et vérifier des license et en sortr certaines informations comme la date de validité de celles-ci.

    Quand je compile mon code pour un release, je commente la partie de mon code qui contient les méthodes pour générer la clef (j'ai toujours besoin de la partie vérification dans le release client).

    Ma question est donc : Je sais bien qu'on peut "reverse-engineerer" mon code et s'arranger pour passer par dessus la vérification de la license (c'est pourquoi j'en ai mis plein à différents endroits de mon code... ) mais est-ce qu'on peut par je ne sais quelle magie noire avoir accès au code commenté et donc récupérer le code qui génére les licenses, id est être capable de créer un keygen qui marcherait parfaitement ? Parce que si oui, je le supprime et basta !!

    Je vous souhaite une bonne journée !

    -----

  2. #2
    Stan_94

    Re : Reverse engineering et décompilation...

    Bonjour,
    le code compilé ne contient pas les commentaires mais une analyse en reverse engineering permettra toujours à quelqu'un de motivé et compétent de trouver comment ça marche
    Et surtout, il faut bien codé d'une façon sécurisée pour éviter par exemple qu'un simple buffer overflow permet de bypasser le contrôle de la clé.

  3. #3
    Lanceliogs

    Re : Reverse engineering et décompilation...

    Merci ! Bien sûr qu'un gars motivé peut cracker n'importe quoi, faut juste que ça coûte plus cher de payer cette personne que d'acheter la license du programme !

  4. #4
    Deedee81
    Modérateur

    Re : Reverse engineering et décompilation...

    Salut,

    Ce qu'on peut faire (ce qu'on faisait quand je travaillais à Mons) est générer une clef combinant une clef aléatoire et des données liées à la machine (nous on utilisait le numéro de série du disque dur).
    Et en utilisant une technique de cryptage considérée comme sûr et connue. L'algorithme est alors connu et un reverse engineering n'apporte rien de plus, la difficulté n'étant pas là.
    On fournissait alors une clef d'accès que les utilisateur devait introduire et permettant le fonctionnement uniquement sur UNE machine.

    Mais ces techniques ne sont pas toujours utilisables ou pas toujours aussi facilement.
    "Il ne suffit pas d'être persécuté pour être Galilée, encore faut-il avoir raison." (Gould)

  5. A voir en vidéo sur Futura
  6. #5
    whoami

    Re : Reverse engineering et décompilation...

    Bonjour,
    Citation Envoyé par Deedee81 Voir le message
    On fournissait alors une clef d'accès que les utilisateur devait introduire et permettant le fonctionnement uniquement sur UNE machine..
    Désolé, mais ce genre de protection est très simple à contourner ...

  7. #6
    Garion

    Re : Reverse engineering et décompilation...

    En effet, on peut mettre le système de code qu'on veut, il arrive un moment où le programmeur devra tester si la fonction a renvoyé que le code était valide ou pas, et là, il suffit de modifier le test.

  8. #7
    Sebdraluorg

    Re : Reverse engineering et décompilation...

    Citation Envoyé par Garion Voir le message
    En effet, on peut mettre le système de code qu'on veut, il arrive un moment où le programmeur devra tester si la fonction a renvoyé que le code était valide ou pas, et là, il suffit de modifier le test.
    Pas nécessairement, par exemple si une clé est nécessaire pour initialiser des éléments, il faut avoir eu au moins une fois une clé valide...

  9. #8
    Deedee81
    Modérateur

    Re : Reverse engineering et décompilation...

    Salut,

    Citation Envoyé par Garion Voir le message
    En effet, on peut mettre le système de code qu'on veut, il arrive un moment où le programmeur devra tester si la fonction a renvoyé que le code était valide ou pas, et là, il suffit de modifier le test.
    Je confirme. Je l'ai fait (légalement) pour un client sur un autre programme (le changement de disque dur provoquait un refus d'accès et la société ayant conçu le programme avait fait faillite quelque temps avant).

    Dans le programme qu'on utilisait, il y avait toute une série d'astuces rendant infiniment plus difficile cette méthode. Je ne connais pas les détails car je ne m'occupais pas de l'implémentation de la sécurité, mais je sais qu'il y avait plusieurs mécanismes : celui indiqué par Sebdraluorg (une série de données propre au client et nécessaire au bon usage du programme étaient dans la clef), des contrôles multiples et synchronisés entre thread et je ne sais plus quoi. Le patron avait beaucoup d'imagination pour ça Il profitait aussi du fait que le programme était très volumineux (dans le "hacking" dont je parle ci-dessus j'avais eut de la chance : le contrôle était tout au début du code).

    Mais évidemment aucun système n'est infaillible. D'ailleurs nous avons bien été victime au moins une fois d'un piratage (mais je ne sais pas comment le fraudeur avait procédé....).

    Mais il existe aussi peut-être des méthodes plus simples qu'accumuler les astuces !!!! Je ne suis pas spécialiste (ma spécialité c'est plutôt la gestion comptable, pas vraiment la même chose ).
    "Il ne suffit pas d'être persécuté pour être Galilée, encore faut-il avoir raison." (Gould)

  10. #9
    minushabens

    Re : Reverse engineering et décompilation...

    Et faire exécuter le test sur une machine de l'éditeur via internet? en faisant en sorte comme suggéré par Sebdraluorg que certaines variables soient initialisées en fonction du résultat du test. Bon ça rendrait le programme dépendant d'une connection internet, et de la pérénnité de l'entreprise.

  11. #10
    Deedee81
    Modérateur

    Re : Reverse engineering et décompilation...

    Citation Envoyé par minushabens Voir le message
    Et faire exécuter le test sur une machine de l'éditeur via internet? en faisant en sorte comme suggéré par Sebdraluorg que certaines variables soient initialisées en fonction du résultat du test. Bon ça rendrait le programme dépendant d'une connection internet, et de la pérénnité de l'entreprise.
    Tout dépend de l'application et de son usage. Certaines applications de par leur usage sont plus faciles à sécuriser que d'autres.
    "Il ne suffit pas d'être persécuté pour être Galilée, encore faut-il avoir raison." (Gould)

Discussions similaires

  1. Codage et reverse engineering
    Par Ison dans le forum Science ludique : la science en s'amusant
    Réponses: 0
    Dernier message: 05/12/2015, 21h04
  2. Réponses: 4
    Dernier message: 31/07/2013, 10h42
  3. MSc by Research in Engineering Science (Oxford) & MPhil in Engineering (Cambridge)
    Par invite534304f5 dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 31/01/2012, 21h13
  4. La neurophysiologie cognitive est-ce du reverse engineering ?
    Par invite6754323456711 dans le forum Discussions scientifiques
    Réponses: 5
    Dernier message: 11/09/2011, 21h46
  5. Software engineering OU Electronic and computer Engineering?
    Par nicom974 dans le forum Orientation après le BAC
    Réponses: 1
    Dernier message: 17/02/2010, 20h31