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

Débats sur le développement - Le Best Of Discussion :

Comment protéger son code du reverse engineering ?


Sujet :

Débats sur le développement - Le Best Of

  1. #81
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par zolive Voir le message
    Le gros probleme actuellement c'est que meme obfusqué le code reste assez facilement craquable. C'est encore plus vrai avec les codes sur des machines virtuelles tel que .net ou java ou là les generateurs de code inversé font des merveilles.

    ben ça c'est totalement normal (et déjà traité plus haut dans le sujet), puisqu'en grande partie le code est en clair.... et "compilé" au runtime...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  2. #82
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    il y a deux solutions pour proteger son code du reverse enginering.

    le cryptage du code.
    la clé LPT, utilisée comme parametre dans le programme.

    je propose une combinaison des deux:

    faire un crytage du programme avec un petit crypteur à base de randxor necessitant la presence d'une clé (un code d'initialisation du generateur pseudo rand) sur le port paralelle pour bien decrypter le programme et le lancer.
    alors à moins que les clients se mettent eux aussi à cracker du code pour le voler, ça devrait aller.
    je met n'importe qui au defi de desassembler un tel programme sans la clé, avant qu'une meilleure version ne voie le jour.

  3. #83
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Et pour ce qui est du coût de mise en place?

  4. #84
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    le cout du truc de cryptage?
    pas enorme.
    il faut juste creer une clé LPT, un programme de decryptage (en general le meme que celui du cryptage) ce programme de cryptage est la seule partie du code à etre non cryptée.
    l'algo d'implementation de cette methode est hardcore par contre.
    il faut que le programme .EXE soit crypté, et aussi que le HEADER soit non crypté. et le decrypteur doit etre le point d'entrée du programme.
    voire avec des habitués de la programmation .EXE pour plus de details.
    pour ce qui est de la clé materielle, ça coute pas cher, moins cher que le manque à gagner en cas de vol.

  5. #85
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Trouver la clé de cryptage n'est pas forcément si difficile que ça s'il y a des séquences connues: par exemple, si on sait que la première instruction du main() est d'empiler le frame pointer (oui, je sais que ça ne se fait plus beaucoup de nos jours) ou des motifs similaires...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #86
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    seulement, la clé est une clé pour un generateur aleatoire.
    et le mec qui code le programme à proteger ne vat pas ecrire le debut de maniere conventionelle.
    la clé peut faire autant de bits qu'on veu.
    si il le faut, la clé peut aussi etre en deux parties, trois parties, x parties.
    le cryteur du programme peut aussi etre crypté, et ceci est possible sur un nombre d'etages infini.
    donc, le mec qui veu cracker le code, il serai obligé de chercher des dixaines de clés, il finirait à l'asile de fou avant d'avoir trouvé la troisieme clé.

  7. #87
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ou bien, comme le client possède forcément la clé, il peut toujours soit acheter le produit s'il est pour le grand public, soit glisser une envoloppe à un employé du client...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #88
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    il reste là solution du crypteur qui demande l'entrée d'une clé decidée sur le site de l'editeur. et qui necessite une webcam pour voir si c'est bien le client normal qui veut faire fonctionner le programme, en esperant que le client n'ai pas de jumeaux hackers.
    sinon, fournir un programme super bien, bien maitenu, avec un bon sav, des evolutions logicielles frequentes, ça aide à le proteger.

  9. #89
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Ce qui me dérange, c'est que sur les dernières cartes mère, les ports LPT commencent à disparaître.

  10. #90
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    alors, une clé sur le port serie, ou meme un fichier dans une clé usb, voire sur un cd rom.
    mais bon.
    je trouve ça de toute façon tres abusif.
    comme si tout le monde etait un sale voleur.
    comme je l'ai ecrit dans le post precedant, un programme bien maintenu et souvent mis a jour n'a pas trop de raisons d'etre cracké.

  11. #91
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 849
    Points
    849
    Par défaut
    Bonjour à tous,

    edfed, je pense effectivement que la grande majorité des gents ne sont pas des voleurs; cependant, peu d'entre eux lisent les contrats de licence et s'ils peuvent d'installer une application sur deux PC sans aucune limitation, ils n'auront pas le moins du monde l'impression de voler quoi que ce soit.

    Je travail dans un domaine ou la facturation à l'utilisation (pay-per-use) est important et comme une grande partie de nos client travaillent dans des réseaux qui ne peuvent pas être connectés à l'Internet, nous sommes forcé de protéger notre code.

    Comme il a déjà été dit, assembleur, IL ou Bytecode, peu importe du code peut-être lu, compris et modifier. Notre stratégie est donc de combiner plusieurs techniques dont l'obfuscation et l'encryptions du code contre l'analyse statique, du code de détection de dévermineurs contre l'analyse dynamique et plusieurs niveaux d'encryptions et de validations des compteurs d'utilisations pour les protéger contre des modifications frauduleuses.

    Il va de soit qu'aucune de ces barrière n'est infranchissable, puisque si le programme peut modifier les données des compteurs alors n'importe qui peut le faire. Nous avons pris le parti d'ajouter autant de protection que nécessaire pour décourager les pirates occasionnels qui pourrait exister parmi nos clients, sans pour autant mettre en péril la maintenance et la stabilité de l'application.

    Quelque soit le mode de protection, je crois qu'il est particulièrement important de soigner la communication avec le client dans le cas où le système de protection détecte un problème. Il peut toujours s'agir d'un faut positif et il serait alors très malvenu de traiter un client de pirate.

    Meilleures salutations,
    Jérôme

  12. #92
    Membre éprouvé
    Avatar de _solo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    889
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 889
    Points : 1 228
    Points
    1 228
    Par défaut
    il faut que le programme .EXE soit crypté, et aussi que le HEADER soit non crypté. et le decrypteur doit etre le point d'entrée du programme
    trop basique comme protection tant qu'a faire un crypteur/decrypteur , emprunter les techniques utiliser en matiere de devellopement virale : du code metamorphique ( le code du crypteur/decrypteur change apres chaque execution ) .

    Je ne suis pas du tout convaincu de ton « énormément ».
    Ce « challenge » est-il une étude statistique ?
    Je suppose que non.
    encore un qui croit dans les discourts des commerciaux lol

    definition[statistiques] mirroir au alouette des dsi/rssi

  13. #93
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    L'utilisation des web services (une partie de l'application s'exécute localement chez le client, une autre sur un serveur distant par les web services ) n'est elle pas une solution fiable? car pour craquer entièrement l'appli, il faudrait accéder à mon serveur!
    Java offre aussi une solution plus souple en permettant de télécharger au moment de l'exécution certaine module de l'application.

  14. #94
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par _solo Voir le message
    [...]
    encore un qui croit dans les discourts des commerciaux lol

    definition[statistiques] mirroir au alouette des dsi/rssi
    Non je crois dans les discours (sans 't') scientifiques comme tout bon scientifique que je suis. Ne te prononces pas sur qqun que tu ne connais pas.

    Ton challenge n'a aucune valeur d'étude et ne permet certainement pas de pouvoir juger. Pour que tu puisses dire « énormément » il faut que tu ai des preuves basées sur autre chose que ce que tu vois. Car, jusqu'à preuve du contraire, tu es une personne avec ses expériences mais pas une référence mondiale en la matière. Tu as donc une vue biaisé par ce que tu vis directement qui t'empêches d'appréhender la généralité des cas a priori. C'est un phénomène connu.

  15. #95
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    L'utilisation des web services (une partie de l'application s'exécute localement chez le client, une autre sur un serveur distant par les web services ) n'est elle pas une solution fiable?
    Je dirai que c'est excellent si tu veux protéger un savoir-faire, mais faut que le contexte d'exécution et les contraintes de vitesse le permettent.
    Malheureusement, la haute disponibilité est souvent requise, on peut pas fermer l'entreprise si y'a une coupure d'internet.

  16. #96
    Membre éprouvé
    Avatar de _solo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    889
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 889
    Points : 1 228
    Points
    1 228
    Par défaut
    Non je crois dans les discours (sans 't') scientifiques comme tout bon scientifique que je suis. Ne te prononces pas sur qqun que tu ne connais pas.
    je ne juge pas les gens juste leur propos lol

    Ton challenge n'a aucune valeur d'étude et ne permet certainement pas de pouvoir juger. Pour que tu puisses dire « énormément » il faut que tu ai des preuves basées sur autre chose que ce que tu vois.
    Non rectification pas sur ce que je vois mais ce sur que je fait presque tous les jours


    Car, jusqu'à preuve du contraire, tu es une personne avec ses expériences mais pas une référence mondiale en la matière. Tu as donc une vue biaisé par ce que tu vis directement qui t'empêches d'appréhender la généralité des cas a priori. C'est un phénomène connu.
    c'est vrai

  17. #97
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par _solo Voir le message
    je ne juge pas les gens juste leur propos lol
    Quand tu dis que « je crois les discours commerciaux » tu portes un jugement sur moi et non sur ce que je dis : « ça n'est pas une étude statistique. »

    Citation Envoyé par _solo Voir le message
    Non rectification pas sur ce que je vois mais ce sur que je fait presque tous les jours [...]
    Et donc ce que tu vois.
    C'est pourquoi quand tu avances ce que tu as avancé, il te faut une étude sérieuse. Le challenge que tu as posté ici est très intéressant, mais loin de pouvoir servir d'étude.

  18. #98
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut reverse engineering
    bonjour,


    le reverse engineering est une technique qui constiste à etudier
    le code/autre dun site pour essayer de trouver ce qu'il faut pour arriver à son but.

    donc tout dépend du but, du site, et des webservices qu'il propose...

    Cordialement

    eX-

  19. #99
    Inactif
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par _solo Voir le message
    trop basique comme protection tant qu'a faire un crypteur/decrypteur , emprunter les techniques utiliser en matiere de devellopement virale : du code metamorphique ( le code du crypteur/decrypteur change apres chaque execution ) .
    Code polymorphique ou non, toute protection est inutile.
    Ca se cracke soit en 30 secondes, soit en 3 jours, mais aucune ne peut résister à un simple debugger.

  20. #100
    Membre éprouvé
    Avatar de _solo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    889
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 889
    Points : 1 228
    Points
    1 228
    Par défaut
    Citation Envoyé par carl1 Voir le message
    Code polymorphique ou non, toute protection est inutile.
    Ca se cracke soit en 30 secondes, soit en 3 jours, mais aucune ne peut résister à un simple debugger.
    je veux bien ta doc si tu me casse un truc comme ca en 30 seconde ou 3 jour http://cat.inist.fr/?aModele=afficheN&cpsidt=5053511

    rienque le 3DSmax ( 2007 si ma memoire me fait pas defaut ) a resister 9mois en beaucoup moins complexe et la c'etait pas du crackeur de bac a sable , mais la ca devait etre plus pour l'ego et le challenge intellectuel qu'autres choses .

Discussions similaires

  1. comment déboguer son code ?
    Par AdHoc dans le forum Zend
    Réponses: 11
    Dernier message: 05/02/2007, 15h03
  2. Protéger son code source ?
    Par supergrey dans le forum C++
    Réponses: 32
    Dernier message: 05/12/2006, 09h05
  3. comment optimiser son code en calcul ???
    Par gronaze dans le forum C
    Réponses: 5
    Dernier message: 21/03/2006, 10h41
  4. [Perf] Comment optimiser son code ?
    Par Frifron dans le forum Général Java
    Réponses: 12
    Dernier message: 11/08/2005, 09h05

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