62 votes

Réduire le piratage des applications iPhone

Quelles sont les méthodes acceptées pour réduire le piratage des applications iPhone, qui ne violent pas le processus d'évaluation d'Apple ?

Si mon application "téléphone à la maison" pour fournir l'identifiant unique de l'appareil sur lequel elle fonctionne, quelles autres informations devrais-je collecter (par exemple, l'identifiant Apple utilisé pour acheter l'application) pour créer un jeton d'enregistrement valide qui autorise l'utilisation de l'application ? De même, quel code devrais-je utiliser pour accéder à ces données supplémentaires ?

Quelles semblent être les meilleures approches techniques disponibles pour ce problème, à l'heure actuelle ?

(Veuillez vous abstenir de réponses non programmées sur le fait que le piratage est inévitable, etc. Je sais que le piratage est inévitable. Je suis intéressé par réponses basées sur la programmation qui traitent de la manière de la réduire. Merci d'avance pour votre compréhension).

48voto

David Wong Points 5773

UPDATE

S'il vous plaît visitez et lisez

Merci à chpwn dans les commentaires.

Un code qui est bien trop vieux ! - 11 mai 2009

Pour l'instant, il existe un moyen plus simple de détecter si votre application iPhone a été piratée. Cela ne vous oblige pas à vérifier les identifiants uniques de l'iPhone par rapport à une liste d'identifiants acceptés.

Actuellement, il y a trois choses que les crackers font :

  1. Modifier le fichier Info.plist
  2. Décoder le fichier Info.plist de binaire à UTF-8 ou ASCII
  3. Ajouter une paire de clés à Info.plist{SignerIdentity, Signature d'application Apple iPhone OS}

Le dernier point est le plus facile à vérifier avec ce code :

NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *info = [bundle infoDictionary]; 
if ([info objectForKey: @"SignerIdentity"] != nil) 
{ /* do something */  }

En général, nous n'avons pas de SignerIdentity dans aucune des applications App Store que nous construisons, donc la vérification de nil puis l'exécution des instructions de set devraient rendre la tâche plus difficile aux crackers et aux pirates.

Je ne peux pas m'attribuer le mérite de cette initiative, alors visitez les sites suivants Comment déjouer les pirates de l'IPA de l'iPhone. Vous y trouverez de nombreuses informations sur le piratage de l'iPhone et les moyens de l'enrayer.

5voto

samvermette Points 20225

Comme l'a souligné Andrey Tarantsov dans les commentaires, rechercher la chaîne "SignerIdentity" dans le binaire (en utilisant une application comme HexEdit) et la remplacer est assez facile.

Vous pourriez coder cette chaîne, mais là encore, il suffit de changer un seul caractère pour que l'application ne cherche plus la clé "SignerIdentity", mais une autre clé qui n'existe probablement pas (et qui est donc nulle). Cette clé étant nulle, l'application pense qu'elle n'est pas piratée (puisque SignerIdentity devrait être nulle si l'application n'est pas piratée).

Au lieu de cela, je préfère vérifier la taille du fichier info.plist et la comparer à une valeur de référence. J'ai remarqué que les builds de Simulator et de Devices n'ont pas la même taille de fichier info.plist. Il en va de même pour les builds Debug, Release et Distribution. Par conséquent, assurez-vous que vous définissez la valeur de référence en utilisant la taille du fichier info.plist pour le build de distribution des dispositifs.

Comment rechercher le taille des fichiers au lancement :

0voto

Prashant Rane Points 381

Il semble que la sauvegarde de la somme de contrôle MD5 de Plist et la vérification de CryptID devraient faire l'affaire jusqu'à un certain temps.

-1voto

Anders Odhner Points 1

Vérifiez iTunesMetadata.plist pour la date d'achat, car parfois, lorsqu'une application est piratée, cette date est changée en quelque chose de scandaleux.

Vérifiez également si le champ "nom de l'acheteur" existe. D'après mon expérience du piratage d'applications à usage personnel, ce champ est généralement supprimé. Si quelqu'un sait comment fonctionne la protection anti-vide de Temple Run, vous pourriez l'utiliser en conjonction avec une protection que poedCrackMod ne peut pas obtenir (googlez poedCrackMod, créez un compte hackulo.us, allez au dev center, cherchez poedCrackMod, installez-le sur votre iDevice).

Clutch, qui ne crackera pas les choses avec une protection de type Temple Run, a une fonction appelée OverDrive destinée à faire taire la détection de crack d'une application. poedCrackMod a LamestPatch, qui n'est pas aussi bon. De plus, poedCrackMod est un bash script open source qui peut être rétroconçu. Pour résumer, vous avez une application qui a une protection contre la copie qui ne peut pas être contournée avec clutch / overdrive mais qui peut être craquée avec poedCrackMod. Cependant, poedCrackMod ne peut pas contourner les contrôles de piratage de l'application. Il est difficile de corriger manuellement les contrôles d'intégrité dans l'exécutable de l'application. Votre application est donc difficile à pirater.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X