Question

Nous prévoyons de développer une application client-serveur en utilisant C # et MySQL. Nous prévoyons de vendre le produit sur l'étagère comme tout autre logiciel utilitaire. Nous sommes inquiets au sujet de la décompilation de notre produit qui ne dispose en termes de facilité d'utilisation et la fonctionnalité fourni une sorte de longueur d'avance sur nos concurrents.

Comment peut-on empêcher notre logiciel de décompilation, de sorte que la logique métier du produit reste intact?

Nous avons entendu parler de réflecteur et d'autres décompilateurs ce qui rend notre code très vulnérable pour la copie.

Notre base de clients ne sont pas Corporates, mais les médecins qui se peuvent pas le faire, mais nos concurrents peuvent vouloir copier / désactiver licence ou reproduire même le code / fonctionnalité de sorte que la valeur de notre produit descend sur le marché.

Toute suggestion d'éviter cela est le bienvenu.

Était-ce utile?

La solution

Si vous déployez des assemblages .NET à vos machines clientes, une sorte de décompilation sera toujours possible avec réflecteur et des outils similaires.

Cependant, cette situation ne diffère pas de ce que vous rencontrez si vous avez écrit l'application dans ++ natif C. Il est toujours possible de décompiler choses -. S'il était impossible, le processeur ne pouvait pas comprendre non plus

Vous ne réussirez jamais à vaincre le pirate d'experts -. Ils traitent votre sécurité comme un puzzle intellectuel à résoudre le défi seul

La question tourne autour de la façon dont il est difficile de vaincre vos pratiques de licences et le retour sur investissement .

Asseyez-vous avec une feuille de calcul et regarder à travers les scénarios possibles - le danger est probablement moins que vous pensez.

Des facteurs tels que la « facilité d'utilisation » sont visibles dans votre logiciel pour tout utilisateur d'observer - de sorte que vous penseriez facile à copier. Mais, une bonne expérience utilisateur est rare (et rarement copié bien), parce que la plupart des développeurs (moi y compris) ne sont rien comme les utilisateurs typiques.

Je vous suggère de vous concentrer sur faire le travail d'un pirate plus difficile, parce que vous ne pouvez jamais rendre impossible, tout simplement non rentable.

Une possibilité d'essayer: Il est possible d'effectuer une pré-compilation des ensembles en code natif comme une partie du processus d'installation. Paint.NET fait pour des raisons de performance. Je crois qu'une fois que vous avez fait cela, vous pouvez jeter les assemblages originaux et utiliser les optimisés, les éditions de code natif.

Autres conseils

Si elle était moi, je ne serais pas tenter d'obscurcir; Je voudrais:

  1. vous inquiétez pas à ce sujet et visent à améliorer sans cesse et de rester devant

Mais d'autre part

  1. Envisager de fournir les services « secrets » sur le Web. Il est à vous de décider comment ce qui est essentiel et possible; mais il ne « empêcher » décompilation, parce que l'utilisateur final n'a même pas le code.

Google pour .NET Obfuscator. Vous trouverez beaucoup de produits qui vous aideront dans ce domaine. Il y a aussi des questions connexes déjà posées dans Stack Overflow.

Voici quelques-unes:

EDIT : Bien que la recherche d'outils De-Dissimuler, je suis tombé sur un outil open source

La dernière fois que je regardais dans ce, Spices.Net Obfuscator ressemblait la meilleure chose sur le marché.

Non, je ne travaille pas pour eux. :)

J'utilise smartassembly . Il est simple à utiliser et a également la possibilité d'envoyer des rapports d'erreur trop vous ENCASTRÈ.

Les autres ont de Obfuscators mentionnés sont probablement très bien.

Une autre approche que vous pourriez ne pas avoir considéré est de coder une partie de la logique métier de base en utilisant un langage qui est entièrement compilé en code machine, tels que C ++.

L'avantage de faire est qu'il fait pour quelqu'un de décompiler votre code beaucoup plus difficile. Un inconvénient est que vous avez le code en deux langues pour maintenir. Cela pourrait ne pas être la meilleure approche pour votre situation, mais elle est utile dans les cas où seule une petite partie du code doit être obscurcie tandis que le reste du code est fluff de l'interface utilisateur.

À titre d'exemple, votre logiciel médical peut être effectuer la détection de bord par exemple, certaines glandes dans le but de dire à un médecin de la taille de ladite glande. L'algorithme de calcul de la taille de la glande à partir d'une image en mode point serait contenue dans une DLL écrit en C ++.

pour répondre à votre question sur l'emballage C ++ autour du code .net; Je ne pense pas que cela fonctionnerait, parce que lorsque vous déployez l'application c finale ++ dll et dll .net contenant le code de logique métier seront des entités distinctes et ceux qui veulent se rendre à votre logique métier serait encore en mesure de choisir juste la dll .net et coup d'oeil à l'intérieur.

vous pouvez envisager Remotesoft Salamandre Protecteur ce qui est beaucoup mieux que toute autre chose en ce sens qu'il ne permet pas de décompiler le langage de haut niveau.

Bien sûr, personne qui est un expert peut passer assez de temps avec votre logiciel et le comprendre parce qu'il ne décompiler certains, mais il cache tout l'ensemble et obtenir des méthodes

Ainsi, ils peuvent obtenir un pic, mais qui est à ce sujet. ils doivent comprendre le reste qui abaisse la probabilité de tout le monde vient le casser.

espérons que cette aide

L'écriture sur ce fil après une longue période. Nous avons acheté un logiciel appelé IntelliLock qui est utile dans la prévention décompilation, obscurcissement et a également une forte module de licence.

Nous ne sommes pas allés pour .Net réacteur même si elle a plus de contrôles de prévention comme IntelliLock a été au service de notre but assez bien.

Obfuscator embrouille le code, mais protecteur protège. Vous pouvez utiliser protecteur .Net: NetWinProtector

IntelliLock a servi notre but bien en termes de faux-fuyants, ainsi que les licences. Mais je ne recommanderais pas le produit que le support est pas à la hauteur. On n'a jamais eu de réponses à temps pour le problème que nous avons été confrontés. Nous avons dû chercher et à la recherche sur notre propre ou même changer l'exigence d'affaires pour atteindre certains objectifs.

Par cette réponse, je ne suis pas ENTENDANT promouvoir ou rétrograder un logiciel, mais je veux juste sensibiliser les gens sur le produit que nous utilisons afin qu'ils puissent prendre une décision sage.

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