Android Game continue à se faire pirater

Nous avons donc passé plusieurs fois à travers cela, nous lançons un jeu (pour pas cher) et quelqu’un le pirate et le place sur un miroir. Nous mettons en place des alertes Google pour toutes nos applications. Nous nous faisons donc quotidiennement savoir qui fait du piratage. Jusqu’à présent, nous avons implémenté le service de licence comme Google l’a suggéré, notre sel est fait au hasard chaque fois que la licence est lancée avec l’identifiant unique de l’appareil. Nous exécutons le service de vérification une fois, lorsque l’application est démarrée pour la première fois. Nous générons ensuite un hachage de 512 caractères pour la clé et la valeur stockée qui est comparée dans SharedPreferences à partir de là.

Maintenant, je sais que vérifier une fois est probablement l’endroit où l’application est bloquée. Notre bytecode a très probablement été examiné et recompilé sans la ligne qui initie la vérification.

De là, je ne veux pas brouiller notre code comme je l’ai vu auparavant. Je veux quelque chose d’un peu plus solide et je veux aussi apprendre à le faire correctement. Je suis plus intéressé à apprendre qu’à gagner de l’argent, car seulement 2% des gens vont chercher une version piratée.

Jusqu’à présent, seul, j’ai créé un générateur de nombres aléatoires qui est placé dans plusieurs zones de démarrage du jeu. Une fois initiée (par exemple, 1 fois sur 50), la licence est vérifiée. Je sais que cela rendrait le piratage plus difficile car le pirate devrait éliminer chaque cas, comstackr, éliminer, comstackr. Cette méthode est cependant toujours craquable … alors que proposez-vous? Encore une fois, je suis vraiment intéressé par ce processus de sécurité, alors s’il vous plaît éduquez-vous, ne transformez pas cela en discussion sur l’obscurcissement ou la vérification périodique basée sur un horodatage.

Merci

Mon idée n’est pas la preuve de piratage, mais pourrait supprimer une partie de l’intérêt pour le piratage du jeu.

Modèle freemium

1) Rendre les premiers 5 à 10 niveaux gratuits pour que les gens puissent apprendre le jeu et s’amuser sans payer. Less voudra pirater le premier niveau et le jeu se répandra encore plus avec le modèle Freemium.

Levelpacks partagés / groupés

2) Laissez une partie des niveaux de jeu ou de la logique restr en ligne. Par exemple. Lorsque vous atteignez le niveau 5 ou 10 ou 15, téléchargez des petites pièces pour le jeu et soumettez à chaque fois le journal de progression du jeu et validez-le avec les valeurs possibles et les codes de hachage. Cela pourrait peut-être permettre de fermer automatiquement les comptes piratés.

Protection du sortingcheur furtif

3) Vous pouvez aussi simplement compter les “petits drapeaux d’avertissement” que vous placez dans le jeu. Ne vous contentez pas de vérifier la “validation” au début, ne construisez pas ces indicateurs dans la logique même du jeu. Ne le faites pas casser le gameplay, car alors personne ne le cherchera. Ensuite, lorsque l’utilisateur a atteint le monstre de fin de niveau, vérifiez s’il y a des indicateurs d’avertissement consignés. Ceux-ci n’apparaîtront pas dans le jeu, donc l’utilisateur non averti avec une édition piratée pourrait jouer pendant des heures / jours et réaliser soudainement qu’il / elle ne pouvait pas finir le jeu ou passer au niveau suivant, car le jeu avait un “bug”. Ce que l’utilisateur ne savait pas, c’est que ce bogue ne se produit que sur les clients piratés.

Conclusion

Soyez plus intelligent que les craquelins. Les tromper en leur faisant croire que le travail était fait. Faites une copie de protection et sachez que les crackers les plus avancés pourront le supprimer. Mais ils ne veulent probablement pas jouer 50 niveaux pour vérifier si la fissure fonctionne également.

Une fois qu’ils se sont rendus compte de ce problème, ils pourraient aussi commencer à le casser. Mais si vous divisez le jeu en niveaux, vous pouvez toujours valider entre chaque téléchargement de pack. Donc, une fois que vous recevez des données de hachage client piratées, exécutez simplement une exception et plantez le jeu sur le client. Oups le jeu s’est écrasé. Dites pas parce que c’est piraté. Une erreur de programme peut survenir. 🙂

Encore une fois, ce n’est pas une preuve de piratage. Mais cela pourrait les ennuyer assez pour passer au jeu suivant. Enfin, vous pouvez également mettre à jour régulièrement le jeu et seule la dernière version doit pouvoir “poster les enregistrements”, etc. pour que les utilisateurs actifs se mettent à jour pour restr dans la boucle.

J’ai fait de la décompilation et du piratage apk pendant un moment (pas de warez, mais des mods et des hacks principalement dans les applications google et le framework Android, respectant toujours les règles de xda-developers).

Une fois que vous avez appris à lire le smali, c’est presque comme lire le code java original (mais avec beaucoup plus de LOC). Ainsi, tout code que vous ajoutez pour vérifier les clés peut être trouvé et supprimé ou remplacé. Vous n’avez même pas besoin de recomstackr à chaque fois pour en éliminer plus d’un (certaines recherches font des miracles pour trouver des morceaux de code similaires) et, même si des cycles de compilation / recompilation sont nécessaires pour les trouver, cela ne prend qu’une ou deux minutes décomstackr: tout est automatisé par apktool et encore plus par apkmanager.

Cela dit, je vous suggère de mettre en place une sorte de table de notation en ligne ou similaire, et lorsque l’utilisateur regarde le tableau des scores en ligne, vous pouvez vérifier le code de hachage que vous avez implémenté et le comparer au compte gmail associé. De cette façon, vous pouvez signaler le piratage à Google et envoyer un message méchant à l’utilisateur du warez, en expliquant pourquoi cela est illégal.

Bien sûr, un nouveau hack pourrait être mis en place pour éliminer le tableau de scores, mais cela réduirait l’intérêt pour le warez.

Bonne chance.


Mettre à jour

Après avoir cherché à répondre à cette question: Injecter du code dans l’APK (à propos du mécanisme Amazon DRM), je peux vous expliquer comment Amazon protège les applications: elle inclut des méthodes pour vérifier la validité de l’installation partout (vous pouvez voir un exemple) de la façon dont ils le font dans ma réponse à cette question). Cela rendra toute tentative de pirater une application pas très difficile, mais extrêmement fastidieuse. Je pense que c’est un point fort: les pirates ne voudront pas passer trop de temps à faire autant de tâches répétitives: ce n’est pas difficile et c’est ennuyeux . La principale lacune que je vois dans cette approche est la possibilité de pirater l’application Amazon elle-même pour toujours retourner une réponse valide, bien sûr. Mais si vous mélangez vos contrôles de hachage actuels avec une sorte de contrôle en ligne dispersé parmi vos méthodes, je pense que les risques de piratage peuvent être considérablement réduits.

Tiré de ma solution de cet article Évitez apk fissuré

Implémentez votre propre bibliothèque de licences

Je vous renvoie également pour vérifier ceci à partir de l’enregistrement YouTube de Google I / O 2011:

Évasion des pirates et arrêt des vampires

MODIFIER:

Les notes de présentation des pirates en fuite et de l’arrêt des vampires

Quelques points de base

  • Modifier le LVL
  • Mettre en œuvre la résistance à l’aarmion LVL
  • Utiliser l’ obscurcissement
  • Ajouter une reflection

Je sais que tu n’es pas vraiment dans l’obscurité, mais j’ai vraiment besoin de réagir à ceci:

De là, je ne veux pas brouiller notre code comme je l’ai vu auparavant. Je veux quelque chose d’un peu plus solide et je veux aussi apprendre à le faire correctement.

ProGuard est très fiable dans mon expérience, et cela bien que j’utilise quelques fonctionnalités avancées telles que AIDL et un code natif qui appelle la méthode Java. Il faut un peu de travail pour lire la documentation et faire les choses correctement, mais une fois que vous êtes là, ProGuard est extrêmement fiable et optimise également votre application.

La sécurité personnalisée et les astuces cryptographiques sont bonnes, mais sans obscurcir, c’est comme jeter une pierre dans l’eau à mon humble avis.

J’ai utilisé ProGuard en production pendant plusieurs mois et cela fonctionne parfaitement.

Si vous souhaitez apprendre, lisez attentivement le manuel de ProGuard, testez-le et inspectez ses journaux de sortie.

La chance qu’il y ait plus de programmeurs talentueux que VOUS (s’applique à tous les programmeurs), est de 100%. Et si cela est vrai, vous ne pouvez pas réparer le piratage. Mais vous pouvez y consacrer autant de temps et d’efforts pour faire faillite.

Si vous voulez gagner de l’argent, vous devez faire des recherches sur votre groupe d’utilisateurs cible et sur la science du comportement. Vous devez faire en sorte que les utilisateurs qui jouent gagnent de l’argent et c’est tout.

De plus, vous avez tout faux. Les pirates sont les membres les plus actifs de votre base d’utilisateurs, vous vous comportez simplement comme vous ne les aviez pas l’intention.

Prenez des jeux Zynga sur Facebook, par exemple, pensez-vous que vous êtes piraté? – Bien sûr, et environ +100000 joueurs ne jouent que parce que tu peux utiliser des robots, ça automatise tout.

Avoir un énorme botnet de base d’utilisateurs actifs, permet aux joueurs de type archiveur de jouer au jeu – et si vous jouez et que ça a l’air cool, alors Avarage Joe voudra aussi jouer. Si Avarage Joe joue, alors ses amis voudront peut-être jouer, et vous ne vous soucierez probablement plus de rien, alors être meilleur que son ami, tuer le temps ou avoir quelque chose à discuter. Avare Joe amis seront probablement disposés à payer pour être mieux que Joe, mais vous voudriez plutôt investir dans quelque chose qui les rend capables d’être meilleurs.

En outre, si la valeur réelle consiste à jouer au jeu gratuitement, les utilisateurs qui utilisent la version piratée gratuitement n’auront probablement jamais payé. Mais tu es Avarage Joes et leurs amis pourraient le faire. Donc, c’est comme la publicité la moins chère que vous pouvez avoir. Si vous voulez gagner de l’argent avec votre grande base d’utilisateurs, faites simplement de nouvelles versions du jeu avec de petits changements de niveaux et de graphiques.

Le piratage sera toujours un problème. En général, les crackers jouent mieux que les développeurs à ce jeu Security Though Obscurity .

Quelle question intéressante et inquiétante. 🙂 Comme un exercice, vous pourriez essayer de publier une application via Amazon; ils ont leur propre mécanisme de DRM; Je me demande si cela fonctionne mieux que ProGuard …

À mon avis, l’un des éléments clés consiste à répartir le code afin qu’il ne soit pas au même endroit. Si vous avez une fonction appelée LicenseChecker.checkLicense () qui récupère la licence et la vérifie, vous pouvez être sûr qu’elle sera désactivée rapidement.

Le seul avantage que vous avez est que les crackers ne peuvent pas voir les commentaires de votre code (et, si vous les obscurcissez, les noms de méthodes / variables), alors trouvez quelque chose de bizarre. Dans le onCreate () d’une activité, vous obtenez l’ID de licence. Dans onResume (), vous obtenez une autre valeur à vérifier. Peut-être créer un fil et faire des vérifications là-bas. Et puis, un autre morceau de code non pertinent (peut-être le contrôle du joueur) pourrait prendre la valeur et la comparer et stocker le résultat quelque part. Ensuite, trois autres parties de code non pertinentes vérifient toutes indépendamment cette valeur et désactivent votre application si elle ne correspond pas.

Maintenant, je devrais dire dès le départ que cela peut causer des maux de tête pour vous-même – de toute évidence, le code encombré et méchant est plus difficile à déboguer et enclin à provoquer des erreurs. Dans le pire des cas, vous créez des faux positifs dans les applications légitimement achetées.

Et, bien sûr, tout peut être inversé – une fois que les pirates ont trouvé l’endroit où l’application est désactivée, ils retracent la valeur en cours de lecture. Ils peuvent alors retracer l’endroit où ils sont stockés et retracer leur retour ….. ou, bien plus facilement, ils peuvent simplement désactiver le contrôle final (c’est pourquoi j’ai recommandé 3 endroits différents, tous déclencheurs retardés). La sécurité ne vaut que le maillon faible.

Vous ne pourrez pas arrêter le piratage. Votre meilleur pari est de retarder la diffusion d’une copie piratée jusqu’à ce que le battage médiatique initial concernant votre application se soit calmé.

Tout d’abord, je ne me considère pas comme un pro dans le domaine de la sécurité SW, mais:

Je pense qu’une chose importante est de laisser l’application dépendre, dans certaines parties, du contrôle de signature. Ne le laissez pas affecter immédiatement, mais laissez-le définir des indicateurs ou modifier certaines valeurs. plus tard, utilisez ces drapeaux, vérifiez-les, laissez leur absence / erreur provoquer une exception quelconque qui mettra fin à l’application. Tant que le contrôle de signature n’est pertinent que pour le moment, il est facile de le contourner, de supprimer la ligne, une fois qu’elle touche plus de zones du code, votre application devient plus difficile (ou moins facile …) à pirater. De même, à mon avis, tous les chèques ne devraient pas appeler la même routine pour la sanction, car cela facilitera également la recherche du mécanisme de protection et sa résiliation.

Bien sûr, la sanction à prendre en cas de SW illégal peut varier, vous pouvez vouloir planter l’application lorsqu’elle est utilisée illégalement, mais vous pouvez aussi continuer à le faire fonctionner et n’envoyer que des messages demandant à l’utilisateur d’acheter une copie légale. de l’application.

Si c’est juste ce que vous ne vouliez pas entendre, alors je suis désolé pour votre temps 🙂

Les utilisateurs d’Android vont simplement accepter la douleur des maisons de téléphone constantes. La seule application Android sécurisée est une application Android toujours connectée.

Ceci est dû en grande partie au refus de Google de bloquer l’installation, comme Apple. Sur IOS, vous devez jailbreaker le téléphone. Sur Android, vous pouvez charger n’importe quel fichier APK sur une installation d’usine.

Conservez certains / la plupart / tous vos contenus sur le serveur; le livrer en morceaux; valider la licence / session à chaque appel.

Il sera incroyablement difficile d’inhiber ce genre de comportement. Tout ce qui est géré du côté client est piratable en utilisant la décompilation et le modding d’APK, l’édition de mémoire avec des logiciels tels que Game Guardian etc.

La seule façon de voir à quel point le contourner serait de créer un jeu en ligne à la place. Ou avoir certaines fonctions gérées en ligne. Ou si le cryptage anti-violation comme denuvo est toujours disponible pour Android / iOS.