web-dev-qa-db-fra.com

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'ID de périphérique unique sur lequel elle s'exécute, quelles autres informations dois-je collecter (par exemple, l'ID Apple utilisé pour acheter l'application) pour créer un jeton d'enregistrement valide autorisant l'utilisation de l'application? ? De même, quel code utiliserais-je pour accéder à ces données supplémentaires?

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

(Veuillez vous abstenir de réponses non programmées sur la question de savoir si le piratage est inévitable, etc. Je sais que le piratage est inévitable. Je m'intéresse aux réponses basées sur la programmation qui expliquent comment le réduire. Merci à l'avance pour votre compréhension.)

62
Alex Reynolds

METTRE À JOUR

S'il vous plaît visitez et lisez

Merci à chpwn dans les commentaires.

Code qui est trop vieux! - 11 mai 2009

Pour le moment, il existe un moyen plus simple de détecter si votre application iPhone est 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 font les crackers:

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

Le dernier 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 règle générale, nous n'avons pas SignerIdentity dans les applications de l'App Store que nous construisons. Par conséquent, vérifier si rien n'a été fait, puis exécuter les instructions, ce qui compliquera la tâche des pirates et des pirates.

Je ne peux pas prendre le crédit pour cela alors s'il vous plaît visitez Comment contrecarrer iPhone IPA Crackers. Il existe de nombreuses informations sur le piratage sur iPhone et sur la manière de le limiter.

48
David Wong

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

Vous pouvez encoder cette chaîne, mais tout ce que vous avez à faire est d'en changer un caractère et l'application ne cherchera plus la clé "SignerIdentity" mais une autre clé qui n'existe probablement pas (elle est donc nulle ). Cette clé étant nulle, l'application pense qu'elle n'est pas fissurée (puisque SignerIdentity devrait être nul si l'application n'est pas fissurée).

Au lieu de cela, je préfère vérifier la taille de l'info.plist et le comparer à une valeur de référence. J'ai remarqué que les versions de Simulator et de Devices n'avaient pas la même taille de fichier info.plist. Il en va de même pour les versions Debug, Release et Distribution. Par conséquent, assurez-vous de définir la valeur de référence à l'aide de la taille du fichier info.plist pour la construction de la distribution du périphérique.

Comment rechercher la taille de fichier au lancement

5
samvermette

Il semblerait que l’enregistrement de la somme de contrôle MD5 de Plist et la vérification de CryptID devraient suffire jusqu’à un certain temps.

0
Prashant Rane