58 votes

Quelle est la qualité de Dotfuscator Community Edition ? Qu'est-ce qu'un "assez bon obscurcisseur" ?

Je prévois de publier un petit utilitaire à bas prix. Comme il s'agit plus d'un hobby que d'une activité commerciale, j'ai prévu d'utiliser Dotfuscator Community Edition qui est livré avec VS2008.

Quelle est sa qualité ?

Je pourrais également utiliser la définition de "good enough obfuscator" - quelles sont les fonctionnalités manquantes de Dotfuscator Community Edition pour qu'il soit suffisamment bon.

Editer :

J'ai vérifié les prix d'un certain nombre d'obscurcisseurs commerciaux et ils coûtent très cher. Le jeu en vaut-il la chandelle ?

Les versions commerciales sont-elles à ce point mieux protégées contre l'ingénierie inverse ?

Je n'ai pas très peur que ma candidature soit piratée (il serait décevant que ma candidature soit si mauvaise que personne ne s'intéresse à la pirater). Elle n'est pas très protégée de toute façon, pas de vérifications trop complexes de clés de série et de licences à quelques endroits dans le code. Ce qui me gêne, c'est que sans obscurcissement, quelqu'un peut facilement obtenir le code source, le renommer et le vendre comme s'il s'agissait du sien.

Cela se produit-il souvent ?

Editer 2 :

Quelqu'un peut-il me recommander un obscurcisseur commercial ? J'en ai trouvé beaucoup, mais tous sont chers, certains n'ont même pas de prix sur leur site web.

Du point de vue des caractéristiques, tous les produits semblent plus ou moins similaires.

Quel est l'ensemble minimal de fonctionnalités que l'obfuscateur doit posséder ?

49voto

CraigTP Points 18514

En bref, la principale différence entre Dotfuscator Community Edition et les autres éditions "professionnelles" est que Community Edition n'obfusquera et ne modifiera que vos espaces de noms, noms de méthodes et autres aspects accessibles "publiquement" de vos classes. Il n'ira pas jusqu'aux fonctions elles-mêmes et n'obscurcira pas le code "privé" à l'intérieur de la fonction.

En outre, l'édition communautaire ne fait rien pour obscurcir des éléments tels que le flux de contrôle au sein de votre application, ni pour "combiner" le code de plusieurs assemblages en un seul assemblage. Ces fonctionnalités sont disponibles dans les versions "professionnelles" payantes.

La meilleure comparaison entre la Community Edition (la version "gratuite" livrée avec Visual Studio) et les éditions "professionnelles", payantes, peut être trouvée en consultant les deux liens suivants :

Comparaison des éditions de Preemptive Dotfuscator

Dotfuscator Community Edition 3.0 sur MSDN

Le lien MSDN est légèrement dépassé, mais il donne une bien meilleure explication des fonctionnalités disponibles dans les différentes éditions de Dotfuscator.

EDITAR:

Les obscurcisseurs commerciaux coûtent beaucoup d'argent, et l'on peut se demander s'ils en valent la peine. C'est une question de jugement que vous êtes le seul à pouvoir trancher. Personnellement, je dirais que cela n'en vaut pas la peine dans votre cas. Premièrement, parce que vous ne souhaitez protéger qu'une seule application ("Je prévois de publier un petit utilitaire à bas prix") et deuxièmement, parce que vous dites que vous n'êtes pas trop préoccupé par le fait que l'application soit "piratée" ("Je n'ai pas très peur que mon application soit piratée").

Je comprends que cela puisse vous déranger que des applications .NET compilées, sans aucune obscurcissement, puissent être facilement désossées pour retrouver leur code source original, et que quelqu'un puisse en profiter pour voler votre logiciel et le vendre comme s'il était le sien, mais il n'en reste pas moins que le piratage de logiciels existe et que vous ne l'arrêterez probablement jamais.

La lutte contre le piratage des logiciels a fait l'objet de débats ad hoc ici (Stack Overflow) et sur l'ensemble de l'internet.

Le consensus général semble être que vous devez concentrer votre temps et votre énergie à rendre votre produit aussi bon que possible plutôt que d'essayer de protéger quelque chose qui, avec suffisamment de temps et d'argent, peut être "craqué" ou volé par un "attaquant", malgré tous vos efforts pour l'empêcher de le faire.

Cela se produit-il souvent ?

Je dirais que cela se produit probablement beaucoup moins souvent que vous ne le pensez. Bien sûr, les logiciels sont piratés, mais je ne pense pas qu'il y ait beaucoup de gens qui volent le code source d'autres personnes et le transforment complètement pour le vendre comme étant le leur. Je ne dis pas que cela n'arrive pas, ou n'est pas arrivé, mais ce n'est certainement pas un phénomène courant.

Pour résumer, je dirais que votre meilleur choix serait de vous concentrer sur la création d'un utilitaire aussi bon que possible et d'utiliser l'obfuscateur gratuit Dotfuscator, puisqu'il nécessite très peu d'investissement en temps et en argent, pour obscurcir votre code des yeux indiscrets les plus évidents, mais ne perdez pas le sommeil sur le fait que si quelqu'un veut craquer/voler votre produit/code suffisamment fort, il le fera.

11voto

Oleg I. Points 512

Je pense que Dotfuscator Community Edition livré avec Visual Studio est une solution assez naïve. Elle ne permet que de renommer les symboles et n'obscurcit pas du tout le flux de contrôle. Et si quelqu'un décide de voler votre code, il n'aura qu'à refactoriser tous les noms, ce qui est assez facile avec un petit nombre de classes.

Vous pouvez également compter sur la décompilation imparfaite fournie par Reflector (elle perturbe généralement les blocs de commutation, crée de nombreux gotos, ne fait pas correspondre les blocs if-else, etc.)

Mais je vous suggère d'essayer Eziriz .NET Reactor . Il ne coûte que 179 $ (AFAIK meilleur rapport prix/fonctionnalités). Il fournit des techniques d'obscurcissement standard telles que le renommage de symboles, le cryptage de chaînes de caractères, l'obscurcissement du flux de contrôle. En prime, il crée un lanceur natif pour votre application, qui contiendra votre assemblage principal et toutes les références de tiers cryptées et chargées à la demande. De plus, il fournit des capacités de licence.

Quoi qu'il en soit, inverser une application .NET n'est pas si difficile, je l'ai fait pour m'amuser et je peux dire que ce n'est qu'une question de temps et d'argent (et bien sûr de bon sens) pour savoir à quelle vitesse votre application sera piratée ou inversée.

8voto

logicnp Points 4509

Au minimum, un obscurcisseur devrait avoir les caractéristiques suivantes

  1. Cryptage des chaînes de caractères
  2. Renommer un symbole
  3. Obfuscation du flux de contrôle

Les caractéristiques utiles sont les suivantes :

  1. Protection des ressources
  2. Fusion/assemblage d'assemblages
  3. Masquage des appels de méthodes externes
  4. Possibilité de signer automatiquement les assemblages obfusqués
  5. Support pour les assemblages de satellites
  6. Élimination des codes morts
  7. Réduction des métadonnées
  8. Anti-décompilateur (Reflector)
  9. Anti-sabotage
  10. Anti-débogage

Jetez un coup d'œil à notre Obfuscateur de crypto-monnaie qui prend en charge tous ces éléments.

5voto

bvrwoo Points 1

Un autre moyen de contourner l'ingénierie inverse du code est de placer vos dll si vous n'avez pas les moyens de vous procurer des obfuscateurs qui ajoutent un support. Et dans vos assemblages avant le déploiement, indiquez au compilateur où les chercher, ce qui était une ancienne pratique pour entraver la rétro-ingénierie. Mais comme il a déjà été dit, concentrez-vous surtout sur le développement d'un excellent produit et de bonnes pratiques de codage, vous serez alors en mesure de vous offrir une belle application d'obfuscateur à l'avenir. Aussi, essayez de ne pas trop vous inquiéter que d'autres craquent votre code parce que la plupart des hackers craquent le code juste pour trouver un moyen d'utiliser le produit sans le payer et non pour voler du code ou pour apprendre d'un programmeur débutant. Oui, j'aurais aimé que JIT ne supporte que c# et vb.net, ce qui aurait vraiment réduit la rétro-ingénierie, mais comme JIT peut lire beaucoup de choses grâce à .net qui est très convivial pour les langages, c'est le prix à payer. Alors codez et gagnez de l'argent, achetez des titres supplémentaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X