Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

I jailbroke my iPad several months ago, and then could not open the Bloomberg app that I use for work. ("Device has been jailbroken.") I figured that work>jailbreaking (duh) and restored my iPad. I tried to open Bloomberg once more, and it said "Device has been jailbroken."

What does jailbreaking do that is irreparably detectable?

share|improve this question
    
The true answer to your question is Nothing. Due to the nature of a jailbreak, lower-level calls can be hooked into and modified - something that an iOS application cannot do. What it basically ends up becoming is an app developer is trying to play hide-and-go-seek with an omniscient opponent that knows what moves you're going to make before you make them. There is a software package called xCon that circumvents most jailbreak detection. –  Andrew Larsson Jan 15 at 4:09

3 Answers 3

up vote 5 down vote accepted

As far as I know, only iBooks has the power to truly block a jailbroken device. It does this by writing an unsigned executable to the root of the system. If the device is locked (not jailbroken) it can't run. But if the device is jailbroken the executable is run and iBooks quits (crashes). But this is Apple's proprietary app and third party software isn't given this level of control. In fact, all third party apps are sandboxed and can't touch anything outside of their respective installation directory.

So what it's it looking for? Rumors claim it looks for Cydia. But again, that would require the app have access to the system as Cydia isn't installed in your user's installation directory (/private/var/mobile/Applications) but rather at the system root (/private/var/stash/Applications). And even if that were true, it would mean that once you wipe your jailbreak, it should work as expected. In this case, that doesn't look to be the case (unless it has saved the device state in the app's preferences).

But there is still one file that maybe it can access:

/private/var/mobile/Library/Preferences/com.saurik.cydia.plist

Additionally, this file is carried along with your backups whether the device is jailbroken or not once it has been created.

Either that or the app simply queried your device's state when jailbroken and has saved that information, carrying it over even after you removed the jailbreak (as mentioned above). However, if you've uninstalled and reinstalled the app after the jailbreak, then you needn't worry about that. But if you have any preference files left over from the jailbreak, you might have to clear them out. Either re-jailbreak and remove them via ssh or reinstall iOS but choose rather than setting up your device using a backup, start clean.

This doesn't look like the only app that checks for a jailbreak. Time Warner Cable and Skype both have a history of doing this. Unfortunately still no credible information on how they achieve this. Since they are bound to restrictive APIs like all third party apps in the App Store, I don't think it's all that sophisticated.

share|improve this answer
    
I had no idea apps had the ability "check" jailbreak at all, very interesting/unfortunate. –  Ben Brocka Jan 3 '12 at 4:04

Im not sure if this is what is happening in your particular case however, as part of the JailBrake the 'hosts' file is altered so that the device will not contact apple for updates rather the JailBrake update site. I would search for articles which discuss how to reset the hosts file.

share|improve this answer
    
How does a regular application have access to the hosts file when not Jailbroken though? –  tekknolagi Oct 27 '11 at 6:23
    
@tekknolagi Precisely. Firstly, apps can't touch the hosts file or anything at the system level; they're all sandboxed. Secondly, jailbreaking doesn't touch the hosts file. –  cksum Oct 27 '11 at 6:46
    
Alright... how else, then? –  tekknolagi Oct 27 '11 at 6:49
    
An app could try to contact the apple update server. The inbuilt tcp stack will check the hosts file for the associated IP address, which in the case of the jail brake would not be the appropriate one. This would rely on the application that is testing this to know which IP addresses are the correct ones. –  dbtedman Oct 28 '11 at 13:10
    
-1 The hosts file in iOS is never touched during the jailbreak process. Also, there is no such thing as a jailbreak update site. Moreover, when your answer was written, iOS never checked Apple's update servers for anything. –  Andrew Larsson Jan 15 at 3:57

There are many ways to identify a computer/device. For example, your MAC address or UUID may have been blacklisted.

share|improve this answer
2  
He's talking about identifying a jailbreak, not his device. BIG difference there. –  cksum Oct 27 '11 at 6:47
1  
We don't know why Bloomberg is throwing the error. It is possible his device was blacklisted, and Bloomberg is just repeating the error message. –  iglvzx Oct 27 '11 at 6:50
1  
How does it get blacklisted? –  tekknolagi Oct 27 '11 at 6:51
1  
@iglvzx Apps don't have the power to blacklist devices. Not only would that code be rejected, preventing the app's approval, but it would make little sense, from a financial standpoint as jailbreaking is NOT illegal and devices can go from jailbroken to locked states easily. To ban a phone outright for one violation is beyond draconian and not a very good position to adopt, from a business standpoint. –  cksum Oct 27 '11 at 7:13
1  
*Sorry. I mean IP address. –  iglvzx Oct 27 '11 at 7:31

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.