IOS – Setting for iOS device type (Jailbreak)

iosjailbreaksettings

I've read that there is a settings file (/System/Library/CoreServices/SystemVersion.plist) that stores the value of the iOS version which can be changed (at least on Jailbroken iOS devices) temporarily to fool apps (or the app store) into thinking a device is running a different version than it actually is. (There even is/was a tweak that changed this for you, FWChanger.)

Is the device type/model (iPad, iPhone, etc. and generation) also stored in a way that can be temporarily changed? (The reason is to just quickly test out an app, I'm not expecting a long-term, stable solution here. And yes, I know about the potential dangers of changing such values in regards to stability, etc.)

Best Answer

As for the first paragraph: Yes, the OS version can be changed (at your own risk) by opening said file (/System/Library/CoreServices/SystemVersion.plist) with a plist editor of your choice and then changing the version from 5.1 to 6.0.1 or whatever you intend.

The device type can’t – and even if it could, shouldn’t – be changed, though, as there are versions for each and every device and while the OS version might change over time, the device itself obviously won’t automagically transform into another device. There is a file called after the device you’re using in many of the subfolders of /CoreServices/, though. In case of an iPod touch 4th gen, the name would be N81ap.plist. In there, you find the capabilities of the device.

EDIT:

I just spoke with a friend of mine. He told me that yes, you could modify the version. But you would also have to change the ProductBuildVersion – for example from 9B208 (iOS 5.1.1) to 10A523 (iOS 6.0.1). But this, of course, might lead to failure because the app might try to use methods not available in the OS version you pretend to be using. By copying the values of (for example) N81ap.plist to #yourDevice.plist, your device (theoratically) gets the features of n81.ap. This could also lead to failure, because Springboard (or others) might need functions not available to the device you are actually using.

For some apps, it is quite easy to set the required phone/device, though. In that case you would have to search for a value like “requires telephony” or alike.