Nous avons donc traversé cela plusieurs fois maintenant, nous sortons un jeu (pour pas cher) et quelqu'un le pirate et le met sur un miroir. Nous configurons des alertes Google pour toutes nos applications, afin que nous soyons informés tous les jours qui fait le piratage. Jusqu'à présent, nous avons mis en œuvre le service de licence comme Google l'a suggéré, notre sel est créé au hasard chaque fois que la licence est initiée avec l'ID d'appareil unique. Nous exécutons le service de vérification une fois, lorsque l'application est lancé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 à 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 lance la vérification.
De là, je ne veux pas obscurcir notre code comme je l'ai déjà vu cassé. 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 à ce stade, car seulement 2% des gens chercheront un jour une version piratée.
Jusqu'à présent, par moi-même, j'ai mis au point un générateur de nombres aléatoires qui est placé dans plusieurs zones de démarrage du jeu. Une fois lancée (disons 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, compiler, éliminer, compiler. Cette méthode est cependant toujours craquable ... alors que suggérez-vous les gars? Encore une fois, je suis vraiment intéressé par ce processus de sécurité, alors veuillez éduquer, ne pas en faire une discussion sur l'obscurcissement ou la vérification périodique basée sur un horodatage.
Merci
Réponses:
Mon idée n'est pas une preuve de piratage, mais pourrait supprimer certains de l'intérêt pour le piratage du jeu.
Modèle Freemium
1) Rendez les 5 à 10 premiers niveaux gratuits pour que les gens puissent apprendre le jeu et s'amuser sans payer. Moins voudra pirater le premier niveau et le jeu se répandra encore plus loin par le modèle Freemium.
Shareware / levelpacks en cluster
2) Laissez une partie des niveaux de jeu ou de la logique rester en ligne. Par exemple. lorsque vous atteignez le niveau 5, 10 ou 15, téléchargez de petites pièces pour le jeu, et à chaque fois soumettez le journal de progression du jeu et validez-le par rapport aux valeurs possibles + hashcodes. Cela pourrait peut-être permettre de fermer automatiquement les comptes piratés.
Protection contre les tricheurs furtifs
3) Vous pouvez aussi simplement compter les "petits drapeaux d'avertissement" que vous placez dans le jeu. Ne vérifiez pas simplement la "validation" au début, ne construisez pas ces indicateurs dans la logique du jeu elle-même. Ne le faites pas casser le gameplay, car alors personne ne le recherchera. Ensuite, lorsque l'utilisateur a atteint la fin du monstre de niveau, vérifiez s'il y avait des indicateurs d'avertissement enregistrés. Ceux-ci n'apparaîtront pas dans le jeu, donc l'utilisateur inconscient avec une édition piratée pourrait jouer pendant des heures / jours et se rendre compte soudainement qu'il / elle ne pouvait pas terminer le jeu ou passer au niveau suivant, parce que 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 crackers. Faites-leur croire que le travail a été fait. Faites une protection contre la copie 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 le crack fonctionne également complètement.
Une fois qu'ils ont réalisé ce problème, ils pourraient aussi commencer à le résoudre. Mais si vous divisez le jeu en packs de 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é. Ne dites pas que c'est 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 suffisamment pour passer au prochain match. Enfin, vous pouvez également publier des mises à jour régulières pour le jeu et seule la dernière version devrait pouvoir «publier les enregistrements», etc., de sorte que les utilisateurs actifs devraient se mettre à jour pour rester informés.
la source
Je fais de la décompilation et du piratage d'apk depuis un certain temps (pas warez, mais des mods et des hacks principalement pour les applications Google et le framework Android, toujours en conformité avec les politiques de xda-développeurs).
Une fois que vous avez appris à lire 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 recompiler à 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, c'est juste une question d'une ou deux minutes à décompiler: tout est automatisé par apktool et encore plus par apkmanager.
Cela dit, je vous suggère de mettre en œuvre une sorte de tableau de notation en ligne ou similaire, et lorsque l'utilisateur consulte le tableau de score en ligne, vous pouvez vérifier le code de hachage que vous avez implémenté et le comparer avec le compte gmail associé. De cette façon, vous pouvez signaler le piratage à Google et envoyer un message désagréable à l'utilisateur du warez, expliquant pourquoi c'est illégal.
Bien sûr, un nouveau hack pourrait être implémenté pour éliminer le tableau de score, mais cela réduirait l'intérêt pour le warez.
Bonne chance.
Mettre à jour
Après avoir recherché pour répondre à cette question: Injection de code dans APK (vraiment sur le mécanisme Amazon DRM), je peux dire un peu comment Amazon protège les applications: il inclut des méthodes pour vérifier la validité de l'installation partout (vous pouvez voir un exemple comment ils le font dans ma réponse à cette question). Cela rendra toute tentative de piratage d'une application pas très difficile, mais extrêmement fastidieuse. Je pense que c'est un point fort: les hackers ne voudront pas passer autant de temps à faire autant de tâches répétitives: ce n'est pas difficile et c'est ennuyeux. Le principal défaut que je vois dans cette approche est la possibilité de pirater l'application Amazon elle-même pour toujours renvoyer une réponse valide, bien sûr. Mais, si vous mélangez vos vérifications de hachage actuelles avec une sorte de vérification en ligne dispersée parmi vos méthodes, je pense que les chances qu'il soit piraté peuvent être considérablement réduites.
la source
Tiré de ma solution de ce post Évitez apk fissuré
Implémentez votre propre bibliothèque de licences
Je vous recommanderais également de vérifier ceci à partir de l'enregistrement YouTube de Google I / O 2011:
Eviter les pirates et arrêter les vampires
ÉDITER:
Les notes de présentation de Evading Pirates et Stop Vampires
Quelques points clés de base
la source
#%3ar.page.15
des URL. Si vous n'êtes pas automatiquement redirigé vers cette page, assurez-vous de regarder le lien pour voir où / quelle page vous devriez regarder.Je sais que vous n'êtes pas vraiment obscurci, mais j'ai vraiment besoin de réagir à ceci:
ProGuard est très fiable d'après mon expérience, et cela bien que j'utilise quelques fonctionnalités avancées telles que AIDL et du 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.
Les astuces de sécurité / cryptographiques personnalisées sont bonnes, mais sans obscurcissement, c'est comme jeter une pierre dans l'eau à mon humble avis.
J'utilise ProGuard en production depuis de nombreux mois et cela fonctionne parfaitement.
Si vous aimez apprendre, lisez attentivement le manuel ProGuard, testez-le et inspectez ses journaux de sortie.
la source
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 beaucoup d'argent, vous devez faire des recherches sur votre groupe d'utilisateurs cible et la science du comportement. Vous devez inciter les utilisateurs à jouer qui rapportent de l'argent neuf, et c'est tout.
En plus, vous avez tout faux. Les pirates sont les membres les plus actifs de votre base d'utilisateurs, ils se comportent simplement d'une manière que vous ne vouliez pas qu'ils fassent.
Prenez les jeux Zynga sur Facebook par exemple, pensez-vous que vous vous faites pirater? - Bien sûr, et environ +100000 joueurs ne jouent que, car ils peuvent utiliser des robots, qui automatisent tout.
Le fait d'avoir un énorme botnet de base d'utilisateurs actifs de personnes réelles incite les joueurs de type archiveur à vouloir jouer au jeu - et si vous jouez, et que cela a l'air cool, Avarage Joe voudra également jouer. Si Avarage Joe joue, alors ses amis voudront peut-être jouer, et vous ne vous soucierez probablement de rien d'autre, alors être meilleur que son ami, tuer le temps ou avoir quelque chose à discuter. Les amis d'Avarage Joe seront probablement disposés à payer pour être meilleurs que Joe, mais ils aimeraient plutôt investir dans quelque chose qui les rend capables d'être meilleurs.
De plus, si la valeur réelle est de jouer au jeu gratuitement, les utilisateurs qui utilisent la version gratuite piratée n'auront probablement jamais payé pour cela. Mais vous êtes Avarage Joes et leurs amis pourraient bien. C'est donc comme la publicité la moins chère que vous puissiez avoir. Si vous voulez gagner de l'argent avec votre grande base d'utilisateurs, créez simplement de nouvelles versions du jeu avec de petits changements aux niveaux et aux graphiques.
la source
Le piratage sera toujours un problème. En gros, les crackers sont meilleurs pour jouer à ce jeu Security Through Obscurity que les développeurs.
la source
Quelle question intéressante et dérangeante. :-) Comme exercice, vous pouvez essayer de publier une application via Amazon; ils ont leur propre mécanisme DRM; Je me demande si cela fonctionne mieux que ProGuard ...
la source
L'un des éléments clés à mon avis est d'étaler le code pour qu'il ne soit pas tout 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 obscurcissez, les noms de méthode / variable), 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 pour la vérifier. Peut-être créer un fil et y faire des vérifications. 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 morceaux de code non pertinents vérifieront tous indépendamment cette valeur et désactiveront votre application si elle ne correspond pas.
Maintenant, je dois dire d'avance que cela peut vous causer des maux de tête - évidemment, un code encombré et désagréable est plus difficile à déboguer et a tendance à provoquer des erreurs. Dans le pire des cas, vous créez des faux positifs dans les applications achetées légitimement.
Et, bien sûr, tout peut être rétro-conçu - une fois que les crackers ont trouvé l'endroit où l'application est désactivée, ils retracent la valeur à partir de laquelle ils sont lus. Ils pourraient ensuite retracer où il est stocké, et retracer cela ..... ou, beaucoup plus facile, ils peuvent simplement désactiver la vérification finale (c'est pourquoi j'ai recommandé 3 endroits différents, tous déclencheurs différés). La sécurité est aussi bonne que le maillon le plus 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é.
la source
Premièrement, 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 / incorrection provoquer une exception qui mettra peut-être fin à l'application. Tant que la vérification de la signature n'est pertinente que pour le moment, il est facile de la 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, comme je le vois, tous les contrôles ne devraient pas appeler la même routine pour la sanction, car cela permettra également de trouver facilement le mécanisme de protection et d'y mettre fin.
Bien sûr, la sanction à prendre en cas de logiciel illégal peut varier, vous voudrez peut-être planter l'application lorsqu'elle est utilisée illégalement, mais vous pouvez aussi bien vouloir la maintenir en cours d'exécution, et n'envoyer qu'un message demandant à l'utilisateur d'acheter une copie légale. de l'application.
Si c'est juste ce que vous ne vouliez pas entendre, je suis désolé pour votre temps :)
la source
Les utilisateurs d'Android vont simplement devoir accepter la douleur des téléphones portables constants. La seule application Android sécurisée est une application Android toujours connectée.
Ceci est, en grande partie, dû au refus de Google de verrouiller l'installation, comme Apple l'a fait. Sur IOS, vous devez jailbreaker le téléphone. Sur Android, vous pouvez charger n'importe quel APK sur un stock, installé en usine.
Conservez une partie / la plupart / tout votre contenu sur le serveur; le livrer en morceaux; valider la licence / session à chaque appel.
la source
Il sera incroyablement difficile d'empêcher ce genre de comportement. Tout ce qui est géré côté client est piratable à l'aide de la décompilation et du modding APK, de l'édition de la mémoire avec un logiciel tel que Game Guardian ect.
La seule façon dont je peux voir à quel point le contourner partiellement serait de créer un jeu en ligne à la place. Ou faites gérer certaines fonctions en ligne. Ou si le cryptage anti-falsification comme denuvo est toujours disponible pour Android / iOS.
la source