Domanda

Come si determina (di programmazione) se un iPhone / iPod è:

  1. Jail rotto
  2. Esecuzione di una copia di cracking del software

Pinch media grado di rilevare se un telefono è in prigione rotto o il software in esecuzione è incrinato, qualcuno sa come fanno questo? Ci sono delle librerie?

È stato utile?

Soluzione

qui è uno dei modi per rilevare se il vostro App era incrinato.

In breve: la rottura di solito richiede cambiare l'Info.plist. Dal momento che è normale file si ha accesso a, è abbastanza facile da determinare tali cambiamenti.

Altri suggerimenti

Rilevamento di un telefono jailbroken è facile come verificare la presenza della cartella di /private/var/lib/apt/. Anche se questo non rileva gli utenti Installer-solo, ormai la maggior parte sono hanno installato Cydia, Icy o RockYourPhone (ognuno dei quali usano apt)

Per rilevare gli utenti pirata, il modo più semplice è quello di verificare la presenza di una chiave SignerIdentity in Info.plist della tua app. Dal momento che i cracker esperti possono trovare facilmente i controlli [[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] standard, è meglio oscurare queste chiamate utilizzando il runtime Objective C disponibile tramite #import <objc/runtime.h> o utilizzare gli equivalenti alternativi.

Solo per espandere la risposta di zakovyrya, è possibile utilizzare il seguente codice:

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

Tuttavia, quando il jailbreaking tua applicazione può HexEdit vostro programma e, come tale, si potrebbe modificare la stringa @ "SignerIdentity" per leggere @ "siNGeridentity" o qualcosa d'altro, che sarebbe tornato a zero, e quindi passare.

Quindi, se si utilizza questo (o uno qualsiasi degli altri suggerimenti da http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html ):

  • Non si aspettano di lavorare per sempre
  • Non utilizzare queste informazioni per rompere / ostacolare la vostra applicazione in qualsiasi modo (altrimenti avranno motivo di HexEdit, quindi l'applicazione non parte so che è jailbroken)
  • Probabilmente saggio offuscare questo pezzo di codice. Ad esempio, si potrebbe mettere il base64 codificato stringa invertita nel codice, e poi decodificarlo in app invertendo il processo.
  • Confermi la convalida più avanti nel codice (ad esempio, quando ho detto SignerIdentity, lo ha fatto in realtà dire SignerIdentity o siNGeridentity?)
  • Non dire alla gente su un sito web pubblico come StackOverflow come lo si fa
  • Tenete a mente è solo una guida e non è infallibile (né a prova di cracker di!) -. Con un grande potere derivano grandi responsabilità

Per espandere il Yonel di e commenti di cui sopra Benjie:

1) metodo di Landon Fuller fare affidamento su di controllo Crittografia, legata sopra per Yonel, sembra essere l'unico ancora non sconfitto con strumenti di cracking automatizzati. Non vorrei essere eccessivamente preoccupati di Apple modificare lo stato della LC_ENCRYPTION_INFO intestazione in qualunque momento presto. Essa sembra avere alcuni effetti imprevedibili su iPhone jailbroken (anche quando l'utente ha acquistato una copia ...)

In ogni caso, io non intraprendere alcuna azione eruzione cutanea nei confronti di un utente in base a quel codice ...

2) A complemento di Benjie commento re. offuscamento (una necessità assoluta quando si tratta di eventuali valori di stringa nel codice anti-pirateria): un modo simile, ma forse ancora più facile è quello di controllare sempre una salato hash versione del valore che si sta cercando. Per esempio (anche se questo controllo non è più efficiente è), si dovrebbe controllare il nome chiave di ogni MainBundle come md5 (keyName + "po 'di sale segreto") contro la costante appropriata ... Piuttosto semplice, ma sicuro di sconfiggere ogni tentativo di localizzare il stringa.

Naturalmente, questo richiede di essere in grado di interrogare indirettamente il valore che si desidera confrontare (ad esempio passando attraverso una matrice che lo contiene). Ma questo è il caso più frequente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top