outils d'obscurcissement .NET / stratégie

voix
146

Mon produit a plusieurs composants: ASP.NET, Windows Forms App et service Windows. 95% ou du code est écrit en VB.NET.

Pour des raisons de propriété intellectuelle, je dois obscurcir le code, et jusqu'à présent j'utilise une version de Dotfuscator qui est maintenant âgé de plus de 5 ans. Je pense qu'il est temps de passer à un nouvel outil de génération. Ce que je suis à la recherche est une liste d'exigences que je dois prendre en compte lors de la recherche d'une nouvelle obfuscateur.

Ce que je sais que je devrais chercher à ce jour:

  • Sérialisation / désérialisation . Dans ma solution actuelle, je dis simplement l'outiln'obscurcir les membres de données de classe parce que la douleur de ne pas êtremesure de chargerdonnées qui a été précédemment sérialisés est tout simplement trop grand.
  • Intégration avec processus de construction
  • Travailler avec ASP.NET . Dans le passé, j'ai trouvé cette problématiqueraison demodificationnoms .dll (vous avez souvent une par page) - qui nepas tousoutils gèrent bien.
Créé 05/08/2008 à 17:20
source utilisateur
Dans d'autres langues...                            


31 réponses

voix
49

Nous avons essayé un certain nombre de obfuscators. Aucun d'entre eux travaillent sur une grande application client / serveur qui utilise Remoting. Le problème est que la part du client et le serveur quelques DLLs, et nous avons trouvé aucune obfuscateur qui peut le manipuler.

Nous avons essayé Dotfuscator Pro, smartassembly, Xenocode, Salamandre, et plusieurs petites applications de temps dont les noms me échappent.

Franchement, je suis convaincu obscurcissement est un grand hack.

Même les problèmes qu'elle traite ne sont pas tout à fait un vrai problème. La seule chose que vous avez vraiment besoin de protéger est des chaînes de connexion, codes d'activation, les choses sensibles à la sécurité comme ça. Ce non-sens qu'une autre entreprise va de désosser tout votre codebase et de créer un produit concurrent de celui-ci est quelque chose d'un cauchemar de gestionnaire paranoïaque, pas la réalité.

Créé 07/08/2008 à 19:15
source utilisateur

voix
39

dans ce moment, je suis « Knee Deep » en essayant de trouver une bonne solution. Voici mes impressions jusqu'à présent.

Xenocode - J'ai une ancienne licence pour Xenocode2005 que je l' habitude d'utiliser pour obscurcir mon .net 2.0 assemblées. Il a bien fonctionné sur XP et était une solution décente. Mon projet actuel est .net 3.5 et je suis sur Vista, le soutien m'a dit de lui donner un coup , mais la version 2005 ne fonctionne même pas sur Vista (accidents) alors moi et maintenant je dois acheter « PostBuild2008 » à un prix gobsmacking de 1900 $. Cela pourrait être un bon outil , mais je ne vais pas savoir. Trop cher.

Reactor.Net - Ceci est un prix beaucoup plus attractif et il a bien fonctionné sur mon autonome executable. Le module de licence a été aussi agréable et me aurait sauvé un tas d'efforts. Malheureusement, il manque un élément clé et qui est la possibilité d'exclure des choses de l'obscurcissement. Cela rend impossible d'atteindre le résultat que je avais besoin (Fusion de plusieurs assemblées ensemble, certains obfusquer, sans Obfuscate autres).

Smartassembly - J'ai téléchargé le Eval pour cela et cela a fonctionné parfaitement. Je suis en mesure de réaliser tout ce que je voulais et l'interface était de première classe. Point de prix est encore un peu lourd.

Dotfuscator Pro - Impossible de trouver le prix sur le site. À l' heure actuelle dans les discussions pour obtenir un devis. Cela semble de mauvais augure.

Confuser - un projet open source qui fonctionne très bien (confondre ppl, comme son nom l' indique). https://confuser.codeplex.com/
(ajouté par jgauffin)

Note: ConfuserEx est apparemment « cassé » , selon le numéro # 498 sur leur repo GitHub.

Créé 11/05/2009 à 07:04
source utilisateur

voix
39

Retour avec .Net 1.1 obscurcissement était essentiel: code décompilation était facile, et vous pouvez aller de l'Assemblée, à l'IL, le code C # et l'ont compilé à nouveau avec très peu d'effort.

Maintenant, avec .Net 3.5 Je ne suis pas sûr du tout. Essayez décompiler un ensemble 3,5; ce que vous obtenez est un long chemin à long de la compilation.

Ajouter les Optimisations de 3,5 (bien mieux que 1.1) et la façon dont les types anonymes, les délégués et ainsi de suite sont traités par la réflexion (ils sont un cauchemar pour recompiler). Ajouter des expressions lambda, compilateur « magique » comme LINQ syntaxe et var, et C # 2 fonctions comme yield(qui se traduit par de nouvelles classes avec des noms illisibles). Votre code décompilé finit par un long chemin de compilable.

Une équipe professionnelle avec beaucoup de temps pourrait encore désossage à nouveau, mais la même chose est vraie de tout code obfuscation. Quel est le code qu'ils ont de ce serait ingérable et très probablement très buggy.

Je recommande vos assemblées clés de signature (qui signifie que si les pirates peuvent recompiler un, ils doivent recompiler tous) mais je ne pense pas que la peine de l'obscurcissement il.

Créé 12/08/2008 à 13:19
source utilisateur

voix
21

Si vous cherchez un libre , vous pouvez essayer DotObfuscator Community Edition qui vient avec Visual Studio ou Eazfuscator.NET .


Depuis le 29 Juin, 2012 , Eazfuscator.NET est maintenant commercial. La dernière version disponible gratuitement est 3.3.

Créé 05/08/2008 à 17:30
source utilisateur

voix
18

J'utilise smartassembly. Fondamentalement, vous choisissez un dll et il retourne brouillées. Il semble fonctionner très bien et je l'ai eu aucun problème jusqu'à présent. Très, très facile à utiliser.

Créé 05/08/2008 à 17:21
source utilisateur

voix
10

J'ai essayé presque tous les obfuscateur sur le marché et smartassembly est le meilleur à mon avis.

Créé 07/08/2008 à 11:44
source utilisateur

voix
8

J'ai également en utilisant smartassembly. J'ai trouvé que Ezrinz .Net Reactor beaucoup mieux pour moi applications .net. Il obscurcit, soutenir Mono, se confond assemblées et aussi dispose également d' un module de licence très agréable pour créer la version d'essai ou lier la licence à une machine particulière (très facile à mettre en œuvre). Le prix est également très compétitif et quand je besoin de soutien qu'ils où rapide. Eziriz

Pour être clair, je suis juste un custumer qui aime le produit et non en aucune façon liée à la société.

Créé 22/08/2008 à 18:41
source utilisateur

voix
7

La réponse courte est que vous ne pouvez pas.

Il existe différents outils autour qui rendront plus difficile pour quelqu'un de votre code - dont certains ont été signalées par d'autres réponses.

Cependant, tous ces faire est de rendre plus difficile à lire - ils augmentent la quantité d'effort requis, c'est tout. Souvent, cela est suffisant pour dissuader les lecteurs occasionnels, mais quelqu'un qui est déterminé à creuser dans votre code sera toujours en mesure de le faire.

Créé 16/07/2009 à 22:45
source utilisateur

voix
6

Nous avons une application multi niveaux avec un asp.net et interface WinForm qui prend en charge également Remoting. J'ai eu aucun problème avec l'utilisation de tout obfuscateur à l'exception du type de cryptage qui génère un chargeur qui peut être problématique dans toutes sortes de façons inattendues et tout simplement pas la peine à mon avis. En fait, mon conseil serait plus le long des lignes de « Évitez le cryptage obfuscators de type chargeur comme la peste ». :)

Dans mon expérience tout obfuscateur fonctionnera bien avec tout aspect de .net, y compris asp.net et Remoting, il vous suffit de devenir intime avec les paramètres et apprendre jusqu'où vous pouvez la pousser dans les zones de votre code. Et prenez le temps d'essayer l'ingénierie inverse sur ce que vous obtenez et voir comment cela fonctionne avec les différents paramètres.

Nous avons utilisé plusieurs au cours des années dans nos applications commerciales et se sont installés sur les épices obfuscateur de 9rays.net parce que le prix est juste, il fait le travail et ils ont un bon soutien si nous avons vraiment pas besoin de l'appui des années plus mais pour être honnête Je ne pense pas que ce qui compte vraiment que vous utilisez Obfuscator, les problèmes et la courbe d'apprentissage sont tout de même si vous voulez avoir fonctionner avec des Remoting et asp.net.

Comme d'autres l'ont mentionné tout ce que vous faites vraiment est l'équivalent d'un cadenas, en gardant les gens autrement honnêtes et ou de le rendre plus difficile à recompiler simplement une application.

L'agrément est généralement la zone clé pour la plupart des gens et vous devriez certainement être en utilisant une sorte de système de certificat signé numériquement pour des licences de toute façon. Votre plus grande perte proviendra de partage occasionnel des licences si vous ne disposez pas d'un système intelligent en place, les gens qui brisent le système de licences ont été ne va jamais acheter en premier lieu.

Il est vraiment facile de prendre trop loin et avoir un impact négatif sur vos clients et votre entreprise, faire ce qui est simple et raisonnable et ne vous inquiétez pas.

Créé 16/11/2008 à 20:57
source utilisateur

voix
5

Crypto Obfuscator répondre à toutes vos préoccupations et scénarios. Il :

  1. exclut automatiquement les types / membres de l'obscurcissement basés sur des règles. types / champs sérialisés sont l'un d'entre eux.
  2. Il peut être intégré dans le processus de construction en utilisant MSBuild.
  3. Prise en charge des projets ASP.Net.
Créé 09/10/2009 à 10:42
source utilisateur

voix
5

Au cours des deux derniers jours, je l'ai expérimenté avec Dotfuscator Community Edition avancé (téléchargement gratuit après enregistrement du CE de base fourni avec Visual Studio).

Je pense que la raison pour laquelle plus de gens n'utilisent pas obscurcissement comme option par défaut est qu'il est embêtant sérieux par rapport au risque. Sur les petits projets de test que je pouvais obtenir le code obscurcie en cours d'exécution avec beaucoup d'efforts. Déploiement d'un simple projet via ClickOnce était gênant, mais réalisable après avoir signé manuellement les manifestes avec mage. Le seul problème était que sur une erreur de la trace de la pile est revenue et la CE brouillées ne dispose pas d'un DeObfuscator ou clarificateur empaquetés.

J'ai essayé de masquer un vrai projet qui est basé VSTO dans Excel, avec l'intégration Virtual Earth, beaucoup d'appels webservice et un conteneur du CIO et beaucoup de réflexion. C'était impossible.

Si l'obscurcissement est vraiment une exigence critique, vous devez concevoir votre application avec cela à l'esprit dès le début, tester les constructions brouillées que vous progressez. Dans le cas contraire, si elle est un projet assez complexe, vous allez finir avec une quantité grave de la douleur.

Créé 04/02/2009 à 23:40
source utilisateur

voix
3

J'ai trouvé la Agile.Net fournir assez bonne protection pour votre Assemblée .Net , car il offre non seulement faux - fuyants , mais aussi le cryptage. Télécharger un sentier gratuit.
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx

Créé 03/09/2013 à 16:26
source utilisateur

voix
3

Évitez réacteur. Il est totalement inutile (et oui je payé une licence). Xenocode était le meilleur que je rencontrais et a acheté une licence pour aussi. Le soutien a été très bon, mais je ne l'ai pas besoin autant que cela fonctionne simplement. Je l'ai testé tous les obfuscateur que je pouvais trouver et ma conclusion est que Xenocode était loin le plus robuste et a fait le meilleur travail (également la possibilité de poster traiter votre exe .NET à un exe natif que je ne vois nulle part ailleurs.).

Il existe deux différences principales entre le réacteur et Xenocode. La première est que Xenocode fonctionne réellement. La seconde est que la vitesse d'exécution de vos assemblées est pas différent. Avec réacteur, il était d'environ 6 millions de fois plus lent. J'ai aussi eu l'impression que réacteur était une opération d'un homme.

Créé 04/05/2011 à 10:43
source utilisateur

voix
3

Vous pouvez utiliser "Dotfuscator Community Edition" - il est par défaut dans Visual Studio 2008 Professional. Vous pouvez lire à ce sujet à l'adresse:

http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html

La version « Professional » du produit coûte de l'argent, mais est mieux.

Avez-vous vraiment besoin de votre code brouillées? En général, il y a très peu de mal à votre demande décompilation, à moins qu'il ne soit utilisé à des fins de sécurité. Si vous êtes inquiet au sujet des gens « voler » votre code, ne soyez pas; la grande majorité des personnes consultent votre code sera à des fins d'apprentissage. Quoi qu'il en soit, il n'y a pas de stratégie d'obscurcissement totalement efficace pour .NET - quelqu'un avec assez d'adresse sera toujours en mesure de décompiler / modifier votre application.

Créé 16/07/2009 à 22:47
source utilisateur

voix
3

J'ai eu aucun problème avec Smartassembly.

Créé 16/09/2008 à 12:12
source utilisateur

voix
3

J'ai récemment essayé redirigeant la sortie d'un obfuscateur libre dans l'autre obfuscateur libre - à savoir Dotfuscator CE et la nouvelle Babel obfuscateur sur CodePlex. Plus de détails sur mon blog .

Quant à la sérialisation, je suis passé ce code dans une DLL différente et que dans le inclus projet. Je raisonnais qu'il n'y avait pas de secret là-dedans qui ne sont pas dans le fichier XML de toute façon, donc il n'a pas besoin de faux-fuyants. S'il y a un code sérieux dans ces classes, en utilisant des classes partielles dans l'ensemble principal devrait couvrir.

Créé 11/09/2008 à 12:53
source utilisateur

voix
3

Vous devez utiliser tout ce qui est moins cher et le plus connu pour votre plate-forme et l'appeler un jour. Obscurcissement des langages de haut niveau est un problème difficile, car les flux VM opcode ne souffrent pas des deux plus grands problèmes courants d'opcode natifs font: l'identification de la fonction / méthode et enregistrer aliasing.

Ce que vous devez savoir sur bytecode d'inversion est qu'il est déjà pratique courante pour les testeurs de sécurité pour examiner le code X86 droit et trouver des vulnérabilités en elle. En X86 cru, vous ne pouvez pas nécessairement trouver même des fonctions valides, permettent de suivre seulement une variable locale à travers un appel de fonction. Dans presque aucun cas faire de code natif Inverseurs ont accès à la fonction et les noms de variables --- à moins qu'ils ne révisons le code Microsoft, pour lequel MSFT fournit obligeamment cette information au public.

« Dotfuscation » agit principalement en fonction de brouillage et les noms de variables. Il est probablement préférable de le faire que de publier le code avec des informations de niveau de débogage, où le réflecteur est littéralement perdriez votre code source. Mais tout ce que vous faites au-delà est susceptible d'entrer dans des rendements décroissants.

Créé 10/09/2008 à 22:38
source utilisateur

voix
2

Voici un document de Microsoft eux - mêmes. L' espoir qui aide ..., il est de 2003, mais il pourrait encore être utile.

Créé 16/07/2009 à 22:38
source utilisateur

voix
2

J'ai le code Dissimuler dans la même application depuis .Net 1, et il a été un véritable casse-tête du point de vue de l'entretien. Comme vous l'avez mentionné, le problème de sérialisation peut être évité, mais il est vraiment facile de faire une erreur et quelque chose que vous embrouiller ne voulait pas brouillées. Il est facile de briser la construction, ou pour changer le modèle d'obscurcissement et ne pas être en mesure d'ouvrir les anciens fichiers. De plus, il peut être difficile de savoir ce qui a mal tourné et où.

Notre choix était Xenocode, et si je fais le choix aujourd'hui encore je préfère ne pas obscurcir le code, ou utilisez Dotfuscator.

Créé 21/08/2008 à 21:31
source utilisateur

voix
1

Il y a une bonne version open source appelée Obfuscar. Il semble fonctionner très bien. Types, propriétés, champs, les méthodes peuvent être exclues. L'original est ici: https://code.google.com/p/obfuscar/ , mais comme il semble ne pas être plus mis à jour, quelqu'un qu'il fourchue ici: https://obfuscar.codeplex.com/

Créé 19/12/2013 à 05:24
source utilisateur

voix
1

Je devais utiliser un obscurcissement / protection des ressources dans mon dernier rpoject et trouvé Crypto Obfuscator comme agréable et simple à utiliser l' outil. La question de sérialisation est seulement une question de paramètres de cet outil.

Créé 22/04/2011 à 12:18
source utilisateur

voix
1

la voie libre serait d'utiliser Dotfuscator à partir de Visual Studio, autrement youd sortir et acheter une obfuscateur comme Postbuild ( http://www.xenocode.com/Landing/Obfuscation.aspx )

Créé 16/07/2009 à 22:38
source utilisateur

voix
1

Tout dépend du langage de programmation que vous utilisez. Lire l'article: Code Obfuscated

Créé 16/07/2009 à 22:31
source utilisateur

voix
1

Nous utilisons smartassembly sur notre client Windows. Fonctionne très bien.

Il ajoute des problèmes supplémentaires aussi. L'impression de vos noms de classe dans les fichiers journaux / exceptions doivent être de-obscurcie. Et bien sûr, ne peut pas créer une classe à partir de son nom. Il est donc une bonne idée de jeter un oeil à votre client et voir quels problèmes vous pouvez obtenir par obscurcissement.

Créé 04/04/2009 à 12:28
source utilisateur

voix
0

Smartassembly est grande, j'ai été utilisé dans la plupart de mes projets

Créé 01/12/2010 à 05:49
source utilisateur

voix
0

Je l' utilise aussi smartassembly. Cependant, je ne sais pas comment cela fonctionne pour une application Web. Cependant, je voudrais souligner que si votre application utilise une protection de type shareware, assurez - vous qu'il ne cochez pas une licence avec un retour booléenne. il est trop facile à craquer d'octets. http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx

Créé 04/04/2009 à 11:53
source utilisateur

voix
0

Vous pouvez également regarder les nouvelles technologies de protection de code tels que Metaforic et ViLabs et les nouvelles technologies de protection contre la copie de logiciels tels que ByteShield . Divulgation: Je travaille pour ByteShield.

Créé 03/01/2009 à 19:56
source utilisateur

voix
-1

Dissimuler n'est pas une véritable protection.

Si vous avez un fichier Exe .NET il y a une FAR meilleure solution.

J'utilise Themida et peut dire que cela fonctionne très bien.

Le seul inconvénient de Themida est qu'il ne peut pas protéger DLLs .NET. (Il protège également le code C ++ dans Exe et DLL)

Themida est de loin moins cher que les obfuscators mentionnés ici et est le meilleur de lutte contre la piraterie protection sur le marché. Il crée une machine virtuelle sont parties critiques de votre code sont exécutés et exécute plusieurs threads qui détectent la manipulation ou par points d' arrêt d' un pirate. Il convertit le Exe .NET en quelque chose que réflecteur ne reconnaît même pas comme un ensemble de .NET plus.

S'il vous plaît lire la description détaillée sur leur site web: http://www.oreans.com/themida_features.php

Créé 06/03/2014 à 04:03
source utilisateur

voix
-1

J'ai essayé Eziriz version de démonstration .... je l'ai aimé. Mais jamais apporté le logiciel.

Créé 04/09/2009 à 04:21
source utilisateur

voix
-2

Essayez d'utiliser ce service http://morpher.com/

Je l'ai utilisé pour un projet.

Créé 27/12/2013 à 11:22
source utilisateur

voix
-2

J'ai essayé un produit appelé Fouillez et il fait un bon travail en vous donnant un certain contrôle ... Bien qu'il manque beaucoup de choses qui Eziriz offre, mais le prix pour Fouillez est trop bon ...

Créé 06/09/2013 à 18:27
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more