Protéger .NET code de l'ingénierie inverse?
De la dissimulation de l'est, mais elle ne peut pas protéger de casser la protection contre le piratage de sécurité de l'application. Comment faire en sorte que l'application n'est pas altéré, et comment faire en sorte que le mécanisme d'enregistrement ne peut pas être à l'ingénierie inverse?
Il est également possible de convertir une application C# en code natif, et Xenocode est trop coûteux.
C# fournit beaucoup de fonctionnalités, et est l'idéal de la langue pour mon code, donc de l'écriture de l'ensemble de la base de code de nouveau en C++ est hors de question.
Certificats de sécurité peuvent être facilement retirés de l'signé assemblées .NET.
blogs.msdn.com/b/dotnet/archive/2014/04/02/... les Choses changent!
C'est génial!! Je vais donner un essai. Quiconque de les utiliser?
c'est pour fenêtre store seulement. Il n'y a pas de calendrier pour les applications de bureau(autant que je puisse en dire).
Si vous voulez natif sans archaïque C++, l'utilisation de Delphi. La facilité d' .Net est venu de Delphes, de toute façon.
C'est génial!! Je vais donner un essai. Quiconque de les utiliser?
c'est pour fenêtre store seulement. Il n'y a pas de calendrier pour les applications de bureau(autant que je puisse en dire).
Si vous voulez natif sans archaïque C++, l'utilisation de Delphi. La facilité d' .Net est venu de Delphes, de toute façon.
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas.
Il y a des mesures que vous pouvez prendre pour faire un peu plus difficile, mais en fin de compte tout fichier exécutable sur la machine locale est crackable. Finalement, ce code doit être converti en code machine natif et que chaque application est exécutable est vulnérable.
Ce que vous voulez faire est de simplement faire assez difficile à craquer de faire qu'il ne vaut pas des peuples de la difficulté.
Quelques suggestions que j'ai pour vous pour aider à protéger votre demande:
Mais à la fin, si les gens veulent votre demande fissuré ils seront. Regardez tous les logiciels commerciaux qui dispose d'une grande quantité de ressources nécessaires pour protéger leurs applications et pourtant, ils sont fissurés avant que les demandes sont encore rendu public.
Une main-d'désosser peut tirer jusqu'à IDA-Pro et trancher par le biais de votre application comme dans du beurre, peu importe ce que vous faites. Une application riche peut être décompressé et de l'obscurcissement n'empêche de faire une promenade dans le parc. Tout votre travail dur avec la complexité de votre code de licence peut être annulée avec un seul octet patch.
Vous avez juste besoin d'accepter qu'il y a une chance très réelle que les gens vont pirate de votre logiciel. Il y a des gens qui sont jamais va payer pour votre application n'importe quoi, et ce sont ces gens que vous n'avez pas besoin de s'inquiéter.
Il y a cependant, de nombreuses entreprises là-bas qui ne serait jamais le risque d'un procès et heureux de leur acheter des licences de logiciels et de nombreux utilisateurs de l'ordinateur qui ne veulent pas prendre le risque, de le trouver mauvais ou ne sont pas technophiles assez de pirate. Ce sont vos vrais clients, et vous devez concentrer vos efforts sur la fourniture d'eux avec une bonne expérience de l'utilisateur et d'ignorer les gens de craquage de votre logiciel.
J'ai eu ma demande piratés avant, et je l'ai pris comme un affront personnel. J'étais là, un petit temps de développeur, en versant mon cœur et mon âme dans une application et que ces gens avaient l'impudence de pirate de moi?! Ils prenaient de l'argent directement de ma poche!
J'ai immédiatement ajouté dans un tas de draconiennes DRM code et a tenté de saboter toute personne utilisant un illégitimes ou fissuré copie. Je dois bien sûr avons travaillé à rendre mon application mieux, au lieu d'essayer d'arrêter l'inévitable. Non seulement cela, mais j'avais mal mon vrai clients tous ces protections supplémentaires, j'ai été mise en.
Après une longue bataille, j'ai réalisé que je lutte contre les marées et tout ce temps a été gaspillé pour rien. J'ai pris tous les téléphone-domicile code, sauf pour les barebones licence de fonctions et n'a jamais regardé en arrière.
Vous avez atteint la protection des logiciels nirvana: il n'est pas sur l'ajout de plus de protection, il faut se concentrer sur le produit et il est donc bon que les gens VEULENT payer pour cela. Et pour ceux qui pirate, ils n'ont jamais payé de toute façon donc c'est comme si elles n'avaient jamais existé.
Chaparyan, je suis d'accord. Il a fallu du temps pour en arriver là, mais j'ai enfin vu la lumière. Je suis allé en bas de la route de plus restrictive protections et en luttant contre les crackers. J'ai appris tout ce que je pouvais sur l'ingénierie inverse dans une tentative pour empêcher mon propre. J'ai enfin trouvé le bon idéologie
L'enfer j'aurais été honoré de trouver quelqu'un a pensé que mon logiciel valait le piratage...
Lorsque vous démarrez en s'appuyant sur les ventes de votre logiciel pour une grande partie de votre revenu qu'il change les choses. Il se sent comme quelqu'un est en train de voler de vous. Je reçois ce que vous dites. J'ai été choqué quand j'ai d'abord trouvé les fissures de mon logiciel sur les sites de torrent.
OriginalL'auteur
Vous ne pouvez pas entièrement sécuriser n'importe quelle application (réussi ou non). Si les systèmes comme la Playstation et l'iPad peuvent obtenir fissuré où le vendeur, même contrôle le matériel — quel espoir de votre application? Heureusement, vous n'avez pas vraiment envie. À mon avis, vous avez besoin pour sécuriser votre application juste assez pour que quelqu'un ne peut pas accidentellement pirate votre produit, et rien de plus.
Par exemple, si vous utilisez une licence par ordinateur, il ne devrait pas seulement lorsque vous l'installez sur une nouvelle machine. Vous aurez besoin d'un bon message d'erreur pour éviter un soutien supplémentaire des appels, mais ne pas passer plus de temps à en faire trop difficiles à contourner et de ne pas frapper les utilisateurs sur la tête.
Un autre exemple est un essai limitée dans le temps. Ne vous inquiétez pas à propos des choses simples, comme si les utilisateurs peuvent simplement faire reculer l'horloge du système. Quelqu'un qui ne sait qu'ils sont la rupture de votre licence, et tant que l'utilisateur sait quand ils sont en infraction que vous avez fait assez.
Vous avez besoin de faire beaucoup plus, parce que les utilisateurs ne se soucient pas de votre licence. Les licences sont des choses qui personne ne se soucie jusqu'à ce qu'ils en ont besoin. Personne ne les lit, et ils ont vraiment ne devriez pas avoir à. Par conséquent, la meilleure façon d'indiquer à l'utilisateur où sont les limites, c'est si le dehors-de-le-boîte de comportement pour votre demande est conforme à la licence. Dans le premier cas, cela signifie que l'échec de l'installation ou de l'installer en version d'essai mode la deuxième fois. Pour ce dernier, il peut signifier la vérification d'un texte brut de la date dans un fichier de configuration. De toute façon, assurez-vous de le gérer dans un cadre élégant, utile, et de manière respectueuse.
Cela explique ce que signifie faire beaucoup. Mais pourquoi ne pas aller plus loin? Pourquoi ne pas brancher chaque petit trou vous pouvez les trouver? La réponse est en deux parties. Tout d'abord, si quelqu'un va traverser l'éthique seuil de consciemment casser les termes de votre licence — même d'une manière simple — ils vont aussi être prêt à faire quelque chose de plus difficile ou dangereux, comme pull votre application à partir d'un torrent site — et il ya une certaine quantité de danger impliqué dans l'exécution des applications téléchargées à partir de sources non fiables. Rendant plus difficile n'est qu'un problème mineur pour ces utilisateurs et les risques de causer des problèmes avec vos clients payants. Garder les choses simples peuvent empêcher quelqu'un de creuser dans votre application et la libération d'un plus complet crack. Deuxièmement, vous avez quelques yeux disponibles à chercher des failles; les pirates ont de nombreux, et ils ont plus pratique de les trouver. Vous ne devez manquer un peu de paille, et votre application sera la même distribution sur pirate des sites comme si vous n'avez rien fait. Vous devez être droit à chaque fois; ils n'ont qu'à avoir de la chance une fois. Donc, l'effort requis est très élevé, et la probabilité d'une mesure de la réussite est très faible.
En fin de compte, si quelqu'un veut pirate votre application (par opposition à l'utiliser), et c'est leur principal objectif. Il n'y a rien que vous pouvez faire pour les arrêter. C'est la nature de logiciels; une fois que les fichiers qui composent votre produit sont sur l'ordinateur de l'utilisateur, ils sera être en mesure de faire avec eux comme ils le souhaitent. Cela est particulièrement pertinent dans des environnements gérés comme le Java ou le .NET, mais il s'applique certainement à du code natif. Le temps est de leur côté, et suffisamment de temps toute sécurité numérique peut être rompu.
Puisque vous ne pouvez pas empêcher les utilisateurs de piratage de votre produit, votre meilleur plan d'action est d'engager cette classe d'utilisateur de manière à le utilise-les à votre avantage. Il est souvent possible de les mettre à travailler pour vous plutôt que contre vous. Avec cela à l'esprit, quelle que soit votre application, c'est probablement la peine de garder une version gratuite qui est presque entièrement fonctionnel et n'a pas de date d'expiration. La différence entre même un de 1$US du prix tag et gratuit est énorme, si pour aucune autre raison que le fait que le client n'a pas à vous faire confiance avec leur carte de crédit. Une édition gratuite de votre produit ne sera pas seulement efficace de tuer les pirates de distribution (pourquoi prendre le risque d'une version pirate, quand vous pouvez être légitime pour le même prix?), il a le potentiel pour élargir votre public.
Le résultat est que vous pouvez avoir à augmenter le prix de la pour-payer édition, de sorte qu'à la fin, au lieu de 2 000 utilisateurs à 20 $chacune, vous avez 100 000 les utilisateurs de free, dont 500 sont prêts à payer 99 $pour les "professionnels" de l'édition. Cela vous rapporte plus d'argent que si vous avez passé beaucoup de temps de blocage de votre produit. De plus, vous pouvez les faire participer les utilisateurs de free et de tirer parti de la relation de plusieurs façons importantes.
L'un est le soutien. Un pessimiste aimerais profiter de cette occasion pour se plaindre de l'augmentation du coût de prise en charge à 100 000 les utilisateurs de free, mais quelque chose de merveilleux se produit, au lieu de: votre produit est en grande partie auto à l'appui. Vous voyez tout le temps avec de grands projets open source qui n'ont pas d'argent pour les frais de soutien. Les utilisateurs intensifier et de faire que cela se produise.
Gratuit les utilisateurs ont généralement une diminution du soutien attentes pour commencer, et pour une bonne raison. Tout ce que vous devez faire est de marque la version gratuite que seule la qualification pour le soutien de la communauté et de mettre en place un utilisateur modéré un forum en ligne à cette fin. Votre soutien de la base de connaissances est une auto-production, et les utilisateurs avancés berger ceux qui ont besoin d'une main-tenant en votre nom. Plus important encore, il va vous permettre d'identifier et de corriger les bugs plus rapidement, en définitive, d'améliorer la qualité de votre produit et abaisser le total des coûts de support. Ce n'était pas possible avant parce que votre utilisateur de base n'était pas assez grand, mais quand vous traiter la gratuit utilisateurs comme clients il peut très bien fonctionner.
Une autre est de la rétroaction. En regardant votre forum, vous apprenez important des idées d'amélioration que vous avez peut-être jamais considérée autrement. Cela peut vous permettre de finalement faire plus de vos utilisateurs en a payé les utilisateurs et de créer un plus convaincante produit qui va attirer encore plus de public.
Enfin, vous devez tenir compte marketing. Tous ces utilisateurs sont maintenant les fans plutôt que des adversaires, et ils agiront en conséquence. Non seulement cela, mais lorsque vient le temps de libérer votre prochaine version de ces utilisateurs ont tous passé par votre approuvé canal de distribution, plutôt qu'à tout autre mécanisme inconnu. Que signifie pour votre prochaine version de commencer connecté avec une grande taille, très intéressés et de soutien public.
Les meilleures caractéristiques de réserve pour les professionnels de l'édition sont des outils visant à il est facile de faire de l'entreprise de déploiement et de gestion. Un pirate ne verrez pas ces comme une impérieuse raison suffisante de le pirater pour son propre usage, mais pour une entreprise qui cherchent à acheter des 300 licences et de pousser l'échelle de l'entreprise, c'est un must-have. Bien sûr, l'édition professionnelle seront piratés de toute façon, mais encore une fois: ne vous en faites pas parce que vous n'auriez probablement pas être en mesure de vendre le produit de ces pirates, peu importe ce que vous avez fait, de sorte qu'il ne vous coûte pas tout revenus.
Tandis que psychologiquement, il peut être difficile à donner votre produit beaucoup, j'espère que vous pouvez comprendre comment il est vraiment la meilleure façon d'aller. Pas seulement cela, c'est la seule façon d'aller dans le long terme. Je connais quelqu'un qui est là à penser qu'ils ne veulent pas faire de cette façon. Après tout, ils l'ont obtenu par l'amende juste la vente de leurs verrouillé vers le bas de 20 $produit pendant des années. Mais c'est dommage, parce que si vous ne faites pas de cette façon, finalement quelqu'un d'autre le fera. Et leur produit sera juste aussi bon que le vôtre, ou assez près qu'elles le peuvent affirmant que. Puis tout d'un coup votre prix semble scandaleux, les ventes chuter de façon spectaculaire, et il n'y a rien que vous pouvez faire. Vous pouvez opter pour un moyen supplémentaire de niveau, si vous devez, mais il est peu probable pour vous aider.
ça a augmenté au fil du temps passé et de l'automatique, de convertir à la CW seuil.
+1 Mieux que la réponse que j'ai donné à la version précédente de cette question. @Joel savais pas qu'il y a une limite.
Bon argument, mais manque un point sur la protection de la propriété intellectuelle. Si votre application a un code qui fait quelque chose qui est un peu complexe, un obscurcissement peut fournir la différence entre plat de copier et de coller le code, et en essayant de les interpréter et de les remanier le code de sorte qu'il fonctionne. Ceci est particulièrement important avec les mises à jour: si quelqu'un a copié votre code masqué, lorsque vous relâchez une mise à jour, ils n'ont pas encore - et à tout le moins, il provoque plus de douleur/charge/temps. Si vous ne l'avez pas protégé d'une certaine façon, ils ont juste copier/coller de nouveau et ça fonctionne.
Après la grande - vraiment, il va dans tous le droit de détails sur les raisons pour lesquelles il n'est pas de se donner la peine d'écrire complexe de protection contre la copie. Même si la question est un doublon, il vaut la peine de rouvrir juste pour cette réponse. Peut-être un mod peut fusionner?
OriginalL'auteur
Dans mon expérience, ce qui rend votre application ou de la bibliothèque plus difficile à percer, fait mal aux honnêtes clients tout en ne retardant légèrement le malhonnête. Se concentrer sur l'élaboration d'un grand, faible coefficient de frottement produit au lieu de mettre beaucoup d'efforts à retarder l'inévitable.
OriginalL'auteur
Un secret que vous partager avec beaucoup de gens n'est pas un secret. Si vous avez le secret des choses dans votre code, abrutissant c'est pas de la protection; il n'a qu'à être deobfuscated une fois. Si vous avez un secret que vous ne voulez pas partager avec vos clients, puis ne pas le partager avec vos clients. Écrire votre code en tant que service web et de garder votre super code secret sur votre propre serveur, où que vous pouvez voir.
Idée intéressante, butWhat cours de l'action recommanderiez-vous à quelqu'un développement d'une application qui doit fonctionner sans une connexion de données, tel qu'un WP7 jeu?
OriginalL'auteur
Globalement, il y a trois groupes de personnes.
Ceux qui ne seront pas acheter votre logiciel, et le recours à des fissures, ou s'ils n'en trouvez pas, pas utiliser votre logiciel. Ne vous attendez pas à faire de l'argent à partir de ce groupe. Ils s'appuient sur leurs compétences propres, ou sur des craquelins (qui ont tendance à donner la priorité à leur temps en fonction de votre utilité et la taille de votre auditoire. Le plus utile, le plus vite qu'une fissure sera disponible).
Le groupe d'utilisateurs légitimes qui vont l'acheter (payer) de votre logiciel, indépendamment de ce mécanisme de protection que vous utilisez. Ne pas rendre la vie difficile pour votre légitimes des utilisateurs à l'aide d'élaborer un mécanisme de protection, car ils vont payer pour cela en tout cas. Un complexe mécanisme de protection peuvent facilement gâcher l'expérience utilisateur et vous ne voulez pas que cela arrive à ce groupe. Personnellement, je préfère voter contre toute solution matérielle, ce qui augmente le coût de votre logiciel.
Une minorité qui n'auront pas recours à des "non-éthique" de la fissuration et de payer pour votre logiciel parce que ses fonctions sont protégées par un mécanisme d'octroi de licences. Vous ne voulez probablement pas à le rendre extrêmement facile pour ce groupe de contourner la protection. Cependant, tous les efforts que vous passez sur la protection de votre logiciel de paie de retour, selon la taille de ce groupe de personnes. Cela dépend entièrement du type de logiciel que vous êtes en train de construire.
Compte tenu de ce que vous avez dit, si vous pensez qu'il ya une assez grande minorité qui peut être poussé dans l'achat de votre logiciel, aller de l'avant et de mettre en œuvre une certaine forme de protection. Pensez à combien d'argent vous pouvez faire à partir de cette minorité et le temps que vous consacrez à travailler sur la protection ou le montant que vous dépensez sur un tiers de la protection de l'API ou de l'outil.
Si vous souhaitez mettre en œuvre une solution de votre propre, en utilisant la cryptographie à clé publique est une bonne façon (par opposition à des algorithmes symétriques) pour empêcher facile hacks. Vous pourriez par exemple signer numériquement votre licence (numéro de série, ou fichier de licence). Le seul moyen de contourner ce problème serait alors de décompiler, modifier et recompiler le code (que vous pourrait rendre plus difficile en utilisant des techniques telles que celles proposées dans Simucal de réponse).
D'accord, mais comme je le disais, la protection n'est pas pour ces groupes d'utilisateurs qui pourront recourir à l'aide de fissures (une hypothèse que j'ai fait existera).
la cryptographie à clé publique = cryptographie asymétrique. Je pense que vous vouliez dire symétrique.
Pas cool, merci pour le tuyau, je vais modifier ça 🙂
Pour être juste, le troisième point est biaisée puisqu'elle suppose que la portion de gens est toujours une minorité. Je suis assez sûr que, en vertu de certains cadres, c'est une majorité claire. J'ai des jeux en ligne avec massivement multijoueur caractéristiques à l'esprit a) parce que la plupart des utilisateurs sont des enfants avec de très faibles normes éthiques b) le coût peut être important pour les utilisateurs si c'est une redevance mensuelle qui traîne depuis des mois, etc.
OriginalL'auteur
Vous ne pouvez pas empêcher les gens de se fendre votre logiciel.
Cependant, vous pouvez faire créer des fissures qui va nuire à votre chiffre d'affaires moins. Keygenerators qui peut délivrer un code d'enregistrement valide pour votre logiciel sont bien pire que de simples correctifs supprimer les incitations à l'enregistrement de votre logiciel. C'est à cause d'une fissure de travail pour une version de logiciel seulement, et cesseront de travailler avec la prochaine mise à jour du logiciel vous version. Le keygenerator continuera à travailler jusqu'à ce que vous modifiez votre clé d'enregistrement de l'algorithme et c'est quelque chose que vous ne voulez pas le faire souvent car il sera mis hors de votre clients honnêtes.
Donc, si vous êtes à la recherche d'une méthode de lutte illégale keygenerators pour votre logiciel et vous ne voulez pas utiliser le chiffrement assymétrique en raison de la longue codes d'enregistrement de ce produit, vous pourriez avoir un coup d'oeil à Partielles Vérification de la Clé.
Partielle de la Clé de Vérification permet de s'assurer que chaque illégale keygenerator ne fonctionne que pour un particulier de la version de votre logiciel. Fondamentalement, ce que vous faire est de vous assurer que chaque version de votre logiciel des liens uniquement avec le code de vérification de CERTAINS chiffres du code d'enregistrement. Les chiffres exactement est aléatoire, alors craquelins aurait à désosser beaucoup de différentes versions de vos logiciels et de combiner tout cela en un seul keygenerator afin de dégager une keygenerator qui fonctionne pour toutes les versions de votre logiciel.
Si vous sortir de nouvelles versions de logiciel sur une base régulière, ce qui conduit à de nombreux keygenerators répartis sur tous les types de logiciels de piratage des archives, qui ne fonctionne plus. Le potentiel des logiciels pirates habituellement chercher un crack ou keygen pour la dernière version, donc ils vont probablement essayer quelques-uns de ces et d'abandonner par la suite.
J'ai utilisé la Partielle de Vérification de la Clé dans ma (C++) les plus récents jeux shareware et il a été très efficace. Avant nous avons eu beaucoup de problèmes avec keygenerators qui on ne pouvait pas lutter. Afterewards il y avait beaucoup de fissures et de quelques keygenerators qui ne travaillaient que pour cette version du jeu, mais pas de générateur de clé qui fonctionne avec toutes les versions. Nous avons régulièrement publié de très petites mises à jour du jeu et de rendre toutes les déjà les fissures existantes inutile.
Il semble y avoir une source ouverte .NET framework pour une partie de la Vérification de la Clé, bien que je ne l'ai pas essayé.
Idée intéressante, mais quel est exactement le problème avec un long code d'enregistrement, de toute façon? Aujourd'hui personne ne l'entrer à la main de toute façon tout le monde serait de copier-coller, donc si c'est 10 caractères ou de 100 caractères ne devrait pas faire de différence.
C'est vrai que si vos utilisateurs sont les utilisateurs de puissance. Nous avons été la création de shareware / jeux occasionnels pendant de nombreuses années et je peux vous dire que la plupart de nos utilisateurs ne pouvez pas copier et coller. La fenêtre d'enregistrement est même livré avec un manuel sur la façon de copier et coller, et certains même n'est-ce pas après l'avoir lu.
Wow! OK, bien, de toute évidence vous avez plus d'expérience que moi, donc je ne peux pas discuter, je peux seulement dire que je suis surpris. Mais je dirais que si ils ne savent pas comment faire pour copier et coller ensuite vous doit rendre le code 200 caractères, afin qu'ils apprennent très utile générale de compétence en informatique. 🙂
Même avec la petite codes d'enregistrement, nous avons toujours eu beaucoup d'e-mails de gens qui ont tapé leurs codes et pense donc que le code ne peut pas être valide parce qu'ils jamais faire une erreur comme ça plusieurs fois dans une rangée. Je préfère laisser les IL de l'enseignement à d'autres entreprises... 🙂
OriginalL'auteur
Utiliser mise à jour en ligne de bloquer celles de copies non autorisées.
Vérifier le numéro de série à partir de différents modules de votre demande et ne pas utiliser un seul
appel de fonction pour faire la vérification (de sorte que les craquelins ne peut pas contourner la vérification facilement).
Non seulement de vérifier le numéro de série à
démarrage, procédez à la vérification de tout
l'enregistrement des données, le faire tous les vendredi
le soir, le faire lorsque l'utilisateur est inactif
...
Vérifier l'application de la vérification d'un fichier
somme, magasin de votre sécurité, de la somme de contrôle dans
différents endroits.
Ne pas aller trop loin sur ce genre de
astuces, assurez-vous que votre application
ne jamais planter/obtenir en dysfonctionnement
lors de la vérification de code d'enregistrement.
Construire une application utile pour les utilisateurs
beaucoup plus important que de faire un
incassable binaire pour les craquelins.
OriginalL'auteur
Vous pouvez..
Microsoft Services d'orthophonieInishTech du Logiciel Potentiel offre la possibilité de protéger le code sans affecter les fonctionnalités de vos applications.Mise à JOUR: (Divulgation: je travaille sur Eazfuscator.NET) Ce qui rend
Microsoft Services d'orthophonieLogiciel Potentiel différents, c'est la possibilité de virtualiser le code, alors vous avez certainement peut. Plusieurs années se sont écoulées depuis que la question a été initialement demandé; il y a aujourd'hui plus de produits disponibles qui travaillent également sur une base similaire, tels que:Je l'ai essayé, il fonctionne très bien mais il ne crypter le code à l'intérieur d'une méthode qui n'est pas l'ensemble de l'assemblée ou d'un projet, si un pirate peut facilement modifier le flux du programme avec l'IL d'injection
Si l'ajout de liens de fournisseurs, vous avez vraiment besoin de divulguer vos connexions dans le post. Aussi la version actuellement disponible de SLPS (I travail sur :D) prend en charge les génériques. Naturellement, toutes les solutions ont leurs avantages et inconvénients que seul un eval permet de bien situer pour les personnes
Je ne comprends pas ce que vous dites - le point est que vous avez besoin pour protéger toutes les méthodes où l'ajout/suppression/modification de IL représenterait une violation de licence. Parce que la virtualisation des choses ne peut pas être libre, il n'a tout simplement pas de bon sens à "comme par magie le protéger de tous", comme vous êtes en train de suggérer. Retour vers le point clé: L'objectif de la SP de la Protection est d'empêcher IL des changements sur les méthodes que vous sélectionnez sur la base qu'ils sont sensibles (plus généralement certains autres, le bruit afin d'éviter de planter un vous devez craquer ce peu ici --> signe)
Je suis d'accord avec vous. Malheureusement, ce fil est trop grand avec plusieurs pages de contenu. Au début, je voulais ajouter une nouvelle réponse, mais StackOverflow a suggéré qu'il est préférable de prolonger l'existant. Je l'ai fait. J'espère que mon petit morceau de l'information est utile. Merci pour une mise à jour sur le support générique dans les ORTHOPHONISTES et vos corrections.
OriginalL'auteur
.NET Réflecteur ne peut ouvrir que "le code managé", qui signifie en gros ".NET code". Donc vous ne pouvez pas l'utiliser pour démonter COM DLL fichiers, natif C++, classique Visual Basic 6.0 code, etc. La structure de la compilation .NET code le rend très pratique, portable détectable, vérifiables, etc. .NET Réflecteur en profite pour vous permettre de pairs dans compilé assemblages mais la décompilation et désassembleurs sont pas spécifiques .NET et ont été autour tant que les compilateurs ont été autour.
Vous pouvez utiliser obfuscators pour rendre le code plus difficile à lire, mais vous ne pouvez pas vraiment l'empêcher d'être décompilé sans le rendant illisible .NET. Il y a une poignée de produits (généralement coûteux) qui prétendent "lien" votre application du code géré en natif code de l'application, mais même si ces, une femme déterminée trouveront toujours un moyen.
Quand il s'agit de la dissimulation de l'cependant, vous obtenez ce que vous payez. Donc, si votre code est ainsi de propriété que vous devez vous rendre de grands efforts pour la protéger, vous devriez être prêt à investir de l'argent dans un bon obfuscator.
Cependant, lors de mes 15 années d'expérience dans l'écriture de code que j'ai réalisé que la sur-protection de votre code source est une perte de temps et a peu d'avantages. Juste essayer de lire le code source initial, sans documentation à l'appui, des commentaires, etc. il peut être très difficile à comprendre. Ajoutez à cela l'absurde, les noms de variables que la décompilation et le code spaghetti moderne obfuscators créez - vous probablement n'avez pas à trop se soucier de vol de votre propriété intellectuelle.
OriginalL'auteur
Est-il vraiment la peine? Chaque mécanisme de protection peut être rompu avec suffisamment de détermination. Tenir compte de votre marché, de prix du produit, la quantité de clients, etc.
Si vous voulez quelque chose de plus fiable, puis descendre le chemin de touches matérielles, mais c'est plutôt gênant (pour l'utilisateur) et plus cher. Solutions logicielles serait probablement une perte de temps et de ressources, et la seule chose qu'ils vous donnent est le faux sentiment de "sécurité".
Quelques autres idées (nul n'est parfait, comme il n'est pas parfait).
Et ne perdez pas trop de temps, parce que les pirates ont beaucoup d'expérience avec les techniques typiques et sont à quelques pas devant vous. Sauf si vous souhaitez utiliser beaucoup de ressources, probablement changer de langage de programmation (faire du Skype façon).
Oui, c'est vrai, la seule option serait d'avoir l'application partiellement mis en œuvre dans le matériel (un étrange mélange de logiciel-VHDL application par exemple). Ce serait également crackable...
Qu'en est dongles que de mettre en œuvre une clé publique/privée stratégie. Seule la clé privée de la clé peut déchiffrer l'application et l'exécuter.
C'est ce que la clé matérielle est généralement le cas. Mais vous pouvez attaquer le dongle - clone, ou le logiciel chargé de parler avec le dongle (contourner, désactiver, etc).
Dans mon cas, c'ÉTAIT vraiment de la peine. Après j'ai mis en œuvre Partielle de la Vérification de la Clé et changé la clé d'enregistrement de régime pour un produit existant, les ventes ont augmenté de manière significative. Tous les logiciels peuvent être craqué, la question est à quelle hauteur vous hausser la barre pour les occasionnels logiciel pirate.
OriginalL'auteur
Si vous voulez que les personnes en mesure d'exécuter votre code (et si vous ne le faites pas, alors pourquoi avez-vous écrit-il en premier lieu?), ensuite, le PROCESSEUR doit être capable d'exécuter votre code. Afin d'être en mesure de exécuter le code, le PROCESSEUR doit être capable de comprendre.
Depuis Processeurs sont muets, et les humains ne le sont pas, cela signifie que les humains peuvent comprendre le code.
Il n'y a qu'une façon de s'assurer que vos utilisateurs ne recevez pas votre code: ne leur donnez pas votre code.
Ceci peut être réalisé de deux façons: Logiciel en tant que service (SaaS), qui est, vous exécutez votre logiciel sur votre serveur et permettez à vos utilisateurs d'accéder à distance. C'est le modèle de Pile Overflow utilise, par exemple. Je suis assez sûr que la Pile Dépassement de ne pas obscurcir leur code, mais vous ne pouvez pas décompiler.
L'autre façon, c'est le modèle d'appareil: au lieu de donner à vos utilisateurs de votre code, vous leur donnez un ordinateur contenant le code. C'est le modèle que des consoles de jeux, la plupart des téléphones mobiles et TiVo utilisation. Notez que cela ne fonctionne que si vous "propre" sur l'ensemble du chemin d'exécution: vous avez besoin pour construire votre propre PROCESSEUR, de votre propre ordinateur, écrire votre propre système d'exploitation et votre propre CLI mise en œuvre. Ensuite, et alors seulement pouvez-vous protéger votre code. (Mais notez que même les moindre erreur rendra toutes vos protections inutiles. Microsoft, Apple, Sony, l'industrie de la musique et l'industrie du cinéma peut en témoigner.)
Ou, vous pouvez simplement ne rien faire, ce qui signifie que votre code sera automatiquement protégée par le droit d'auteur.
OriginalL'auteur
Malheureusement, vous n'allez pas courir loin de cette. Votre meilleur pari est d'écrire votre code en C et P/Invoke.
Il y a un petit catch-22, quelqu'un pourrait juste décompiler votre demande à CIL et de tuer toute vérification/code d'activation (par exemple, l'appel de votre bibliothèque C). Rappelez-vous que les applications écrites en C sont également de la rétro-ingénierie par la plus persistante des pirates (il suffit de regarder à quelle vitesse les jeux sont fissurés de ces jours). Rien ne permettra de protéger votre application.
En fin de compte, il fonctionne un peu comme votre maison, protéger assez bien alors que c'est beaucoup trop d'effort (spaghetti code de l'aide ici) et donc que l'agresseur se déplace sur votre voisin (de la concurrence 🙂 ). Regardez Windows Vista, il doit être de 10 façons différentes de se fissurer.
Il y a des paquets qui va crypter votre fichier EXE et le décrypter lorsque l'utilisateur est autorisé à l'utiliser, mais encore une fois, c'est à l'aide d'une solution générique qui a sans aucun doute été fissuré.
L'Activation et l'enregistrement des mécanismes visant à la moyenne Joe: "les gens qui n'ont pas assez calé en informatique pour le contourner (ou, d'ailleurs, savent qu'ils peuvent contourner). Ne vous embêtez pas avec des craquelins, ils ont beaucoup trop de temps sur leurs mains.
OriginalL'auteur
En dehors de l'achat de protection, vous (ou vos développeurs) peut apprendre à la protection contre la copie.
Ce sont des idées:
Au premier abord, essayer d'écrire un programme qui écrit lui-même à la console. C'est un problème connu. Le but principal de cette tâche est de la pratique de l'écriture de l'auto-référencement de code.
Deuxièmement, vous avez besoin de développer une technologie qui permettra de réécrire une partie du code d'une manière
fiable sur d'autres méthodes"CIL.
Vous pouvez écrire une machine virtuelle (encore dans .NET). Et mettre un peu de code.
En fin de compte, la machine virtuelle exécute une autre machine virtuelle qui exécute le code.
C'est bien pour une partie de rarement-fonctions pour ne pas ralentir les performances de trop.
De la logique de réécriture en C++/CLI, et mélanger le code géré non géré. Cela va durcir le démontage. Dans ce cas, ne pas oublier de fournir x64 binaires trop.
OriginalL'auteur
Oui. Il est vrai. .NET code est extrêmement facile à désosser si le code n'est pas occulté.
De la dissimulation de l'ajoutera une couche de gêne pour les personnes qui tentent de désosser votre logiciel. Selon la version que vous obtenez, vous obtiendrez différents niveaux de protection.
Visual Studio inclut une version de Dotfuscator. Puisque c'est une version intégrée, vous n'êtes certainement pas arriver le plus fort de dissimulation possible. Si vous regardez leur fonction liste, vous verrez exactement ce qu'il vous manque (et exactement ce que l'application va faire pour rendre votre code plus sûr).
Il ya un couple d'autres gratuits ou open source .NET obfuscators là (mais je ne peux pas commenter sur la qualité ou les différentes méthodes qu'ils utilisent):
En fin de compte, rien n'est parfait. Si quelqu'un veut vraiment voir comment votre logiciel fonctionne, ils le feront.
Chut! Vous ne pouvez pas laisser le reste du monde savent que la plupart du temps nous ne sommes pas à l'aide de la magie de poussière de lutin algorithmes.
Justin: est-ce l'Amour compté comme un algorithme magique? L'amour est ce qui fait que mon programmes spéciaux. Je ne pense pas que vous pouvez démonter l'Amour.
OriginalL'auteur
Bien, vous ne pouvez pas protéger ENTIÈREMENT votre produit d'être fissuré, mais vous pouvez optimiser/améliorer les niveaux de sécurité et d'en faire un peu trop difficile à être cassé par les débutants et intermédiaires, des craquelins.
Mais gardez à l'esprit que rien n'est inviolable, seul le logiciel côté serveur est bien protégé et ne peut pas être déchiffré. De toute façon, à améliorer les niveaux de sécurité dans votre application, vous pouvez faire quelques mesures simples pour prévenir certains crackers "pas tous" à partir de la fissuration vos applications. Ces étapes vont faire ces biscuits aller de noix et peut-être désespérée:
Ce sont juste des méthodes simples pour prévenir les débutants et intermédiaires, des craquelins de fissuration de votre application. Si vous avez d'autres idées pour protéger votre application il suffit de ne pas hésiter à les mettre en œuvre. Elle va juste faire des craquelins de vie difficile, et ils seront frustrés, et ils finiront par quitter votre application, parce que c'est juste ne vaut pas le temps.
Enfin, vous avez également besoin d'envisager de passer votre temps sur le codage d'un bon et d'applications de qualité. Ne perdez pas votre temps sur le codage compliqué couches de sécurité. Si un pirate veut casser votre demande, il/elle va faire n'importe ce que vous faites...
Maintenant, allez et mettre en œuvre des jouets pour les crackers...
OriginalL'auteur
Il y a La salamandre, qui est un natif .NET compilateur et l'éditeur de liens de Remotesoft que peuvent déployer des applications sans .NET framework. Je ne sais pas comment il est à la hauteur de ses prétentions.
OriginalL'auteur
Si Microsoft pourrait venir avec une solution, nous n'aurons pas piratés versions de Windows, donc rien n'est très sûr. Voici quelques questions similaires de Pile Overflow, et vous pouvez mettre en place votre propre façon de les protéger. Si vous êtes en libérant versions différentes, alors vous pouvez adopter des techniques différentes pour les différentes version de sorte que lorsque la première est fissuré la seconde, on peut prendre le dessus.
La gestion des caractéristiques de la licence de base pour une application C++
Sécuriser un fichier DLL avec un fichier de licence
Licence /un logiciel de protection?
OriginalL'auteur
.NET Réacteur
Mise à jour
Jared a souligné que de4dot prétend être en mesure de le décompiler.
J'ai eu quelques problèmes avec leur produit plus tôt et puis j'ai demandé à quelques question au sujet des icônes haute résolution dans groupes.google.se/groupe/net-réacteur-utilisateurs et j'ai eu une réponse et une solution, mais maintenant il semble qu'ils sont difficiles à se procurer. Mauvais - c'est un excellent produit et je suis toujours à l'utiliser
Si "aucun outil existant peut décompiler", pourquoi est-il répertorié comme un obfuscateur/packer sur le de4dot fonctionnalités de la page?: bitbucket.org/0xd4d/de4dot
Probablement parce que c'est un vieux de la déclaration et qu'ils n'ont pas mis à jour leur page web. Je ne suis plus un utilisateur à l'une quelconque de la dissimulation de l'outil.
OriginalL'auteur
Ici est une idée: vous pourriez avoir un serveur hébergé par votre société que toutes les instances de votre besoin de logiciel pour vous connecter. Il suffit d'avoir à se connecter et vérifier une clé d'enregistrement n'est pas suffisant, ils vont simplement supprimer la coche. En plus de l'extraction de la clé, vous devez également demander au serveur d'effectuer une certaine tâche essentielle que le client ne peut pas effectuer lui-même, de sorte qu'il est impossible de supprimer. Bien sûr, cela signifierait probablement beaucoup de la transformation lourde de la part de votre serveur, mais ce serait rendre votre logiciel difficile à voler, et en supposant que vous avez une bonne clé (dispositif de vérification de la propriété, etc), les touches seront également difficile à voler. C'est sans doute plus invasive que vous voulez, car il faudra à vos utilisateurs d'être connecté à internet pour utiliser votre logiciel.
Je suis entièrement d'accord. C'est pourquoi j'ai dit "c'est sans doute plus invasive que vous voulez..." dans ma dernière ligne. J'étais juste en offrant l'OP la meilleure solution que j'ai pensé était techniquement réalisable, pas la meilleure approche pour garder les clients heureux 🙂
Dans le premier trimestre de 2010 (plusieurs mois après cette réponse a été écrit), le jeu de société de développement d'Ubisoft essayé cela, et, apparemment, la charge sur les composants côté serveur était si grand que les jeux ont été injouable. Impression générale de la SW: "compliqué à installer, ne peut pas être utilisé en mode hors connexion, invasifs et peu fiable". Donc, si vous décidez que le traitement côté serveur est le chemin à parcourir, assurez-vous que vous pouvez réellement échelle à la demande.
OriginalL'auteur
Quelque chose en cours d'exécution sur le client peuvent être décompilé et fissuré. Obfusification rend simplement plus difficile. Je ne sais pas votre application, mais 99% du temps, je ne pense pas que cela en vaut la peine.
OriginalL'auteur
Obfusquer le code! Il y a un exemple dans Obscurcissement De Code C# .
OriginalL'auteur
Garder à l'esprit que plus de 99% de vos utilisateurs ne sont pas intéressés dans l'examen de votre exécutable pour voir comment il fonctionne.
Étant donné que peu de personnes vont même à la peine d'essayer et que la plupart des obfuscators peut être contourné, est-il utile de votre temps et d'efforts?
Que vous seriez mieux d'investir du temps dans l'amélioration de votre produit, de sorte que plus de gens veulent l'utiliser.
OriginalL'auteur
Juste pour ajouter un avertissement: si vous allez utiliser l'obfuscation, vérifier que tout fonctionne toujours! L'Obfuscation peut changer des choses comme de la classe et de la méthode de noms. Donc, si vous utiliser la réflexion pour l'appel à certaines méthodes et/ou des classes (comme dans un plugin-architecture), votre application peut échouer après abrutissant. Aussi stacktraces peut-être pas inutile de traquer les erreurs.
OriginalL'auteur
S'il est écrit en .NET et compilé CIL, il peut être pris en compte. Si la sécurité est un sujet de préoccupation et de l'obscurcissement est à éviter, alors je vous recommande la rédaction de votre application à l'aide d'un non-géré de la langue, qui est, par nature, difficile à inverser ingénieur.
OriginalL'auteur
Les deux ont la même réponse très simple: ne pas distribuer le code objet de parties non fiables, tels que (apparemment) de vos clients. Si c'est faisable pour héberger l'application sur votre machines dépend seulement de ce qu'il fait.
Si ce n'est pas un application web, peut-être que vous pouvez vous permettre SSH la connexion avec un X à la transmission à un serveur d'application (ou Connexion Bureau À Distance, je pense, pour Windows).
Si vous donnez le code de l'objet de ringard type de personnes, et qu'ils pensent de votre programme pourrait être amusant de fissure, il sera brisée. Pas moyen de contourner cela.
Si vous ne me croyez pas, point de sortir un haut-profil d'application qui n'a pas été fissuré ou piratés.
Si vous allez avec les touches matérielles, il va rendre la production plus cher et vos utilisateurs vont vous haïr pour cela. C'est une véritable garce à ramper sur le sol de brancher et débrancher votre 27 USB différent des bidules parce que les fabricants de logiciels n'avez pas confiance en vous (j'imagine).
Bien sûr, le moyen de contourner cela est de casser la "pouvez-je utiliser-il" test pour qu'il retourne toujours true.
Un mauvais tour, pourrait être d'utiliser les valeurs d'octets de la opcodes qui effectuer le test quelque part d'autre dans le programme de sale qui va faire planter le programme, avec une haute probabilité, sauf si la valeur est juste à droite. Il vous fait lié à une architecture particulière, si 🙁
Oh. J'ai eu C des trucs dans l'esprit; dire, prendre l'adresse de la fonction de validation, ajouter les 10 premiers octets dans ce char array (cast le pointeur de fonction); choisir n'importe quelle fonction f, et [l'adresse de f, moins la somme précédente] dans fptr. Toujours faire appel à un f *(fptr + somme). Précalculer "somme"
OriginalL'auteur
Il suffit de faire une bonne application et le code d'un simple système de protection. Il n'a pas d'importance ce que la protection que vous choisissez, il sera inversé... Alors ne perdez pas trop de temps/argent.
OriginalL'auteur
Il est impossible de protéger complètement une application, désolé.
OriginalL'auteur
Quand il s'agit de .NET, si vous êtes à la libération d'un Windows Forms application (ou toute autre application où le client a le Portable fichier Exécutable), il est en mesure de se fissurer.
Si vous voulez coller avec .NET et souhaitez réduire la chance d'avoir le code source de votre prise, vous souhaitez mai à envisager le déploiement d'elle comme d'une ASP.NET application sur un serveur web, au lieu d'en faire une application Windows Forms.
OriginalL'auteur
Franchement, parfois, nous avons besoin d'obfusquer le code (par exemple, le registre de licence de classes et ainsi de suite). Dans ce cas, votre projet n'est pas libre. OMI, vous devez payer pour une bonne obfucator.
Dotfuscator cache votre code et .NET Réflecteur affiche une erreur lorsque vous tentez de le décompiler.
OriginalL'auteur
Je peux vous recommandons d'utiliser Obfuscator.
OriginalL'auteur