Question

Comment déterminez-vous (programme) si un iPhone / iPod est:

  1. prison cassé
  2. Exécution d'une copie fissurée de votre logiciel

Pincez médias peut détecter si un téléphone est cassé ou prison le fonctionnement du logiciel est fissuré, personne ne sait comment ils le font? Y a-t-il des bibliothèques?

Était-ce utile?

La solution

est l'une des façons de détecter si votre application a été fissuré.

En bref: la fissuration nécessite généralement de changer le Info.plist. Comme il est un fichier régulier que vous avez accès, il est assez facile de déterminer ces changements.

Autres conseils

La détection d'un téléphone jailbreaké est aussi facile que de vérifier la présence du dossier /private/var/lib/apt/. Bien que cela ne détecte pas la plupart ont les utilisateurs de l'installateur seulement, maintenant ont installé Cydia, ou Icy RockYourPhone (tous qui utilisent apt)

Pour détecter les utilisateurs pirates, le plus simple est de vérifier la présence d'une clé SignerIdentity dans Info.plist de votre application. Étant donné que les craquelins avancés peuvent facilement trouver les contrôles standard [[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"], il est préférable de masquer ces appels à l'aide du moteur d'exécution Objectif C disponible via #import <objc/runtime.h> ou utiliser des équivalents alternatifs.

Juste pour développer la réponse de zakovyrya, vous pouvez utiliser le code suivant:

if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) {
  // Jailbroken
}

Cependant, la personne jailbreaking votre application peut hexedit votre programme et en tant que tels, ils pourraient modifier la chaîne @ « SignerIdentity » pour lire @ « siNGeridentity » ou quelque chose d'autre qui reviendrait nul, et passer ainsi.

Donc, si vous utilisez ce (ou l'un des autres suggestions de http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html ):

  • Ne vous attendez pas à travailler pour toujours
  • Ne pas utiliser ces informations pour briser / entraver votre application de quelque manière que (sinon ils ont des raisons de hexedit, donc votre application ne saura pas qu'il est jailbreaké)
  • Probablement sage de ce bit obfusquer du code. Par exemple, vous pouvez mettre la chaîne base64 inversée codée dans votre code, puis le décoder dans l'application en inversant le processus.
  • Valider votre validation ultérieurement dans votre code (par exemple quand j'ai dit SignerIdentity, disait-elle en fait SignerIdentity ou siNGeridentity?)
  • Ne pas dire aux gens sur un site Web public comme stackoverflow comment vous le faites
  • Gardez à l'esprit, il est seulement un guide et est pas infaillible (ni pirate épreuve!) -. Avec une grande puissance vient une grande responsabilité

Pour développer des Yonel et de commentaires de Benjie ci-dessus:

1) la méthode de Landon Fuller se fondant sur l'enregistrement de cryptage, lié ci-dessus par Yonel, semblent être le seul pas encore vaincu par des outils de craquage automatisés. Je ne serais pas trop inquiet au sujet d'Apple changer l'état de l'en-tête LC_ENCRYPTION_INFO dans un proche avenir. Il ne semble pas avoir des effets imprévisibles sur les iphones jailbreakés (même lorsque l'utilisateur a acheté une copie ...)

En tout cas, je ne prendrais aucune action téméraire contre un utilisateur en fonction de ce code ...

2) Pour compléter re commentaire de Benjie. obscurcissement (une nécessité absolue quand traiter toutes les valeurs de chaîne dans votre code anti-piratage): un similaire, mais peut-être même plus simple est de toujours vérifier salés hashed version du la valeur que vous recherchez. Par exemple (même si ce contrôle est plus efficace), vous vérifier chaque nom de la clé de mainBundle comme md5 (keyName + « un peu de sel secret ») ... plutôt de base contre la constante appropriée, mais assurez-vous de vaincre toute tentative de localiser le string.

Bien sûr, cela vous oblige à être en mesure d'interroger indirectement la valeur que vous voulez comparer (par exemple en passant par un tableau contenant). Mais c'est le plus souvent le cas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top