web-dev-qa-db-fra.com

Comment sécuriser mon application contre le piratage

Je développe une Android et je prévois de la publier (application payante). J'ai entendu dire qu'il est très facile de pirater Android (beaucoup Je me demandais, d'après votre expérience ou ce que vous savez, comment augmenter la sécurité de mon application? Je sais que je ne pourrai jamais la sécuriser à 100% mais je veux rendre plus difficile le piratage ou la distribution il illégalement Des idées, des expériences, des commentaires que vous pouvez partager?

36
Snake

J'ai publié une application anti-malware gratuite pour Android, et m'assurer que personne ne l'a piraté était essentiel à son succès. Les plus grandes menaces contre une application sur le marché Android incluent le code source divulgué, les applications payantes copiées/distribuées et la recomposition. J'explique chacune ci-dessous et la façon de les résoudre.

Premièrement, cet article décrit comment effectuer une rétro-ingénierie d'une application Android en déballant le code compilé et en affichant le code source. Vous ne pourrez pas empêcher cela de se produire) à votre application. Période. Une personne testamentaire peut toujours voir votre code source si elle obtient une copie de votre apk (facilement disponible sur un téléphone rooté). La bonne nouvelle est que vous pouvez masquer les éléments importants de votre code, ce qui rend plus difficile reverse engineering. Proguard est un outil fourni par Android qui vous permet d’obscurcir (rendre plus difficile à lire) votre code lors de l’emballage. Afin d’éviter que votre code important ne soit lire, cependant, vous devrez déplacer toutes les méthodes ou variables vulnérables vers un fichier qui n'est pas un Activity, Service ou BroadcastReceiver. Pour des faits complets, lisez la documentation .

Pour protéger contre la copie et la distribution illégales de votre application, Google Play fournit --- options de licence . Malheureusement, LVL n'est pas non plus entièrement sécurisé. Un HOW-TO détaillé pour savoir comment le casser (avant Google Play) est disponible ici .

Enfin, le document lié ci-dessus, ainsi que de nombreux articles savants et blogs en ligne décrivent comment, une fois que le code source (ou même le code source obscurci) est divulgué, une fois peut simplement ajouter un peu de leur propre code malveillant, démissionner de l'application, et publiez-le sur le marché Android. La bonne nouvelle ici est que, à moins que votre mot de passe de clé de licence Android Android soit facilement devinable, ou si vous le donnez à quelqu'un sinon, l'attaquant ne sera pas en mesure de publier une application avec la même clé de licence. Cela vous protège non seulement contre les reproches, mais cela empêche également les applications malveillantes d'accéder aux données disponibles via votre application d'origine (telles que SharedPreferences).

Dans l'ensemble, la meilleure façon de vraiment sécuriser votre application contre le piratage est de configurer et d'utiliser correctement Proguard , Google Jouez à Licensure , et pour vous signer apk final avec une clé de licence très sécurisée.

67
Phil

Vous pouvez ajouter des vérifications de sabotage combinées à de l'obscurcissement pour alerter l'utilisateur/désactiver la fonctionnalité/signaler au serveur si l'application a été piratée. J'utilise DexGuard pour l'obscurcissement renforcé.

Contrôles antisabotage

  • Application d'installation - Utilisez le gestionnaire de packages pour vous assurer que l'application d'installation est la boutique d'applications Play/Amazon
  • Vérification de l'émulateur - Vérifiez les propriétés du système pour détecter les signes révélateurs sur lesquels l'application est exécutée sur l'émulateur qui, en dehors de dev, pourrait indiquer une attaque/falsification
  • Vérification débogable - Utilisez le gestionnaire de paquets pour vérifier l'indicateur de débogage, cela devrait être désactivé dans le produit, ce qui pourrait indiquer une attaque/falsification
  • Vérification du certificat de signature - Utilisez le gestionnaire de packages pour vérifier que l'application est signée avec votre certificat de développeur (cela serait rompu si quelqu'un déballait et reconditionnait/démissionnait l'application)

mise à jour: Depuis que j'ai répondu à cette question, j'ai écrit plus article détaillé sur la détection de sabotage.

8
scottyab

jetez un œil au cadre de licence google play.

http://developer.Android.com/guide/market/licensing/index.html

c'est votre meilleur choix.

Google Play Licensing est un service réseau qui permet à une application d'interroger un serveur de licences Google Play de confiance pour déterminer si l'application est concédée sous licence à l'utilisateur actuel de l'appareil. Le service de licence est basé sur la capacité du serveur de licences Google Play à déterminer si un utilisateur donné est autorisé à utiliser une application donnée. Google Play considère qu'un utilisateur dispose d'une licence s'il est un acheteur enregistré de l'application.

6
Jeffrey Blattman