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 :

[.NET] Protéger son code contre les décompilateurs


Sujet :

C#

  1. #1
    Membre actif Avatar de Mast3rMind
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 226
    Points : 219
    Points
    219
    Par défaut [.NET] Protéger son code contre les décompilateurs
    Bonjour à tous,

    Je constate que les exécutables C# sont facilement décompilables et que n'importe qui disposant d'un logiciel de décompilation ou de rétro-ingénierie peut accéder librement à du code afin d'en étudier le contenu.

    Je pose donc la question légitime suivante: quelle est la meilleure façon de protéger mon code C# contre la décompilation?

    Je connais un peu la méthode d'obfuscation, mais j'ai un peu de crainte à l'utiliser car cela semble pouvoir engendrer d'autres problèmes reliés à la réflection, entre autre.

    Les alternatives du type: "Utiliser un autre langage comme C++" ne sont bien entendu pas une option.

    Pour infos, cet article de Microsoft France est bien intéressant: Visual Studio 2005 et l'obfuscation

    Si quelqu'un a de bonnes idées, elles sont les bienvenues! Merci!
    .:: WOTC_MasterMind | Never Surrender | Warriors of The Cross ::.
    Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Obfuscation est la réponse à ta question: à toi de chercher plus d'infos à ce sujet

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    une autre alternative testé ici (dans un cours ou un test , je ne sais plus), serait d'utiliser l'outil Xenocode qui a pour effet de te produire un executable ou une dll entierement au format natif (code x86).. ce qui veut dire qu'ensuite que seul au debuggueur assembleur tu pourras analyser le code... par contre, l'effet négatif est que ton programme va bien grossir car l'outil va intégrer dans ton exe l'ensemble des librairies utilisées compilées en natif....

    genre : 40 Ko pour ton prg initiale devient 2 Mo apres traitement

    L'outil n'est pas gratuit, mais pour une entreprise, il ne coute pas cher et je pense qu'une telle solution est un super alternative à l'utilisation d'un obfuscateur qui ne fait que rentre "moins" lisible ton code

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    pour les 2mo au lieu des 40kg..; si tu as l'habitude comme moi des programmes écrits en C++ builder... tu as l'habitude des exe qui explosent en terme de taille

    par contre c'est vrai que Xenocode32 est payant, mais bon... comme deja dit... si ta société investi dans Visual Studio... c'est pas Xenocode qui va la ruiner, et puis au moins comme cela tu es tranquil.

  5. #5
    Membre actif Avatar de Mast3rMind
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 226
    Points : 219
    Points
    219
    Par défaut
    Merci pour les conseils.

    Je suis en train d'essayer la version d'évaluation de Xenocode, c'est vraiment un outil puissant. Il fonctionne beaucoup mieux chez moi que Dotfuscator.

    .:: WOTC_MasterMind | Never Surrender | Warriors of The Cross ::.
    Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi.

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    salut

    une autre alternative testé ici (dans un cours ou un test , je ne sais plus), serait d'utiliser l'outil Xenocode qui a pour effet de te produire un executable ou une dll entierement au format natif (code x86).. ce qui veut dire qu'ensuite que seul au debuggueur assembleur tu pourras analyser le code... par contre, l'effet négatif est que ton programme va bien grossir car l'outil va intégrer dans ton exe l'ensemble des librairies utilisées compilées en natif....

    genre : 40 Ko pour ton prg initiale devient 2 Mo apres traitement

    L'outil n'est pas gratuit, mais pour une entreprise, il ne coute pas cher et je pense qu'une telle solution est un super alternative à l'utilisation d'un obfuscateur qui ne fait que rentre "moins" lisible ton code

    The Monz, Toulouse
    L'outil Xenocode a été présenté sur Dvp lors d'un test. Je le sais, c'est moi qui ait fait le test Et je peux te garantir que cet outil fait de l'obfuscation de code, à moins que cela n'ait changé dans les versions récentes

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    beh disons thomas que j'ai testé Xenocode il y a 1 mois environ et que le code produit n'était pas déssassemblable avec un outil comme reflector puisqu'il considerait que l'executable n'était pas du CLR.... donc, j'aurais tendance à penser au vue de la documentation fournie par le fabricant de ce produit que c'est réellement un assemblage natif qui est généré et non du MSIL

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  8. #8
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    pour avoir testé les deux, moi j'ai eu une préférence pour {smartassembly}
    http://lgmorand.developpez.com/dotnet/smartassembly/

    il obfusque mais ca reste du MSIL et surtout c'est son reporting de bug qui est super bien foutu. Fini log4net, ou plein de try catch au niveau de l'IHM, ca pete, mais ca envoi le rapport sur un serveur et là tout est géré: regroupement, analyse, etc.
    c'est créé par un seul codeur et c'est du super boulot pour le prix
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  9. #9
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    salut

    beh disons thomas que j'ai testé Xenocode il y a 1 mois environ
    Ah vi

    Tandis que la version que j'ai testé date de .... Janvier 2005 (http://morpheus.developpez.com/xenocode/) donc il est pas étonnant qu'il y ait eu des MAJ/changements

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Mais même avec tout cela, si une entreprise concurrente y met les moyens, il y a toujours la possibilité de déterminer l'architecture d'un software.
    A la rigueur les, il y a bien quelques algos super complexe à protéger, mais sinon pour l'archi, il y a toujours moyen de la comprendre.
    Et une fois l'archi récupéré, bah un développeur en C#.net te erfait la même application !!!
    Bref pour les algos il y a le brevetage de ceci afin de faire payer un jour les entreprises qui ont dépouillés ton soft.
    Pour protéger l'archi, bah je pense que l'obfuscation fournis par MS est suffisante.
    Après si le but est de protéger du code, qui n'est pas poussé au point d'être un algo à breveter, bah cela sert à rien, parce que n'importe quel dev en C# sera le refaire.
    Après si c'est une question de retarder l'échéance d'un an pour profiter pendant 1 an de non conccurence et de s'installer sur le marché, alors oui l'utilisation des outils payants peut se justifier je pense
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  11. #11
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Pour protéger l'archi, bah je pense que l'obfuscation fournis par MS est suffisante.
    laquelle? dotfuscator? c'est gratuit ca maintenant?
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    laquelle? dotfuscator? c'est gratuit ca maintenant?
    Je n'ai fait aucun effort de vérification, mais lorsque tu achète la version standard de visual studio, l'outil n'est pas fournis avec ?
    Après il est vrai que je n'ai pas pensé au version express.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  13. #13
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    standard ou pas, je sais qu'il est "fourni" mais à l'époque (2003) il était fourni en tant que trial (dotfuscator n'est pas du M$ il me semble). il semblerait effectivement que ce soit des versions CE gratuites maintenant.(sauf dans les versions express où ce n'est pas présent)
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    De toute façon utiliser Dotfuscator ne sert à rien...

    Reflector est modulaire et il existe un module qui lui permet de lire le code obfusqué... bref... pour la sécurité il y a mieux.

    A ce jour aucun obfuscateur n'a réussi a bien protégé un code .NET ou natif contre un décompilateur fourni avec des desobfuscateurs. A la limite tu va protéger ton code 2 ou 3 semaines, voir 1 mois maximum.

    Quand a l'interet d'utiliser l'obfuscation ou la compilation native... c'est une question évidente non ? une entreprise peut développer du code en préférant que celui ci reste closed source like microsoft ou n'importe quel géant de l'industrie du logiciel.
    Je doute que si demain tu pond un moteur 3D révolutionnaire, tu apprécie particulièrement qu'un charlot vienne lire le code juste en cliquant sur un bouton et fasse un jeu avec ton moteur... Générallement un code compilé en natif, même s'il est débogable (bien qu'il existe des traps pour faire planter les deboggueurs communs) en assembleur reste moins accessible qu'un code .NET en clair ... et le ptit malin qui l'a décompilé devra le mériter...
    La protection absolue n'existe pas !

    Actuellement même les sections de code critiques chiffrées/// déchifrable seulement si tu install la bonne licence, sont "cassable" meme si cela reste la rolls de la protection de code...

    On sens pas l'ancien hackeur... oui je le réprime, mais les vieux reflexes ont la vie dure

  15. #15
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Des personnes de confiance m'ont expliqués que ce soft changez le nom des classes, des methodes, des arguments par des nom super générique, rendant le code illisible.
    On obtiendrais un truc du genre (dans l'idée) :
    class 1348526394
    class 1348526395
    ....

    Cela n'est il pas suffisant pour le rendre illisible ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    bof... pa pire que le code natif... là ta des adresses ou pire, des adresses relatives et pourtant on s'y retrouve quand meme.

  17. #17
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    ok c bon a savoir.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  18. #18
    Membre actif Avatar de Mast3rMind
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 226
    Points : 219
    Points
    219
    Par défaut
    Je suis en train de tester Dotfuscator et Xenocode...

    Une version gratuite "light" de Dotfuscator vient avec MS Visual Studio 2005. Je n'ai malheureusement pas réussi à obfuscater mon code avec cette appli... et je n'aime pas l'interface graphique. J'ai demandé la version d'évaluation pro et je suis en cours de testing, le support technique semble assez bien foutu.

    Quant à Xenocode, ça marche super bien, et pour répondre aux questions, oui ça fait de l'obfuscation ET la compilation en mode natif. De plus, il y a une option qui permet d'empêcher la décompilation par un programme de rétro-ingénierie. Ça semble bien fonctionner, Reflector n'a pas pu même décompiler mon exécutable avec cette option.

    Je vais tester aussi smartassembly...
    .:: WOTC_MasterMind | Never Surrender | Warriors of The Cross ::.
    Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi.

  19. #19
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    J'ai testé plusieurs soft :
    Xenocode :
    peu convivial, cher (>500€)
    Smartassembly :
    le top, peut être lancé en ligne de commande : dans vs 2005 on peut le lancer via la prop. PostBuildEvent d'un projet d'installation. Cher (>500€). Rend le code illisible dans Relfector
    Dotfuscator :
    version free intégrée dans vs 2005. A part changer les noms de variables, il ne fait pas grand chose... J'ai pas essayé la version complète.
    Eazfuscator :
    free, un peu meilleur que la version free de Dotfuscator

    Si vous en avez d'autre en free je suis preneur...

    Bonne journée à tous !!

  20. #20
    Futur Membre du Club
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Je cherche aussi un outil efficace pour protéger du code source C#.

    Malheureusement, tous ceux qui vous avez proposés sont impuissants devant un deobfuscateur open source (donc gratuit) très répandu. Mais si vous ne connaissez pas cet outil, je ne souhaite surtout pas dévoiler son nom sur un forum aussi visité.

    Voici néanmoins la liste des obfuscateurs qui deviennent obsolètes à ce jour :
    Agile.NET (CliSecure)
    Babel.NET
    CodeFort
    CodeVeil
    CodeWall
    CryptoObfuscator
    DeepSea Obfuscator
    Dotfuscator
    .NET Reactor
    Eazfuscator.NET
    Goliath.NET
    ILProtector
    MaxtoCode
    MPRESS
    Rummage
    Skater.NET
    SmartAssembly
    Spices.Net
    Xenocode

Discussions similaires

  1. Comment protéger son code du reverse engineering ?
    Par progfou dans le forum Débats sur le développement - Le Best Of
    Réponses: 120
    Dernier message: 12/01/2011, 18h12
  2. Réponses: 8
    Dernier message: 11/07/2008, 19h18
  3. Protéger mon PC contre les accès à distance.
    Par devlopassion dans le forum Sécurité
    Réponses: 2
    Dernier message: 06/04/2007, 01h47
  4. Protéger son code source ?
    Par supergrey dans le forum C++
    Réponses: 32
    Dernier message: 05/12/2006, 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