Quelle est la qualité de Dotfuscator Community Edition? Qu’est-ce qu’un «bon obfuscateur»?

Je prévois de lancer un petit utilitaire à bas prix. Comme il s’agit d’un passe-temps plus important que celui des affaires, j’avais l’intention d’utiliser Dotfuscator Community Edition fourni avec VS2008.

Comment est-ce bon?

Je pourrais également utiliser la définition de «assez bon obfuscateur» – quelles sont les fonctionnalités qui manquent dans l’édition communautaire de Dotfuscator pour la rendre suffisamment bonne.

Modifier:

J’ai vérifié les prix sur le nombre d’obfuscateurs commerciaux et ils coûtent cher. Est-ce que ça vaut le coup?

Les versions commerciales protègent-elles beaucoup mieux la rétro-ingénierie?

Je n’ai pas très peur que mon application soit piratée (ce sera décevant si l’application est si mauvaise que personne n’est intéressé à la casser). De toute façon, ce n’est pas très protégé, pas trop complexe de vérification des clés de série et des licences à quelques endroits du code. Cela me dérange que sans obfuscation, quelqu’un peut facilement obtenir le code source, le renommer et le vendre comme le sien.

Est-ce que cela arrive souvent?

Edit 2:

Quelqu’un peut-il recommander l’obfuscateur commercial. J’ai trouvé beaucoup d’entre eux, tous sont chers, certains n’ont même pas le prix indiqué sur le site Web.

Du sharepoint vue des fonctionnalités, tous les produits semblent plus ou moins similaires.

Qu’est-ce qu’un ensemble minimal de fonctionnalités devrait avoir obfuscator?

En résumé, la principale différence entre Dotfuscator Community Edition et les autres éditions “professionnelles” est que Community Edition ne fera que masquer et modifier vos espaces de noms, noms de méthodes et autres aspects accessibles “publics” de vos classes. Il ne plonge pas dans les fonctions elles-mêmes et obscurcit le code “privé” dans la fonction.

En outre, Community Edition ne fait rien pour masquer des éléments tels que le stream de contrôle au sein de votre application, ni pour combiner le code de plusieurs assemblys en un seul assemblage. Ces fonctionnalités sont disponibles dans les versions payantes “professionnelles”.

La meilleure comparaison entre l’édition communautaire (la version “gratuite” fournie avec Visual Studio) et les éditions “professionnelles” payantes se trouve dans les deux liens suivants:

Comparaison des éditions Preemptive Dotfuscator

Dotfuscator Community Edition 3.0 sur MSDN

Le lien MSDN est légèrement obsolète, cependant, donne une bien meilleure explication des fonctionnalités disponibles dans les différentes éditions de Dotfuscator.

MODIFIER:

Les embarcations commerciales coûtent très cher et, si elles valent la peine? Eh bien, c’est un appel de jugement que vous seul pouvez vraiment faire. Personnellement, je dirais que cela ne vaut pas la peine dans votre scénario. Premièrement, parce que vous ne voulez protéger qu’une seule application (“Je prévois de lancer un petit utilitaire à bas prix”) et deuxièmement, vous ne vous souciez pas trop de l’application “craquée” (“I”). Je n’ai pas très peur que mon application soit fissurée. “).

Je comprends comment vous pouvez vous rendre compte que les applications .NET compilées, sans aucune obscurcissement, peuvent être facilement modifiées à leur code source d’origine, et que quelqu’un peut s’en servir pour voler votre logiciel et le vendre comme le leur. Il rest que le piratage de logiciels existe et que vous ne l’arrêterez probablement jamais.

Essayer d’arrêter le piratage de logiciels a été débattu à la fois sur le site (Stack Overflow) et sur Internet.

Le consensus général semble être que vous devez consacrer votre temps et votre énergie à rendre votre produit aussi performant que possible, plutôt que d’utiliser le même temps pour protéger quelque chose qui, avec suffisamment de temps / d’argent, peut être un “attaquant”. craquer “/ voler votre logiciel quand même, malgré tous vos efforts pour l’empêcher de le faire.

Est-ce que cela arrive souvent?

Je dirais que cela se produit probablement beaucoup moins que vous le pensez. Bien sûr, les logiciels sont fissurés, mais je ne pense pas que trop de gens volent le code source des autres et le transforment complètement pour le vendre. Je ne dis pas que ce n’est pas le cas, ou que ce n’est pas arrivé, mais ce n’est certainement pas un phénomène courant.

Pour résumer, je dirais que votre meilleur pari serait de vous concentrer sur l’utilité de votre utilitaire et d’utiliser l’obfuscateur Dotfuscator gratuit, car il nécessite très peu d’investissement en temps / argent pour masquer votre code du plus des regards indiscrets évidents, mais ne perdez pas le sumil sur le fait que si quelqu’un veut craquer / voler votre produit / code suffisamment, ils le feront.

Je pense que Dotfuscator Community Edition fourni avec Visual Studio est une solution assez naïve. Il ne fournit que le changement de nom du symbole et ne gêne pas du tout le stream de contrôle. Et si quelqu’un décide de voler votre code, il ne lui faudra que refactoriser tous les noms, ce qui est assez facile avec un petit nombre de classes.

Vous pouvez également compter sur une décompilation moins parfaite fournie par Reflector (elle gâche généralement les blocs de commutateurs, fait beaucoup de gotos, de blocs incompatibles, etc.).

Mais je vous suggère d’essayer Eziriz .NET Reactor . Il en coûte seulement 179 $ (meilleur rapport prix / caractéristiques). Il fournit des techniques d’obfuscation standard telles que le renommage de symbole, le cryptage de chaîne, l’obscurcissement de stream de contrôle. Comme bon bonus, il crée un lanceur natif pour votre application, qui contiendra votre assembly principal et toutes les références tierces chiffrées et chargées à la demande. De plus, il fournit des fonctionnalités de licence.

Quoi qu’il en soit, renverser l’application .NET n’est pas si difficile, je l’ai fait pour le plaisir et je peux dire que ce n’est que la question du temps et de l’argent (et bien sûr du bon sens).

Au minimum, un obfuscateur devrait avoir:

  1. Chiffrement de chaîne
  2. Renommage de symbole
  3. Obscurcissement du stream de contrôle

Bon d’avoir des fonctionnalités sont les suivantes:

  1. Protection des ressources
  2. Assemblage / incorporation d’assemblage
  3. Méthode d’appel cachée
  4. Possibilité de signer automatiquement les assemblages obscurcis
  5. Prise en charge des assemblages de satellites
  6. Élimination du code mort
  7. Réduction des méta-données
  8. Anti-décompilateur (réflecteur)
  9. Anti-falsification
  10. Anti-Debugging

Jetez un coup d’œil à notre produit Crypto Obfuscator qui prend en charge tous ces éléments.

Une autre façon de contourner le code de rétro-ingénierie est de savoir où placer vos dll si vous ne pouvez pas vraiment vous permettre d’obtenir un obfuscateur. Et dans vos assemblées avant le déploiement, dites au compilateur où les chercher, ce qui était une vieille pratique pour empêcher le reverse engineering. Mais comme cela a déjà été dit, concentrez-vous principalement sur le développement d’un excellent produit et de bonnes pratiques de codage, vous pourrez alors vous permettre une belle application d’obfuscateur à l’avenir. Aussi, essayez de ne pas trop vous soucier de ce que les autres utilisateurs piratent votre code, car la plupart des pirates utilisent le code pour trouver le moyen d’utiliser le produit sans le payer et de ne pas dérober le code. Ouais, je souhaite que JIT ne supporte que c # et vb.net ce qui aurait vraiment réduit le reverse engineering, mais comme jit peut en lire beaucoup car Alors codez et gagnez de l’argent, achetez des titres supplémentaires.