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. #41
    Membre expert

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 3 583
    Points
    3 583
    Par défaut
    Citation Envoyé par Gaël Donat
    Faudrait que tu m'explique ton raisonnement là car je ne vois pas... Il y a toujours un client-side et un server side... ce n'est pas parce que j'appelle mon fichier PHP depuis mon objet HTTPRequest d'AJAX plutot que par l'url du navigateur qu'il est moins sécurisé...
    En fait, ce que n'importe quel hacker, même sans avoir forcément de grosse compétence de hacking comprendra assez vite, ce sont le paramètrage que l'on passe à travers nos appels de script serveur.

    Exemple :
    Dans mon JS j'ai une fonction qui retourne des infos sur un compte situé sur ma base MySQL.

    Pour cela, il faut bien que j'indique dans ma requête quelques paramètres de façon à ce que le script puisse me retourner les infos demandées. Comme tous cela s'effectue du coté client (en Javascript/XML), n'importe qui ayant quelques compétences en développement peut récupérer ces infos et s'en servir pour se faire un log sur un compte du site, et de modifier les infos à son avantage.

    Bref, Ajax me semble pas très sécurisé dans ce contexte...
    "La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !"

  2. #42
    Membre actif Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Points : 221
    Points
    221
    Par défaut
    Bref, Ajax me semble pas très sécurisé dans ce contexte...
    Exemple avec PHP, tu dois forcément passer par un formulaire ou bien avec des paramètres dans l'URL pour faire le dialogue, ok? Alors même avec PHP, si tu ne contrôle pas ton entrée, c'est hackable!

    Bref ce n'est pas AJAX qui est le problème, vu que même si tu n'utilises pas AJAX tu peux effectuer les mêmes intrusions avec ton PHP.

    Dans tous les cas tu dois forcément filtrer les données arrivant des paramètres de PHP, donc c'est pas la faute à JS (ou les méthodes Ajax, c'est la même chose).

    Là je prend un exemple avec PHP mais c'est pareil pour les autres languages qui permettent le dialogue client->serveur, dans tous les cas tu dois contrôler les données en entrées sur ta page qui est sur le serveur.

    D'autant plus qu'AJAX n'a (à ce que j'en sais) pas la vocation de te macher le travail de sécurité (d'ailleurs il ne peut pas vu que c'est du Javascript il me semble), mais ça sert juste à ne pas réactualiser toute la page donc limiter les requêtes au niveau du serveur (ce qui équivaut à un gain de temps pour le poste client, qui doit transférer moins de données).

  3. #43
    Rédacteur en Chef
    Avatar de Marc Lussac
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mars 2002
    Messages
    28 664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2002
    Messages : 28 664
    Points : 61 613
    Points
    61 613
    Par défaut
    Article Obfuscation : protection du code source contre le reverse engineering, par Hugo Etiévant
    Ne pas me contacter pour le forum et je ne répondrai à aucune question technique. Pour contacter les différents services du club (publications, partenariats, publicité, ...) : Contacts

    15 000 offres d'emploi développeurs et informatique
    Cours et tutoriels développeurs et informatique
    Les FAQ's & Les Livres
    Codes sources
    Téléchargements

  4. #44
    Membre confirmé
    Avatar de sroux
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 516
    Points
    516
    Par défaut
    Bonjour,

    Qu'en est-il de JAVA? En effet le code semi-compilé peut être facilement décompilé (via DJ JAVA Decompiler par ex.).
    Existe t-il une classe/appli particulière pour crypter un JAR?

    Concernant PERL, qui est un langage interprété, je n'ai rien trouvé de consistant quant aux possiblités d'obfuscation à part brouiller les pistes en maquillant les variables etc... Il est néanmoins possible de compiler un script PERL en utlisant le module CPAN PERL PAR (PERL Archive).

    SR

  5. #45
    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
    Bonjour,
    Citation Envoyé par sroux
    Existe t-il une classe/appli particulière pour crypter un JAR?
    Le probleme du cryptage c'est le temps qu'il mettra ensuite pour decrypter et d'ailleurs tout programme pour s'executer devra passer par la ram donc il est possible d'avoir le code ou une partie du code decrypter dans la memoire et avec cette partie brute forcer le reste voir decrypter le reste puisque l'algo de decryptage est aussi dans un des packages du binaire.

    Proteger un code contre le reverse engineering est tout simplement impossible* les techniques utiliser doivent juste ralentir et/ou decourager les moins agerris des RCE.

    *cf l'affaire de dvd john (entre autre ) contre le DECSS (cryptage des lecteurs DVD )

  6. #46
    Rédacteur en Chef
    Avatar de Marc Lussac
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mars 2002
    Messages
    28 664
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2002
    Messages : 28 664
    Points : 61 613
    Points
    61 613
    Par défaut
    Citation Envoyé par sroux
    Bonjour,

    Qu'en est-il de JAVA? En effet le code semi-compilé peut être facilement décompilé (via DJ JAVA Decompiler par ex.).
    Ca existe des obfuscateurs java
    http://java.developpez.com/outils/developpeur/#deployer
    Ne pas me contacter pour le forum et je ne répondrai à aucune question technique. Pour contacter les différents services du club (publications, partenariats, publicité, ...) : Contacts

    15 000 offres d'emploi développeurs et informatique
    Cours et tutoriels développeurs et informatique
    Les FAQ's & Les Livres
    Codes sources
    Téléchargements

  7. #47
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par sroux
    Concernant PERL, qui est un langage interprété, je n'ai rien trouvé de consistant quant aux possiblités d'obfuscation à part brouiller les pistes en maquillant les variables etc... Il est néanmoins possible de compiler un script PERL en utlisant le module CPAN PERL PAR (PERL Archive).
    Perl est pourtant réputé être un langage dont les possibilités d'obfuscation sont parmi les plus élevées. L'article sur l'obfuscation de Wikipedia (Eng) le place même au niveau de C/C++ sur ce point.

    Il existe des modules du CPAN pour réaliser l'obfuscation. Cela va de Acme::Morse, Acme::Palindrome au très fort Acme::Bleach.

    Sinon, concernant les outils permettant de compiler du Perl, il y a une discussion en cours dans le forum Perl. Il y est discuté des mérites et lacunes de PAR comme de perlcc.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  8. #48
    Membre actif
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 164
    Points : 227
    Points
    227
    Par défaut
    Le C/C++ est compilé les noms de variables et de fonctions ne sont pas remplacées par des adresses mémoires ?

    Les noms des variables et des fonctions ne se retrouvent pas dans le code il me semble (a part pour les librairies).

  9. #49
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Salut !


    Il n'existe pas un system de protection 100% sûre !




    La meilleur solution à mon avis est de compresser ou crypter les exécutables (exe, dll...) afin de brouiller le cracker et lui casser ... la tête, et empêcher les newbies du cracck d'y penser rien en voyant les ressources de ces exécutables cryptées

    Il en existe pas mal de compresseur d'exe dont y a pas leur décompresseur sur le NET, donc faudrait bien connaître l'assembleur, la structure des PE (côté Windows), le loader et un écran 17pouce ou plus ...pour les contourné d'une façon manuelle (manual unpacking).


    Reste une autre solution, est d'avoir une licence, comme ça le cracker le payera très chère rien qu'on ayant le debogger SoftIce









    (On tout les cas ça risque pas d'arriver chez moi, enfin mon pays quoi )


    A+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  10. #50
    Membre actif Avatar de etranger
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Points : 268
    Points
    268
    Par défaut
    OU sinon, codez en perl est compilez avec perl2exe (avec quelques protection, genre anti-debug), c'est tellement moche a l'interieure que sa decouragerait les meillieures

    PS : je ne plesante pas.

  11. #51
    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 etranger
    OU sinon, codez en perl est compilez avec perl2exe (avec quelques protection, genre anti-debug)
    Il existe dans certaines version de perl2exe une possibilite de retrouver le script original

    La Protection la plus efficace et le plus difficilement atteignable ( pour les debutants ) reste le driver en ring 0.

    Mais il arrive que les pirates ne sont pas toujours ceux qu'on croit
    http://www.ratiatum.com/news2934_Sta...zations_2.html

  12. #52
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 55
    Points : 72
    Points
    72
    Par défaut
    vous raisoner beaucoup au niveau fichier!
    faut pas oublier les dumps de RAM....
    got root?

  13. #53
    Membre actif
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 164
    Points : 227
    Points
    227
    Par défaut
    reste le driver en ring 0
    Ouch, si on commance a faire des drivers ring 0 pour proteger son programme où va t'on ! En plus il est possible pour le pirate de faire un autre driver ring 0 pour espionner le premier. En tout cas je dit pas l'état du système après ça.

    faut pas oublier les dumps de RAM....
    D'ailleurs comment on fait pour faire une vérification de license qui ne renvoie pas toujours la même valeur pour dire que ça va ?

    Sinon je suis déjà au courant pour starforce et franchement je suis dégouté. En plus il y a certins PC qui plantent à cause de ça (lu sur des forums).

  14. #54
    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
    Ouch, si on commance a faire des drivers ring 0 pour proteger son programme où va t'on !
    C'est deja le cas de la plupart des protections des jeux avec notament le celebri(c|s)isme StarForce
    En plus il est possible pour le pirate de faire un autre driver ring 0 pour espionner le premier
    il existe deja des debuggeurs ring 0 :: Softice(plus du tout maintenue ) , Windbg ( seul a fonctionner sous vista normal c'est kro$ qui le fait ) etc...

    note VirtualPC utilise un driver en r0 pour ce 'proteger' et d'ailleurs cette pratique se generalise deja .

  15. #55
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    907
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 907
    Points : 372
    Points
    372
    Par défaut
    Pour protéger son code et ne pas se faire copier son soft, il ne faut pas diffuser son logiciel. Il faut exploiter le logiciel en local, et les utilisateurs n'ont accès qu'au résultats issus du logiciel.

    Christophe,

  16. #56
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Points : 144
    Points
    144
    Par défaut
    Moi j'utilise {smartassembly} ...

    C'est un obfuscateur de code C# super simple à utiliser avec plein de fonctionnalités différentes et à choisir ...

    Ce soft est d'après les tests très efficace (mais bon là je ne peux que les croire sur parole ...)

  17. #57
    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
    La meilleure technique est de faire du libre...

    Dès lors, personne ne sera assez idiot pour tenter de déssassembler ton code... enfin j'ose le croire

    (juste au cas où : c'est une boutade bien sûr -_-)

  18. #58
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Et ça sert à quoi de faire des pieds et des mains pour empêcher quelqu'un de voir le code de votre application? S'il est vraiment motivé, il va y arriver.

    Personnellement, j'ai toujours trouvé que si du code était caché, c'était pour trois raisons:

    1. Le code est tellement mauvais que personne voudrait jamais utiliser une application si mal codée
    2. Le programmeur pense qu'en cachant le code, son application est plus sécure
    3. Le programmeur pense qu'il est le plus brillant programmeur au monde et que personne ne serait jamais capable de faire une fonctionnalité comme il l'a fait


    Dans le premier cas, c'est presque légitime (presque.) Mais la meilleure solution serait de réviser le code et de voir comment l'améliorer (à faire que le code soit disponible où non aux usagers.)

    Dans le second cas, c'est ce que les gens en sécurité appelle "security through obscurity." Une personne pense qu'en cachant un secret, elle rend son application plus sécure. À voir le nombre de failles qui sont trouvées dans des logiciels à code fermé, on voit que c'est pas vraiment une assurance.

    Et finalement, l'égo du programmeur. Oui il existe des programmeurs qui sont excellents et qui peuvent créer des choses que peu de gens pourraient, mais quel est le but de cacher ce code aux autres programmeurs? Dans les domaines scientifiques, l'information est partagée pour faire bénificier toute la communauté. Einstein aurait bien pu garder pour lui sa théorie de la relativité. Ça prouve selon moi que le monde informatique est encore bien jeune et bien immature.

    Je mentionne que je ne crois pas que tous les logiciels devraient être gratuits; il faut bien manger! Par contre, pourquoi ne pas vendre le code source avec son logiciel? Si l'utilisateur rencontre un bug, a besoin d'une nouvelle fonctionnalité, etc. il peut la coder lui-même s'il en a besoin. Il existe des applications web payantes, mais comme elles sont codées en PHP, le code source est fourni (pas le choix.) L'utilisateur peut donc arranger des choses selon ses besoins. Évidemment, si les mises à jour de l'éditeur du logiciel ne fonctionnent pas correctement à cause de ses changements, c'est son problème. Comme c'est écrit sur les ordinateurs "Void if seal is broken"

  19. #59
    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
    Le problème, c'est que si le code source est vendu avec, un client peu scrupuleux peut diffuser sur internet le code de vérification de la clé de license (point 2) ou tout simplement supprimer ce code pour permettre au programme de tourner sans license.

    C'est d'ailleurs la principale motivation de la Security Through Obscurity: Ce n'est pas pour protéger le client des hackers, mais pour protéger l'éditeur des clients...
    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.

  20. #60
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 264
    Points : 144
    Points
    144
    Par défaut
    Citation Envoyé par GnuVince Voir le message
    Dans les domaines scientifiques, l'information est partagée pour faire bénificier toute la communauté. Einstein aurait bien pu garder pour lui sa théorie de la relativité. Ça prouve selon moi que le monde informatique est encore bien jeune et bien immature.
    Je ne suis pas tout à fait d'accord sur la comparaison ...

    Einstein est un scientifique pur (et dur ?) pour qui la consécration est généralement la reconnaissance de ses pairs et ... le Prix Nobel. Cette communauté fonctionne sur le principe des publications et des conférences.

    Quand on parle de masquer du code, il s'agit là de protection de la propriété intellectuelle d'un outil commercial. Si Einstein avait eu une société de fabrication de bombes A, je ne suis pas sûr qu'il aurait publié ...

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