Vous ne pouvez pas sécuriser totalement une application (gérée ou non). Si des systèmes comme la Playstation et l'iPad peuvent être piratés - le fournisseur contrôlant même le matériel - quel espoir a votre application ? Heureusement, vous n'en avez pas vraiment envie. À mon avis, vous devez sécuriser votre application juste assez pour que quelqu'un ne puisse pas accidentellement piratez votre produit, et pas plus.
Par exemple, si vous utilisez une licence par machine, elle ne doit pas fonctionner uniquement lorsque vous l'installez sur une deuxième machine. Vous voudrez un bon message d'erreur pour éviter des appels supplémentaires au support technique, mais ne passez pas trop de temps à rendre le problème trop difficile à contourner et ne frappez pas les utilisateurs à la tête avec ce message.
Un autre exemple est celui d'un essai limité dans le temps. Ne vous préoccupez même pas de choses simples, comme le fait de savoir si les utilisateurs peuvent simplement remonter l'horloge du système. Quelqu'un qui fait cela sait qu'il rompt votre licence, et tant qu'un utilisateur connaît quand ils sont en infraction, vous en avez fait assez.
Vous avez besoin de faire tout cela parce que les utilisateurs ne se soucient pas de votre licence. Les licences sont des choses inventées qui personne se soucie jusqu'à ce qu'ils en aient besoin. Personne ne les lit, et ils ne devraient vraiment pas avoir à le faire. Par conséquent, la meilleure façon d'indiquer à l'utilisateur où se trouvent les limites est de lui dire si le comportement de votre application est conforme à la licence. Dans le premier cas, cela signifie soit ne pas installer, soit installer en mode version d'essai la deuxième fois. Dans le second cas, il peut s'agir simplement de vérifier une date en texte clair dans un fichier de configuration. Quoi qu'il en soit, assurez-vous de traiter le problème d'une manière élégante, utile et respectueuse.
Cela explique donc ce que signifie faire juste autant. Mais pourquoi ne pas aller plus loin ? Pourquoi ne pas boucher tous les petits trous que vous pouvez trouver ? La réponse est en deux parties. Tout d'abord, si quelqu'un franchit le seuil éthique du consciemment si vous enfreignez les conditions de votre licence, même de manière simple, ils seront également prêts à faire quelque chose de plus difficile ou de plus dangereux, comme retirer votre application d'un site Web de l'UE. torrent et l'exécution d'applications téléchargées à partir de sources non fiables présente un certain danger. Rendre les choses plus difficiles n'est qu'un ennui mineur pour ces utilisateurs et risque de causer des problèmes avec vos clients payants. En restant simple, vous pouvez empêcher quelqu'un de creuser dans votre application et de publier un crack plus complet. Deuxièmement, vous n'avez que peu d'yeux pour chercher les failles ; les pirates en ont beaucoup, et ils ont plus de pratique pour les trouver. Il suffit d'une seule petite faille pour que votre application soit distribuée sur les sites pirates comme si vous n'aviez rien fait. Vous devez avoir raison à chaque fois ; ils ne doivent avoir de la chance qu'une fois. L'effort à fournir est donc très important, et la probabilité de réussite, quelle qu'elle soit, est très faible.
En fin de compte, si quelqu'un veut pirate votre application (plutôt que de simplement l'utiliser), et c'est là leur principal objectif, ils le feront. Il n'y a rien que vous puissiez faire pour les arrêter. C'est la nature même des logiciels : une fois que les fichiers qui composent votre produit sont sur l'ordinateur d'un utilisateur, ils sera être en mesure d'en faire ce qu'ils veulent. Cela est particulièrement pertinent dans les environnements gérés comme Java ou .NET mais cela s'applique également au code natif. Le temps joue en leur faveur, et avec suffisamment de temps, toute sécurité numérique peut être brisée.
Puisque vous ne pouvez pas empêcher les utilisateurs de pirater votre produit, votre meilleure ligne de conduite est d'engager cette catégorie d'utilisateurs d'une manière qui les utilise à votre avantage. Il est souvent possible de les faire travailler pour vous plutôt que contre vous. Dans cette optique, quelle que soit votre application, il vaut probablement la peine de conserver une version gratuite qui est presque entièrement fonctionnelle et qui n'expire pas. La différence entre un prix d'un dollar US et la gratuité est énorme, ne serait-ce que parce que le client n'a pas à vous confier sa carte de crédit. Une édition gratuite de votre produit ne va pas seulement tuer efficacement la distribution pirate (pourquoi risquer une version pirate alors que vous pouvez être légitime pour le même prix ?), elle a le potentiel d'élargir considérablement votre public.
Le résultat est que vous devrez peut-être augmenter le prix de l'édition payante, de sorte qu'à la fin, au lieu de 2 000 utilisateurs à 20 $ chacun, vous avez 100 000 utilisateurs gratuits, dont 500 sont prêts à payer 99 $ pour l'édition "professionnelle". Vous gagnez ainsi plus d'argent que si vous passiez un temps fou à verrouiller votre produit. De plus, vous pouvez engager ces utilisateurs gratuits et tirer parti de cette relation de plusieurs manières importantes.
L'un d'eux est le soutien. Un pessimiste en profiterait pour se plaindre de l'augmentation du coût du support de 100 000 utilisateurs gratuits, mais il se passe quelque chose d'étonnant : votre produit devient largement autonome. Vous voyez cela tout le temps avec les grands projets open source qui n'ont pas d'argent pour les coûts de support. Les utilisateurs s'engagent et font en sorte que cela se produise.
Les utilisateurs gratuits ont généralement des attentes réduites en matière d'assistance, et ce pour une bonne raison. Il vous suffit d'indiquer que l'édition gratuite ne peut bénéficier que d'une assistance communautaire et de mettre en place un forum en ligne modéré par les utilisateurs à cet effet. Votre base de connaissances en matière d'assistance se générera d'elle-même et les utilisateurs avancés guideront ceux qui ont besoin d'un coup de main supplémentaire en votre nom. Plus important encore, cela vous permettra d'identifier et de corriger les bogues plus rapidement, améliorant ainsi la qualité de votre produit et réduisant les coûts totaux de support. Cela n'était pas possible auparavant parce que votre base d'utilisateurs n'était pas assez importante, mais lorsque vous traitez les utilisateurs gratuits comme des clients, cela peut très bien fonctionner.
Un autre est le retour d'information. En observant votre forum, vous apprenez des idées d'amélioration importantes que vous n'auriez peut-être jamais envisagées autrement. Cela peut vous permettre de transformer un plus grand nombre de vos utilisateurs gratuits en utilisateurs payants et de créer un produit plus convaincant qui attirera un public encore plus large.
Enfin, vous devez tenir compte du marketing. Tous ces utilisateurs gratuits sont désormais des fans plutôt que des adversaires, et ils agiront en conséquence. De plus, au moment de lancer votre prochaine version, ces utilisateurs seront tous passés par votre canal de distribution approuvé, plutôt que par un autre mécanisme inconnu. Cela signifie que pour votre prochaine version, vous serez connecté à un public plus large, très intéressé et qui vous soutiendra.
Les meilleures fonctionnalités à réserver à l'édition professionnelle sont les outils destinés à faciliter le déploiement et la gestion des entreprises. Un pirate n'y verra pas une raison suffisamment convaincante pour le pirater à des fins personnelles, mais pour une entreprise qui souhaite acheter 300 licences et les déployer à l'échelle de l'entreprise, ces outils sont indispensables. Bien sûr, l'édition professionnelle sera de toute façon piratée, mais une fois encore, ne vous en faites pas, car vous ne pourrez probablement pas vendre le produit à ces pirates, quoi que vous fassiez. tout revenu.
Bien qu'il puisse être difficile, d'un point de vue psychologique, de donner autant de votre produit, nous espérons que vous comprendrez que c'est vraiment la meilleure façon de procéder. Et ce n'est pas tout, c'est la seule façon de procéder sur le long terme. Je sais qu'il y a quelqu'un qui pense qu'il ne veut pas le faire de cette façon. Après tout, ils se sont bien débrouillés en vendant leur produit verrouillé à 20 $ pendant des années. Mais c'est dommage, parce que si vous ne le faites pas de cette façon, quelqu'un d'autre finira par le faire . Et leur produit sera tout aussi bon que le vôtre, ou suffisamment proche pour qu'ils puissent s'en tirer en le prétendant. Puis, tout à coup, vos prix paraissent scandaleux, les ventes chutent de façon spectaculaire et vous ne pouvez plus rien faire. Vous pouvez opter pour un niveau intermédiaire supplémentaire si vous le souhaitez, mais il est peu probable que cela vous aide.
0 votes
@Andreas : C'est génial ! Je vais l'essayer. Quelqu'un l'utilise ?
1 votes
@Jack c'est uniquement pour les applications de la boutique Windows. Il n'y a pas de calendrier pour les applications de bureau (pour autant que je sache).
0 votes
Si vous voulez du natif sans le C++ archaïque, utilisez Delphi. La facilité de .Net vient de Delphi de toute façon.
0 votes
stackoverflow.com/questions/25133111/xamarin-code-security/ résolu !
0 votes
On dirait que le natif sera toujours là et qu'il n'y a pas besoin d'obfuscateurs ; on dirait que le noyau net RT a des solutions viables ; bientôt toutes les applications passeront au noyau .net ; codeproject.com/Articles/5262251/ docs.microsoft.com/fr/archive/msdn-magazine/2018/novembre/ Je n'ai pas testé, peut-être qu'avec le vieux sdk .net de Win, il est possible de faire la même chose. PLS wote ma réponse à l'aller vers le haut ; regarde comme compile native mieux tout obfuscators libre ou toute autre option ;