web-dev-qa-db-fra.com

Comment masquer mon code c # pour qu'il ne puisse pas être désobfusqué si facilement?

Je publie un tas d'outils gratuitement, mais récemment, j'ai commencé à vendre une application, qui a des recherches privées, et les gens ont pu obtenir mon code source, et une personne a rendu public toute ma source. J'ai passé beaucoup de temps sur ce programme, juste pour que quelqu'un le cracke et libère toute ma source.

Comment puis-je protéger mon programme? J'ai essayé HWID, mais les gens sont toujours capables de le casser. Je sais que je suis limité par C #, mais c'est le plus pratique à utiliser. J'ai juste besoin d'un moyen de protéger mes programmes contre les gens qui essaient de le faire.

32
Ben

Vous pouvez jeter un œil aux nombreux outils d'obscurcissement qui existent, par exemple ceux mentionnés dans https://stackoverflow.com/questions/805549/free-obfuscation-tools-for-net ( note: question actuellement indisponible).

EDIT: la question liée ci-dessus a été supprimée et n'est donc pas disponible pour la visualisation. À titre de référence, voici la liste des liens actuellement actifs publiés dans la question ci-dessus, extraite avec l'aide d'un utilisateur expérimenté:

http://gapotchenko.com/eazfuscator.net
http://orangeheap.blogspot.nl
http://confuser.codeplex.com (remplacé par https://yck1509.github.io/ConfuserEx/ ) http: //ntoolbox.com

Eh bien, le problème avec les langages comme C #/Java est qu'ils sont généralement beaucoup plus faciles à désobscurcir. La façon de sécuriser cela est généralement de mettre ces éléments dans un service Web, mais vous avez dit que vous ne pouviez pas vraiment faire cela. Qu'en est-il du portage de fonctions spécifiques non triviales sur un langage comme C, et obscurcissez cela. Votre programme C # pourrait alors utiliser la réflexion pour effectuer des appels vers cette DLL externe/non gérée. Cela augmenterait la difficulté de désobscurcir, mais le problème est que si quelqu'un le veut assez, il peut le comprendre car il est côté client.

Il se peut que l'action en justice soit la seule vraie solution ici, mais ce n'est pas un site pour des conseils juridiques, et je ne suis pas qualifié pour le donner s'il l'était.

De plus, cela pourrait être une décision commerciale. Pensez à rendre votre logiciel open source et à publier un lien de don. Je ne suis pas non plus qualifié pour donner des conseils commerciaux, mais cela vaut la peine d'être considéré. Cela peut en fait augmenter vos revenus, sans parler des autres avantages liés à la publication de logiciels open source.

7
Gray

Il y a Dotfuscator ( http://www.preemptive.com/products/dotfuscator/overview ). Mais la meilleure solution dans certains cas est d'offrir ce que vous faites en tant que site Web (Software as a Service).

Considérez cet outil par exemple pour convertir VB en C #: http://converter.telerik.com/

Ou cet outil pour formater JSON: http://jsonformatter.curiousconcept.com/

Cela peut ou peut ne pas fonctionner pour vous. Je ne sais pas quelle est la nature du logiciel que vous essayez de protéger.

3
Trevor Elliott

Non, votre code doit contenir les informations nécessaires pour se décrypter, c'est un problème impossible à résoudre.

Votre meilleure solution consiste à placer votre propriété intellectuelle sur un serveur dans le cloud auquel vous seul avez accès. Donnez à vos clients une connexion unique, auditez leur accès pour vérifier les abus, déchargez autant de travail de grognement sur les machines de vos clients, mais gardez vos algorithmes verrouillés dans le cloud.

2
carpenterjc