Comment puis-je protéger mon code C # d'être décompilé? [dupliquer]
-
26-10-2019 - |
Question
Possible en double: .Net obscurcissement
Juste il y a quelques minutes, je lis qu'il ya un certain nombre d'outils, de nombreux gratuits, qui vous permettent de convertir un C # retour .exe à une solution VB. Cela signifie que mon code propriétaire peut être consulté, sous la direction et recompilée / redistribués. Y at-il un moyen d'empêcher cela?
La solution
En bref, vous devez utiliser obscurcissement. Pour ne citer que quelques-uns.
- Dotfuscator
- Obfuscator
- Skater (Freeware)
- DeployLX CodeVeil
- De plus Visual Studio est livré avec une version allégée de Dotfuscator.
Vous pouvez lire MSDN article qui a des conseils sur la façon de obfuscate votre code.
Autres conseils
Vous pouvez utiliser un Obfuscator .. Salamandre est un tel outil pour .NET. ..
Confuser est un autre obfuscateur gratuit pour .NET. Il est développé en C # et en utilisant Mono
Vous pouvez mono utiliser pour compiler un binaire natif, il suffit de Google vers le haut.
Vous pourriez également coder les fonctions / composants sensibles dans natif C ++, l'envelopper dans C ++ / CLI et à utiliser avec .NET, en plus de obscurcissant vos assemblages .NET.
Même avec obscurcissement le compilateur JIT devra voir le code IL éventuellement, vous faites juste plus difficile à décompiler.
Un obfuscateur est un bon pari, comme augmente un effort de personne pour visualiser, modifier, redistribuer, etc. le code.
Bien que ceux-ci ne protègent pas votre code ils pourraient empêcher physiquement le comportement de décompilation votre code. Mécanismes juridiques tels que les brevets, les droits d'auteur et des licences
décompilation ou l'ingénierie inverse est une bataille des efforts économiques. Est-il en vaut la peine pour vous Occultation votre code (potentiellement aller à l'encontre de la réflexion « gotchas ») par rapport à la peine est-il quelqu'un pour désosser (avec peu de contexte) au lieu d'imiter ou de réécriture?
Un commentaire sur cette réponse, https://stackoverflow.com/a/1988467/64348 , avec laquelle plusieurs d'accord, indique que l'obscurcissement ne pas empêcher revenir au code d'origine (ou une version assez proche de l'original). Obscurcissement est juste un stand pour une traduction réversible sans clé réelle nécessaire, sauf un contexte utile.