web-dev-qa-db-fra.com

Dois-je passer du temps à empêcher le piratage de mon application?

Le titre en dit long, plus je fais de recherches sur le piratage et les outils utilisés pour casser une application, plus je pense que c'est juste du temps perdu.

Ma plus grande menace est que mon application est piratée et téléchargée à nouveau quelques minutes après l'avoir publiée. Mais je ne sais pas à quel point ce sera nuisible à mes revenus, s'il y en aura même. Peut-être que quelqu'un peut trouver de l'expérience, c'est ma première application que je vais publier et je n'ai aucune expérience avec ça. Mon application va être gratuite avec des publicités. Je pense que c'est une autre ligne de défense parce qu'à mon avis, l'accent est mis sur les applications payantes car elles ne sont pas disponibles dans de nombreux pays.

Mon approche actuelle est que je vais simplement utiliser proguard pas vraiment pour le rendre plus difficile à cracker (plus probablement comprendre le code), car vous n'avez même pas besoin de comprendre le code si vous le résignez simplement et téléchargez la même application sur le playstore, il vous suffira de changer le nom du package. Mon principal objectif d'utiliser proguard est simplement de réduire l'application.

Est-ce une "bonne" approche?

30
Mike

Non.

La plupart des applications de grands développeurs avec une protection contre la copie réelle de qualité industrielle apparaissent dans les torrents, fissurées, dans les jours suivant leur sortie. Il est extrêmement douteux qu'un développeur plus petit puisse égaler cela. Essayer de perdre votre temps vous laissera moins de temps pour développer des fonctionnalités/applications qui rapportent de l'argent.

Vous voudrez peut-être faire un travail trivial pour garder les copieurs "occasionnels" à distance, mais par trivial, je veux dire quelque chose que vous pouvez mettre ensemble en quelques heures. (C'est-à-dire quelque chose comme proGuard.) Vous n'empêcherez pas les personnes possédant un savoir-faire technique qui souhaitent activement pirater votre application.

50
Gort the Robot

Dois-je passer du temps à empêcher le piratage de mon application?

Vous posez la mauvaise question. Les garanties techniques telles que proguard sont indispensables mais essaient de résoudre le problème à la dure.

La première question devrait être "Mon application contient-elle quelque chose qui a vraiment besoin d'être protégé?" comme un algorithme complexe ou propriétaire. Si tel est le cas, la meilleure solution consiste à déplacer cela hors de l'application vers un serveur auquel l'application parle. L'application devient simplement une couche d'interface utilisateur au-dessus du serveur. Bien sûr, cela signifie que vous devez maintenir un serveur (ou des serveurs) et un mécanisme d'authentification approprié pour chaque utilisateur (un tout autre article). Il est également inapproprié pour les applications déconnectées ou très réactives.

La deuxième question devrait être "Pourquoi les gens pirateraient-ils mon application?" S'il s'agit d'une motivation financière, publiez une version gratuite de l'application avec un ensemble de fonctionnalités réduit. S'il s'agit d'un jeu, rendez le jeu de base et les premiers niveaux gratuits, puis vendez des niveaux/personnages/mises à niveau/autres via des achats intégrés. Alternativement, publiez une version gratuite financée par la publicité dans l'application (oui, je sais que beaucoup de gens la détestent mais c'est le monde dans lequel nous vivons).

Peu importe ce que vous faites, comme Steven l'indique dans sa réponse, certaines personnes le feront pour un défi technique et relâcheront le crack pour démontrer leurs prouesses. Vous ne pouvez pas les arrêter, cela ne vaut donc pas la peine de vous inquiéter.

30
akton

Il y a plusieurs années, j'ai acheté un livre sur le développement de jeux. Il y avait un chapitre sur le piratage. Il comprenait le résumé suivant:

Il n'est pas possible d'empêcher le piratage avec la technologie. La seule façon d'empêcher le piratage est de rendre un jeu si cool et passionnant que les pirates choisissent de sortir et d'acheter une copie.

Vous ne pouvez jamais empêcher le piratage. Vous pouvez limiter le piratage, vous pouvez surveiller le piratage, mais aucun outil ne peut vraiment l'empêcher. J'insiste sur ce point car ce mot fort, "prévenir", peut amener les gens à prendre des mesures exorbitantes en pensant "Si je fais juste X, je peux empêcher le piratage". Ils sont toujours attristés par le résultat, et tout cela à cause d'un choix de Word.

Pour reformuler les points clés d'Akton dans une terminologie traditionnellement utilisée dans la sécurité de l'information: vous devez développer un modèle de menace décrivant vos attaquants. Si votre attaquant est un script-kiddie qui télécharge quelques scripts hors du Web, alors vous pouvez concentrer votre sécurité en regardant en ligne ce que les script-kiddies peuvent trouver et en vous défendant contre ceux-ci. Si vous êtes vraiment intéressé par le fait que vos secrets ne tombent pas entre les mains du gouvernement chinois et/ou américain, vous constaterez que vous devez en faire un peu plus sur le front de la sécurité.

Une bonne chose à propos de le formuler comme un "modèle de menace" est que vous serez également en excellente position pour gérer correctement les problèmes de sécurité, tels que les connexions et les numéros de carte de crédit et ainsi de suite. Vous serez en avance sur la courbe.

Si tout ce qui vous inquiète, ce sont les script-kiddies, il serait utile non seulement de faire la recherche Google pour antiLVL que vous mentionnez dans vos commentaires, mais de jouer avec quelques-uns d'entre eux. Apprenez ce qu'ils peuvent et ne peuvent pas faire. Connais ton ennemi.

8
Cort Ammon

Si possible, vous devez suivre les conseils de https://news.ycombinator.com/item?id=2623102 et déplacer les éléments que vous souhaitez payer vers un serveur. Et puis gérer l'accès là-bas. On peut supposer que l'application elle-même est volée et piratée autant qu'elle le souhaite. La copie de votre serveur est plus difficile.

Bien sûr, cette solution a l'inconvénient de ne pas être cool ou intelligente. Mais ça marche.

4
btilly

Il est impossible d'empêcher complètement le piratage.

Vous devez accepter que votre code s'exécute sur les machines d'autres personnes. Ces personnes peuvent prendre votre code sur leurs machines et faire n'importe quoi avec lui, y compris le modifier et le redistribuer (illégalement).

Vous pouvez tirer parti du système juridique de votre pays si vous pensez que vos droits ont été violés; Par exemple, un citoyen américain peut émettre une demande de retrait DMCA contre une entité qui distribue son travail. Cependant, il sera plus difficile de démanteler un réseau distribué international, comme ceux composés de liaisons torrentielles.

Alternativement, vous pouvez réviser votre philosophie de distribution de logiciels. Étant donné qu'il est déjà possible pour vos utilisateurs de faire quoi que ce soit avec votre programme, vous pouvez accepter cette réalité. Ensuite, adoptez cette réalité et accordez à vos utilisateurs la liberté d'exécuter, de copier, de distribuer, d'étudier, de modifier et d'améliorer votre logiciel. Ceci est généralement accompli en déclarant votre programme "" logiciel libre " (et quand je dis" gratuit ", je parle en termes de" liberté et liberté ", pas en termes de" prix ").

La diffusion de votre programme en tant que "logiciel libre" présente de nombreux avantages:

  • Vos utilisateurs pourront facilement modifier votre programme.
    • Si vous appréciez leurs modifications, vous pouvez les fusionner à nouveau dans le projet principal, et cela sera plus précieux en conséquence.
    • Si [~ # ~] i [~ # ~] devait modifier votre programme, la première chose que je ferais serait de supprimer les publicités, car Je les trouve assez ennuyeux. Vous pourriez considérer cela comme une indication que votre application serait meilleure sans publicité, ce qui vous inciterait à imaginer un meilleur modèle de revenus ("meilleur" à la fois en termes de plaisir pour vos utilisateurs et de profit).
  • Vos utilisateurs seront libres de redistribuer votre programme.
    • Si vous voulez que votre programme "devienne viral", supprimer tous les obstacles juridiques à la viralité serait une bonne chose.
    • Les gens peuvent déjà redistribuer votre programme. Soit ils sont "mauvais", soit ils sont bienveillants pour partager des choses avec leurs voisins, ce qui est un trait humain de base qui nous rend plus efficaces que les espèces sans la compassion. Maintenant, ils peuvent se sentir bien, comme ils le devraient.
  • D'autres personnes pourront étudier votre travail et en tirer des leçons.
    • J'ai appris énormément de choses sur la programmation en passant à travers la source des jeux RPGMaker, pour lesquels le code du jeu est généralement libre de parcourir. En fait, je suis conscient que toute une communauté de développeurs de jeux a émergé du partage et de l'apprentissage des choses à partir du code des autres, et a grandi et mène des carrières réussies et fournit des produits de haute qualité. Vous pouvez être heureux de savoir que votre programme a profité à plus de personnes que vous.

Rendre votre programme "propriétaire", comme vous avez l'intention de le faire, vous donne la fausse assurance que les gens doivent d'abord vous payer pour obtenir et utiliser votre logiciel. Vous savez que ce n'est pas vrai à cause du piratage.

Considérez donc l'inverse: et si vous offriez d'abord le logiciel aux clients et leur disiez que s'ils en retiraient de la valeur, ils vous paieraient?

Si une personne "honnête" était prête à vous payer pour votre logiciel avant , il pourrait l'utiliser, alors (tant que vous fournissez un produit de haute qualité ) pourquoi ne serait-il pas tout aussi disposé à vous payer après qu'il en ait profité? (J'ai payé l'auteur du plugin Chrome AdBlock, qui est un logiciel gratuit disponible gratuitement, car j'en ai tiré une immense valeur.)

Quant à une personne "malhonnête" qui téléchargerait une version modifiée de votre programme à partir d'une source illégale, elle n'est certainement pas disposée à payer d'avance. Vous avez maintenant la possibilité de capter des revenus de cette personne, car le "freeloader" pourrait tirer de la valeur de votre programme et décider ensuite de vous payer. Si les pirates constituent une "menace" considérable pour votre programme, vous pourriez envisager de tourner la table de telle sorte que vos pirates deviennent des clients potentiels à la place.

Je recommande l'approche "logiciel libre". Vous pourriez continuer à créer des logiciels propriétaires et vous gagneriez probablement encore beaucoup d'argent, comme le font de nombreuses personnes qui produisent des logiciels propriétaires; mais il faudrait ignorer les "problèmes", à la fois financiers et moraux, qui existent inévitablement et incurablement en raison de la nature des œuvres créatives. Ces "problèmes" deviennent des véhicules pour l'amélioration de votre produit lorsque vous adoptez des philosophies de logiciel libre; vous auriez un avantage sur les concurrents qui ne peuvent pas comprendre ce pouvoir.

2
Jackson

Non, c'est inutile. En fin de compte, l'analyse coûts/avantages ne fonctionne tout simplement pas.

Pour commencer, vous devez cibler une plate-forme dotée d'une sécurité intégrée. De manière réaliste, peu importe à quel point vous aimeriez la plate-forme Android n'est tout simplement pas aussi sécurisé - il est conçu pour être ouvert.

Le coût de la mise en œuvre de toute sécurité utile est probablement supérieur à tout bénéfice que vous pourriez voir comme Android a le plus faible coût par utilisateur de toutes les plates-formes mobiles, les seules personnes pour lesquelles il gagnera de l'argent Google. Ceux qui n'achètent pas les combinés bon marché sont souvent des puristes qui pensent que la gratuité (expression des idées) est aussi spécifiquement la partie gratuite (comme dans la bière), donc ils feront tout ce qu'ils peuvent pour éviter de payer simplement comme un défi.

Tout ce que vous devez faire pour protéger votre application doit affecter le cœur de l'expérience utilisateur et ne pas être une protection boulonnée après coup. Les applications qui fonctionnent bien à cet égard sont celles où le produit acheté est le contenu, pas l'application elle-même.

Étant donné que votre principale préoccupation (selon les commentaires) est liée à l'authentification (versions craquées et reconditionnées) de votre application sur les appstores ... c'est principalement le problème de l'appstore à résoudre et vous feriez mieux de chercher des moyens pour une application de s'enregistrer automatiquement qu'il a été reconditionné plutôt que d'empêcher la copie.

0
James Snell

Conclusion

Ma conclusion, pour ne pas entrer en conflit avec Q&A Format, après toutes ces bonnes réponses, il ne faut pas investir beaucoup de temps pour rendre le plus difficile possible le crack de mon application. Pour cette application, je vais simplement utiliser proguard à cause de l'effet de rétrécissement et parce qu'il est plus difficile de comprendre le code si quelqu'un veut le modifier ...

Je passe plutôt plus de temps à SEO/implémenter plus features comme Steven a souligné et après la publication je vais essayer de donner un meilleur support à mes utilisateurs que les pirates! ;) Je pense que cela va faire la différence et c'est l'un des meilleurs moyens de les combattre.

Tout ce qui va se passer est une expérience supplémentaire et changera ou ne changera pas la façon dont je publierai mes applications à l'avenir. Je vous remercie!

0
Mike