Comment les protéger .Net exe à partir de la Décompilation/Fissuration
Je suis vraiment triste, parce que il y a quelques jours, nous avons lancé notre logiciel développé dans .Net 4.0 (application de Bureau). Après 3 jours, sa fissure a été disponible sur internet. Nous avons essayé de protéger le logiciel à partir de ce mais de toute façon les gens ont obtenu loin de la purge.
Voici le scénario:
Au lancement de l'application la première fois, il communique avec le serveur web et vérifie les informations d'identification transmises par l'utilisateur. Si les informations sont correctes, le logiciel enregistre les valeurs dans le Registre, envoie l'id machine vers le serveur et les stocke dans la base de données.
Maintenant, le hacker a remplacé le Serveur de communication avec un "return true;" énoncé (j'ai vérifié que avec Telrik JustDecompile). et qu'il a téléchargé les logiciels craqués sur internet.
Maintenant, voici mes questions:
1 - Comment faire en sorte que .Net application ne sera pas brisée ?
2 - Le pirate sait maintenant mon code depuis qu'il a fait de la modification. Quelles mesures dois-je prendre ?
3 - j'ai lu sur internet à propos de - obfuscators . Mais le pirate sait que mon code que dois-je faire ?
4 - Toute autre pro conseils que je peux utiliser pour éviter de contracter le logiciel fissuré ?
5 - je ne suis pas sûr, mais peut ces réflecteur logiciels aussi décompiler l'Application.Config avec des données sensibles ?
- Faire appel à un avocat....
- Le fait que vous êtes à l'aide de C# n'aide pas non plus, de toute façon vous ne pouvez pas en faire trop sur ce sujet, simplement travailler sur la logique métier et l'algorithme et de les améliorer.
- Il est bon côté à tout cela. Apparemment, votre demande vaut la fissuration, vous devez considérer qu'un compliment.
- Eh bien, nous avons passé beaucoup de temps dans la réalisation de ce et marché cible a été aussi grand. L'homme, je n'ai jamais vu cette recompilation de chose à venir :@
- Est-ce vraiment une mauvaise chose? Vous avez maintenant une base de clientèle qui connaît votre application, et veut-il si mauvais qu'ils sont à la recherche à d'autres sources, la distribution officielle pour l'obtenir. Une fois qu'ils commencent à travailler pour une entreprise (ou démarrer leur propre), et ont besoin de votre fonctionnalité, que pensez-vous qu'ils vont faire? Aller pour quelque chose qu'ils ont connu, ou aller avec une autre application? Ne pouvez-vous pas envisager la version crackée comme un outil pédagogique pour les futurs clients? Avez-vous vu une entreprise sérieuse à l'aide de logiciels piratés intentionnellement? Ont causé cette perte de chiffre d'affaires?
- Une chose à méditer: les gens utilisent illégalement, ont - elles été jamais t payer pour cela? Sont en fait ces "pertes de ventes"? J'avais parier que, dans de nombreux cas: aucun. Qui n'en est pas moins gênant, bien sûr.
- Mon 2c - créer votre propre "crack" et de les télécharger sur le net. Mettre de suivi, donc au moins vous pouvez comprendre comment beaucoup vous êtes de 'perdre'.
- La prochaine version de Camoufler il. Il fait 20 fois plus difficile à craquer.
Vous devez vous connecter pour publier un commentaire.
Si un ordinateur peut exécuter votre code + Le hacker peut exécuter son propre code à un plus haut niveau de privilège que vous, il n'y a rien de 100% prévenir votre application d'être fissuré. Même si ils ont juste accès à l'exécutable, mais pas la plate-forme cible, ils peuvent toujours passer et imiter ce que la plate-forme cible serait de faire et de comprendre la façon dont la protection est fait.
Totalement réécrire la portion d'authentification de sorte qu'ils ont commencer à partir de zéro, mais ils le seront de nouveau, c'est juste une question de combien de temps.
La jinni est sorti de la bouteille maintenant qu'ils ont le non-obfuscation de code. Il n'y a pas beaucoup que vous pouvez faire, sauf si vous considérablement ré-écrire le logiciel de sorte qu'ils ont commencer à partir de zéro. Un obfuscateor ne va pas empêcher une personne déterminée, ils seule chose qui peut empêcher cela est de garder le binaire de sortir de leurs mains.
La seule protection contre la copie que j'ai vu, à distance, de retard ou pour toute période de temps est ce que Ubisoft a fait avec Assassin's Creed: Brotherhood. Ils chiffré ther niveaux avec le jeu de disque et il avait pour télécharger la clé de déchiffrement à partir de l'internet tel qu'il a été nécessaire (C'est le maintien de la binaire de sortir de leurs mains approche). Mais cela ne fonctionne pas toujours, finalement, les pirates ont fait obtenir ces niveaux décrypté et il a complètement craqué. Cette approche est tout ce que j'ai vu prendre le plus de temps à se déplacer sans légale de participation (Voir le point 2 en bas)
Tous le réflecteur, le logiciel a besoin de faire est de regarder pour la section de chargement de l'Application.config et de lire ce que les valeurs par défaut. Il est pas endroit sûr pour stocker des informations sur un ordinateur que vous n'avez pas le plein contrôle sur. Si il est sur l'ordinateur, il peut être lu. S'il peut être lu, il peut être à l'ingénierie inverse.
La seule solution que je peux voir pour empêcher le piratage est l'une des deux options.
La personne n'est jamais de votre application, il est diffusé à partir d'un serveur sous votre contrôle et ils n'ont jamais la chance de voir le binaire. La seule chose que vous envoyer les informations dont ils ont besoin pour piloter l'INTERFACE utilisateur. C'est l'approche que tous les MMO du travail sur. Les gens peuvent désosser ce que vous envoyez à l'INTERFACE utilisateur et imiter la logique de ce qui se passe sur vos serveurs, mais ils ne seront jamais en mesure d'emblée à voir ce qu'il fait et si votre logiciel est assez complexe, il peut ne pas être feeseable pour l'attaquant de recréer le code côté serveur. L'inconvénient de cette approche est que vous aurez besoin d'héberger des serveurs pour vos utilisateurs de se connecter, ce sera un récurrentes coût, vous aurez besoin d'un moyen de re-coup d'état. Souvent, cette méthode est appelée un "Client Riche" ou "Thin Client" en fonction de combien le traitement est fait côté client et combien le traitement est fait côté serveur. Voir Chapitre 22 de "De Microsoft de l'Architecture de l'Application Guide, 2e Édition". Plus précisément je suis en décrivant ce qui est montré dans figure 4 et 5
Le seccond option est celui qui vous vendez votre logiciel en ont, eux aussi signer un contrat juridique de ne pas distribuer le logiciel (pas un CONTRAT, un contrat réel qui doivent être signés par le client). Dans ce contrat ont de lourdes amendes être appliquées à la personne qui les fuites le logiciel, puis l'énigme de votre programme avec les empreintes digitales qui sont uniques à la personne qui achète le logiciel de sorte que lorsque le programme est une fuite, vous pouvez voir qui a fait ça. (C'est la méthode le vendeur Hex-Rays utiliser pour leur désassembleur IDA. Une rapide recherche sur google pourrait pas tout fissuré versions plus récente que la 6.1, ils sont sur 6.3). Cette méthode ne sera pas arrêter le piratage, mais il peut décourager la copie de fuite en premier lieu. Cela vous permet aussi de récupérer certains ont perdu des coûts associés au programme faisant l'objet de fuites dans la première place. Un problème est que vous aurez besoin de mettre beaucoup de traces de doigts et ils auront besoin d'être subtile, si un attaquant peut obtenir deux copies du programme et permet de comparer les fichiers entre les deux, il sera en mesure de dire ce qui est l'identifiant de l'information et de la mettre juste ce qu'ils veulent, alors ils ne peuvent pas dire qui ils l'ont obtenu. La seule façon de le faire est de mettre beaucoup de rouge-harengs dans ne peut pas être simplement supprimés ou randomisée, en font également le code d'identification de la non-essentiels à l'exécution du logiciel, si ils n'ont pas à travailler à craquer, ils sont plus susceptibles de le laisser dans.
Mise à jour: Après un réexamen de cette réponse de la lier à une autre question j'ai pensé à un moyen facile de mise en œuvre de la #2 de la solution.
Tout ce que vous devez faire est d'exécuter votre code par l'intermédiaire d'un obfuscateor et laisser renommer vos classes pour chaque personne que vous vendez votre logiciel (je voudrais encore faire signer un contrat de licence, et pas seulement sur un CLUF de sorte que vous pouvez appliquer à la partie suivante). Vous effectuez ensuite une base de données de l'obscurcissement de la cartographie, quand vous voyez un exemplaire divulgué sur internet, vous avez juste besoin de trouver une classe n'importe où dans le projet, rechercher dans votre base de données, et vous saurez qui fuit et de savoir qui vous devez aller après pour les dommages légaux.
1: vous ne pouvez pas. Vous pouvez dissimuler, mais la seule façon de la prévention c'est: ne pas donner à quiconque le fichier exe. Regardez combien les entreprises de jeux passé; ils n'ont pas résolu non plus.
2: de la dissimulation de l'aiderait un peu, même si c'est une course aux armements entre obfuscators et de obfuscators
3: trop tard pour revenir en arrière et annuler, mais la dissimulation va ralentir un peu dans l'avenir
5: app.la config est généralement très lisible; vous pas beaucoup que vous pouvez faire ici; le chiffrement ne les ralentir un peu si les clés sont dans votre application et, par conséquent, à obtenir
Comme d'autres l'ont dit il n'y a vraiment rien que vous pouvez faire à l'encontre d'un déterminé pirate si ils ont accès à votre code. L'Obfuscation offrent une certaine protection contre un paresseux cracker. Dotfuscator est construit en VS vous pouvez lui donner un essai. Gardez à l'esprit qu'il y a un coût réel pour l'obscurcissement. Il sera très difficile de déboguer les problèmes de traces de pile que votre (payant) les clients de vous envoyer.
La meilleure réponse est celle que vous aurez à accepter. Vous ne pouvez pas. Suffit de se concentrer sur le fait de donner à vos utilisateurs une excellente expérience utilisateur, et de faire de licences très facile. La possibilité que votre application peut être fissuré ne signifie pas que le choix de construire une application de bureau était une mauvaise idée. Les Pirates seront les pirates et les clients honnêtes seront les clients honnêtes.
Apparemment, il est assez commerciale ou intellectuelle de la valeur de craquage de votre application que quelqu'un avec suffisamment de compétences essayé presque tout de suite.
La seulement façon vous gagnez que la guerre est d'utiliser un logiciel commercial forfaits de protection.
Si vous essayez de mettre en œuvre la protection contre la copie, vous serez une cible facile pour pirater nouveau.
Si vous écrivez une application d'entreprise, vous ne serait pas aussi écrire le moteur de base de données qui stocke les données. Vous devez également ne pas écrire la prévention des fissures dans le code de votre application. Ce n'est pas ce qui résout vos problème du client, et il faut un énorme ensemble de compétences pour le faire.
The only way you will win that war is to use commercial software protection packages.
il pourrait vous donner un peu de bord pendant un certain temps, mais vous êtes toujours dans une bataille perdue d'avance, même si vous utilisez des forfaits de protection.Ce que vous pouvez faire, en plus du code de la dissimulation de l'est, l'ajout d'un mécanisme de code de déchiffrement basé sur hardwareID, ayez à l'esprit le scénario suivant, l'envoyer leurs HwID à votre serveur, vous identifiez les copier/du propriétaire/de l'installation nombre de/etc avec qui HwID, et de vous répondre avec une description de la clé dans le HwID pour le binaire (avec les empreintes digitales mentionné précédemment), de sorte que le piratage serait plus difficile, puisque, pour pleinement des fonctionnalités dont ils ont besoin valide l'accès à votre serveur, sinon ils ne peuvent pas utiliser le logiciel.
Acclamations,