Comment puis-je détecter qu'une application iOS est en cours d'exécution sur un téléphone jailbreaké?
Si je veux que mon application à se comporter différemment sur un iPhone jailbreaké, comment pourrais-je aller sur la détermination de cette?
OriginalL'auteur Ben Gottlieb | 2009-01-05
Vous devez vous connecter pour publier un commentaire.
Cela dépend de ce que tu veux dire par jailbreak. Dans les cas les plus simples, vous devez être en mesure de voir si Cydia est installé et aller par que - quelque chose comme
Pour piraté les noyaux, c'est un peu (beaucoup) plus impliqués.
Notez que tous les utilisateurs ont Cydia installé, ce n'est pas une bonne case, et vous devriez plutôt vérifier quelque chose comme /bin/bash que /tout/ utilisateurs /seront/ ont.
Où est-apt stocker ses informations? Ou pourrais-je viens de l'appeler une commande system() et de le découvrir. Je veux savoir si ils ont de certaines applications, et s'ils en ont, alors restreindre l'application
À ce stade, presque tous les utilisateurs n'ont Cydia. C'est probablement suffisant pour vérifier que maintenant. Toutefois, si vous souhaitez un 100% de contrôle fiable, vous aurez envie d'utiliser un kernel-based case comme ci-dessous.
FWIW le fichier contrôles sont triviales à contourner. On peut utiliser mobilesubstrate à crochet
fileExistsAtPath:
et faire revenirNO
pour le chemin d'accès spécifique que vous consultez.OriginalL'auteur wisequark
Vérifier le chemin d'accès au fichier
/Applications/Cydia.app
n'est pas autorisé sur un téléphone normal? Je n'ai jamais entendu parler d'Apple, la détection et le rejet d'une application pour elle, mais Apple est imprévisible. Cydia a un schéma d'URL cydia:// qui peuvent être légalement vérifié avec UIApplicationcanOpenURL:
cette chaîne ne peut être altérée lorsque l'application est fissuré?
Pour iOS9.0+ vous devez également ajouter LSApplicationQueriesSchemes clé dans l'app plist. Sinon canOpenURL renverra toujours false.
OriginalL'auteur Mark Johnson
Vérifier si le noyau est cassé n'est pas beaucoup plus impliqués.
Jailbreaking fait le noyau de la signature vérification de code signé toujours le rapport que le code est correctement signé, ininterrompue des téléphones ne peuvent pas exécuter du code avec une mauvaise signature.
Donc, inclure un exécutable séparé dans l'application avec une mauvaise signature. Il pourrait juste être un 3-programme en ligne a main() et une valeur de retour. Compiler le fichier exécutable sans signature de code (de la désactiver dans les Paramètres de Projet->Build) et signe avec une autre clé à l'aide de la "codesign" de l'utilitaire de ligne de commande.
Votre application exec l'exécutable séparé. Si votre programme ne peut pas obtenir la valeur de retour lors de l'exécution de l'exécutable séparé avec le mauvais sig, il est certainement en prison. Si l'exécutable séparé retourne UN-OK, le téléphone est certainement jailbreaké.
Peut-être que les choses ont changé, mais ne serait pas l'exécution d'un exécutable séparé vous empêcher d'être approuvé à l'app store?
Quelqu'un peut-il répondre sur les précédents commentaires? C'est des questions importantes.
OriginalL'auteur GregH
C'est un code qui combinent les quelques réponses que j'ai trouvé pour ce besoin, et vous donnera beaucoup plus élevé taux de réussite :
oui en effet..
Cette méthode doit être un inline fonction C, pas Objective-C. Il est trop facile de découvrir et de contourner l'Objective-C méthodes, surtout si vous l'appelez
isJailbroken
est-ce à couvrir les appareils jailbreaké à l'aide de Taig?
Je ne sais pas.. Vous êtes plus de invités à les consulter et de les ajouter ici une réponse 🙂
OriginalL'auteur Yossi
il n'y a pas de solution parfaite. Il y aura toujours quelqu'un qui va trouver un moyen de contourner votre protection, c'est juste un fait.
OriginalL'auteur Richard J. Ross III
Vous pouvez détecter si un appareil est Jailbreaké ou non en cochant la suivante:
Il y est une bibliothèque open source que j'ai créé à partir de plusieurs articles et livres. L'essayer sur GitHub!
OriginalL'auteur user3088680
J'ai retravaillé en Swift 2.3 de la solution fournie par @Yossi
OriginalL'auteur Alex Peda
La méthode la plus poussée je sais, c'est à l'aide de
objc_copyImageNames()
fonction. Elle retourne une liste de chargée des bibliothèques et comme la plupart des gens ont MobileSubstrate sur les appareils jailbreaké et la plupart des iAP crack outils en dépendent, au moins certains MobileSubstrate bibliothèques.Je n'en ai pas un, mais vous pouvez regarder pour le
deb
fichier de MobileSubstrate, décompressez-le et liste noire (presque) tous les.dylib
s'il emballé.Merci, j'ai eu un peu de code compris et je peut ajouter un peu plus de trucs de base sur votre commentaire. Merci beaucoup!
OriginalL'auteur Maxthon Chan
Je ne suis pas au courant de tout "Api" qui existent pour cela. S'il y avait, puis un jailbreak de masquage produit rapidement.
Comme beaucoup de gens, du chat et de la souris jeu. Et après que les deux joueurs de devenir des experts, il s'agit de qui obtient le premier coup. (Personne titulaire de l'appareil.)
J'ai trouvé beaucoup de bonnes suggestions pour la détection de jailbreak en Zdziarski nouveau livre "le Piratage et la Sécurisation des Applications iOS". (Personnellement, je l'ai payé plus pour le O'Reilly eBook, car ils permettent de copier-coller.)
Non, je ne suis pas affilié avec les éditeurs. Mais je l'ai trouvé un bon livre. Je n'aime pas juste de publier les pirates erreurs afin qu'ils puissent les corriger, donc je pensais le point à l'ouvrage.
OriginalL'auteur Walt Sellers
Essayez d'exécuter du code non signé par le biais de votre application.
Une jailbreaké dispositifs sont généralement les caractéristiques suivantes:
Juste vérification de l'existence du fichier pour le jailbreak de détection est vouée à l'échec.
Ces contrôles sont très faciles à contourner.
OriginalL'auteur kurapix
Certains des fichiers communs à vérifier:
/Library/MobileSubstrate/MobileSubstrate.dylib
/Applications/Cydia.app
/var/cache/apt
/var/lib/apt
/var/lib/cydia
/var/log/syslog
/var/tmp/cydia.log
/bin/bash
/bin/sh
/usr/sbin/sshd
/usr/libexec/ssh-keysign
/etc/ssh/sshd_config
/etc/apt
Plus vérifier Cydia fichiers connexes.
OriginalL'auteur DevC
Je suggère à la recherche pour les fichiers qui ne sont pas présents sur un "vanille" de l'iPhone. Tous jailbreak kits que j'ai vu installer ssh. Cela pourrait être un bon indicateur d'un téléphone jailbreaké.
Je n'ai pas vraiment suivi le jailbreak de la scène. Mais je me souviens, quand j'ai écrit ce (Janvier 09), Ziphone et d'autres installé ssh et le sous-système bsd par défaut. Peut-être que ce n'est plus le cas.
croyez-moi quand je dis que chpwn a suivi avec le jailbreak de la scène.
OriginalL'auteur Gordon Wilson
Ce que nous avons fait, nous avons déjà un flux RSS pour communiquer avec nos utilisateurs (Les Stocks De Vivre), nous mettons un point de presse que les états quelque chose comme ceci:
Puis vous le processus de l'interaction de l'utilisateur et de faire ce qui est approprié, comme se comporter différents etc...
OriginalL'auteur Ilam
Essayer de trouver un fichier qui cydia ou jailbreaké dispositif de créer. Ou d'essayer d'écrire dans un fichier en dehors de l'application de la blackbox. Si vous réussissez à le faire, l'appareil est compromise/jailbreaké 🙂
OriginalL'auteur karim
Vous allez être à la suite d'une cible en mouvement, mais vous pouvez essayer de suivre l'avancement de ces ressources afin de voir quelle est l'efficacité de votre technique est:
OriginalL'auteur Michael Bishop
Heres mes solutions:
et de l'appeler à l'intérieur de
viewDidLoad()
à l'intérieur de votre écran de lancement de-vue-contrôleur(ou quel que soit VC vous appelez pour la première fois):OriginalL'auteur imaginae
Essayer D'Accès /Application/Préférences.app/Général.plist
Vous devriez être en mesure De le faire sur un iPhone jailbreaké
Sur la non-Jb téléphone, vous ne serez pas en mesure D'y Accéder
-1 = Unjailbroken dispositifs peuvent également ouvrir et lire ce fichier. (Testé)
Je suppose que les lecteurs peuvent écrire leur propre code source. S'ils ne peuvent pas - que font-ils ici?
OriginalL'auteur aker