Qu'est-ce que vous utilisez pour protéger votre code .NET du reverse engineering? [fermé]

StackOverflow https://stackoverflow.com/questions/106794

  •  01-07-2019
  •  | 
  •  

Question

Pendant un certain temps, nous utilisions un outil appelé CodeVeil. Je me demande simplement s'il existe de meilleures alternatives.

Edit: Avant que plus de personnes ne comprennent mal la question, je suis consciente qu'un pirate déterminé serait probablement capable de vaincre l'un de ces outils. Je ne m'inquiète pas trop pour eux cependant. Ces outils sont uniquement destinés à arrêter le "cracker occasionnel" et à empêcher les gens de voler la propriété intellectuelle de notre société. S'ils sont assez bons pour obtenir un outil décent, ils ne sont probablement pas intéressés par le vol de notre code de merde :-P

Était-ce utile?

La solution

J'ai eu beaucoup de succès avec Xenocode Postbuild. L’outil peut masquer les assemblages .NET, protéger le désassemblage de Reflector, combiner des assemblages .NET en un seul exécutable ("virtualisation") et même compiler des applications .NET en exécutables autonomes ne nécessitant pas le runtime .NET.

Autres conseils

Je ne suis pas convaincu par la valeur de ces outils. Aucune des solutions technologiques n’empêche l’ingénierie inverse mieux que des protections juridiques telles que les licences, les marques, les brevets, les droits d’auteur, etc.

.NET est vraiment un grand mouvement source transparent. Il vaut bien mieux encadrer les conditions d'utilisation autour de votre propriété intellectuelle, telles que les licences et les droits d'auteur.

La compilation de votre application .NET donne des assemblys de sortie contenant une grande quantité de métadonnées. Cette information facilite la reconstruction de quelque chose de très proche du code original. C'est un excellent outil gratuit appelé .NET Reflector qui permet de faire exactement cela. C'est un moyen courant d'examiner le fonctionnement des bibliothèques de classes de base. Téléchargez et utilisez cet outil pour afficher les versions C # / VB.NET reconstituées du contenu de l'assembly.

Si vous êtes une organisation commerciale, vous ne voulez pas que les gens trouvent qu'il est facile de consulter votre code coûteux. Une méthode répandue consiste à utiliser Obfuscation pour brouiller le contenu d’une manière qui ne modifie pas son fonctionnement, mais le rend difficile à comprendre. L'obfuscation utilise des techniques telles que renommer des variables et des méthodes. Déterminer le but des méthodes "a1", "a2", "a3" est beaucoup plus difficile que les méthodes originales "GetName", "UpdateInterestRate" et "SetNewPassword".

L'utilisation de l'obscurcissement rend beaucoup plus difficile la compréhension de ce que vous codez et des algorithmes qu'il utilise. Cela ne le rend toutefois pas impossible. De la même manière que le code C ++ peut encore être compris par un expert en assembleur disposé à passer du temps à travailler sur votre binaire, un expert en MSIL peut éventuellement élaborer votre code obfusqué. Mais cela augmente la barrière au point que peu de gens vont essayer.

Honnêtement, vous ne pouvez rien faire de plus, à part l'obscurcissement avec les outils que vous avez mentionnés. .NET est juste une étape au dessus des langages de script, excepté que les commandes de script sont binaires et s'appellent IL. C'est un peu trop de simplification, mais ce n'est pas si loin de la réalité. Tout bon programme écrit avec Reflection peut être utilisé pour le reverse engineering d’applications .NET ou, si vous en avez les connaissances suffisantes, d’un bon éditeur hexadécimal.

Il existe plusieurs outils populaires d’obscurcissement, dont Dotfuscation, qui a une "lumière". version fournie avec Visual Studio 2005 et 2008. Ils ont une version Pro qui ne se contente pas de renommer les noms de variables et de fonctions. Cependant, le code est toujours visible, il est juste un peu brouillé pour rendre plus difficile la lecture et la logique du logiciel.

Une autre technique consiste à utiliser d'autres programmes qui chiffrent le programme et le déchiffrent au moment de l'exécution. Cependant, ce n'est pas une solution parfaite non plus. En fait, à ma connaissance, il n’existe pas de solution parfaite qui empêcherait un ingénieur déterminé de procéder à une ingénierie inverse du logiciel si le temps et les efforts qui y sont consacrés sont suffisamment longs.

Il s’agit vraiment de déterminer le niveau de protection qui rendra suffisamment difficile la dissuasion du pirate informatique occasionnel, et rendra aussi coûteuse l’ingénierie inverse que vous pouvez, de sorte que l’ingénierie inverse a au moins un coût soit le temps ou l'argent, ou idéalement, les deux. Plus les coûts de la rétroingénierie sont coûteux, moins nombreux seront ceux qui seront disposés à consentir des efforts. Et c'est le gros problème de l'obscurcissement.

Certains pensent que l'utilisation d'un compilateur tel que le compilateur C ++ compilé en code natif empêchera ce type d'ingénierie inverse, mais ce n'est pas le cas. Un bon désassembleur permettra même l’exécution inversée d’exécutables binaires purs. Il n’existe donc pas de solution parfaite. Si l'ordinateur peut le lire et l'exécuter, la mémoire qu'il utilise peut être analysée et surveillée, en contournant toutes les tentatives de chiffrement, de masquage ou tout autre moyen de garder votre code hors de la portée d'un ingénieur déterminé.

Désolé de ressusciter un ancien message, mais je pense que le réacteur .NET d’Eziriz fonctionne à merveille.

En fait, je l’utilise moi-même pour toutes mes applications .net et, apparemment, il n’existe aucun outil existant permettant de décompiler un programme protégé par un réacteur .net. Plus de détails peuvent être trouvés sur cette page d’informations, http://www.eziriz.com/dotnet_reactor.htm . Testez-le avec la version d’essai et le réflecteur .net et vous verrez par vous-même.

AVERTISSEMENT: je ne travaille pas pour RedGate les fabricants de SmartAssembly. Je suis juste un client très satisfait qui a trouvé une bonne solution abordable.

Le choix est très simple, choisissez SmartAssembly! Ne perdez pas votre temps et votre argent avec les autres obfuscateurs du marché. J'ai dépensé plus d'argent en heures non facturables pour évaluer des produits concurrents. Ils avaient tous des défauts fatals et étaient presque impossibles à corriger. SmartAssembly est une application polie, facile à utiliser, bien documentée et dotée d'un excellent support. Postez une question sur leur forum et attendez une réponse raisonnablement rapide de la part des développeurs actuels.

SmartAssembly est plus qu'un observateur. Il comporte de nombreuses fonctionnalités, notamment un générateur de rapports d'incident intégré, hautement personnalisable, que vos clients peuvent automatiquement vous envoyer un courrier électronique. Vous pouvez afficher ces rapports sur votre propre serveur ou sur des serveurs Red-Gates. Je ne peux pas vous dire à quel point c'est utile lorsque vous testez la version bêta ou que vous distribuez le produit aux clients. Il génère également des fichiers de débogage afin que vous puissiez déboguer tous les problèmes de post-publication que vous pourriez rencontrer avec votre produit obsfucated.

Si vous distribuez une application commerciale, il est logique de dépenser de l'argent pour un observateur décent. Un mauvais choix ici peut compromettre votre propriété intellectuelle ou, pire encore, vous mener à des jours de débogage macabres. Combien cela coûterait-il par rapport aux coûts de SmartAssembly?

J'ai entendu dire que Obfusticator est bon; il est utilisé sur .Net Reflector.

Un autre est Crypto Obfuscator - plus abordable que d'autres, et dispose de diverses méthodes d’obscurcissement et de protection pour empêcher les pirates informatiques causaux et occasionnels.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top