able to run unsigned app on jailbroken iOS - ios

I'm developing an app for jailbroken iOS devices using Xcode 4.3 (altered by JailCoder), testing on an iPod Touch 4G, currently running iOS 5.1.1, previously 5.0.1. I noticed recently I'm able to run my app on my iPod without using either ldid or a self-signing certificate with codesign to bypass code-signing requirements (as described on http://www.saurik.com/id/8). I don't have either the security.mac.proc_enforce or security.mac.vnode_enforce security checks disabled.
So why would I be able to run unsigned code on my iPod? This didn't seem to change when I upgraded from 5.0.1 to 5.1.1. My beta testers are unable to run my app on their 5.1.1 systems when not signed with a self-signing certificate. What could be different on my system? Could it be differing methods we used to jailbreak our devices?

To run unsigned code on an iDevice, it needs to be jailbroken. To easily install your custom app and debug it from Xcode (or give it to somebody else) the easiest way is to package an IPA and sync it via iTunes. However, it requires AppSync (mainly used for piracy, sadly).

The iOS 5.1.1 jailbreak didn't patch the code signing need to run executables. AFAIK no one apparently cared enough to do so, which means many discomfort for those who build on iOS some software as ./configure scripts obviously doesn't work. If an executable is not codesigned (or fake-codesigned), it will receive a SIGKILL.

Related

Do I need a physical iPhone to compile and distribute IOS apps?

I have a simple app (in Qt/C++) which compiles and runs great in the iphone simulator on my Mac. When I try to compile it (kit) for the IOS (non-simulator) I get a warning that my kit settings are incomplete.
Qt: In the Kit settings for IOS Qt insists on selecting a device - which I don't have. So the kit is incomplete, and I get compilation errors. (and Kit has a warning sign).
Apple: During compile I get an error that relates to missing IOS App Development Profile...but I plan to distribute so why does it want a development profile? I have a IOS App distribution profile.
I was hoping to build and test my app using simulator only, then distribute in apple store.
Do I need a physical iphone so Qt Creator Kit is happy?
Do I need a physical iphone so Apple can create and IOS App Development platform which is a prerequisite to compilation?
For anyone else in this situation, it seems that XCode needs a development profile to compile (regardless of whether or not you plan to distribute) for anything other than a simulator. Then, it needs a distribution profile if you want to distribute the app.
Since a development profile must include the Universal Device ID for at least one device, you need to add at least one device. (Or you need to get the UDID of a real apple device to create one). Once you have the development profile you can compile and distribute the app.
I could not find any way around this. (Note that if you are compiling for the simulator it will compile without the profile, BUT, the simulator UDID is refused as a valid device in the apple store connect)
Once XCode is happy then Qt is happy

Unable to download application in device with ios 11

I have build my application two years ago but not submitted on App Store. Now I want to submit the app on App store. But when I try to install app using Xcode or through diawi link of its Ad hoc build, app is not installing on device.
When I try to install app through Xcode, sometimes it shows
this application does not support this device's cpu type
and sometimes
Could not write to the device
and when I try to install app through diawi link of its Ad hoc build, it shows
Unable to download application, <app-name> could not be installed at this time
This issue is only occurring in device with ios 11. I have checked my certificates as well as UDID of device in which i am trying to install. Also I have set Architectures of Build Setting of Xcode to Standard architectures (arm7, arm64) - $(ARCHS_STANDARD). It is completely working fine in device with iOS version below 11.
Finally I have find the solution of my issue. In my case I have to remove some old libraries which is not supporting in ios 11 and have to change some deprecated code.
If your code is deprecated or some libraries are stop working then Xcode will show you only error of
this application does not support this device's cpu type
or
Could not write to the device
So you have to check that which library is deprecated after launching of ios 11.
Also you have to check all other details like Build Active Architectures Only, Architectures, Valid Architectures, Required device capabilities from Info.plist.

Is it possible to run projects on real devices using Xcode 8 without enrolling to Apple's Developer Program?

Its not every time we create a real Xcode project, sometimes we need to create project for R&D purpose also. And to test a R&D project sometimes we need to use real device. But I'm unable to run a R&D project on real devices in Xcode 8, whereas in Xcode 7 or Prior to Xcode 8 version we can.
Is there any way to to run test projects on real device without registering?
You can do it over the wire, i.e. you can install it directly from Xcode but not via submitting it to TestFlight etc.
To install into device, directly from Xcode, you would still need to have a developer account with Apple - to get developer provisioning profile and certificate. W/o developer account, even installing directly from Xcode is not possible.
Also, Xcode 8 support for devices start from iOS8. Any device prior to iOS 8 is not supported.
Well, the below link is for Xcode 7, but am sure it should work for Xcode 8 as well.
https://apple.stackexchange.com/a/244801
Also, it expires after 7 days. So, the app should be installed again manually within that period.

iOS 9 Can't install apps

When I try to install an app on iOS 9.0 by tapping an itms-services:// URL in Safari, nothing happens. This appears in the iOS device console:
itunesstored[586] <Warning>: ExternalDownloadManifest: Skipping download and install of: XXXXXXX
This also happens if your device has an App Store version of your app installed, and you try to install an in-house version with the same Bundle ID.
When you do this, the device will simply ignore you tapping on your "Install" button to kick off the OTA install, and silently log that annoying message.
ExternalDownloadManifest: Skipping download and install of: XXXXXXX
Nothing gets displayed on the device, you're left to work out what's gone wrong for yourself.
So the obvious solution is to uninstall your App Store version of your app before attempting to install your in-house version.
Seriously, every year, I waste countless hours creating and deploying OTA apps with Xcode, and the Xcode/iOS error-reporting is non-existant.
It's really Apple at it's very worst.
Elaborating on Mike Gledhill's answer:
I had this problem upgrading from a production build to a newer Ad Hoc build from HockeyApp with the same Bundle ID. This was a security change added to iOS 8.4 and above to prevent the "Masque" attack.
Manifest Masque Attack leverages the CVE-2015-3722/3725 vulnerability to demolish an existing app on iOS when a victim installs an in-house iOS app wirelessly using enterprise provisioning from a website. The demolished app (the attack target) can be either a regular app downloaded from official App Store or even an important system app, such as Apple Watch, Apple Pay, App Store, Safari, Settings, etc. This vulnerability affects all iOS 7.x and iOS 8.x versions prior to iOS 8.4. We first notified Apple of this vulnerability in August 2014.
Source
Official solution from Apple:
You should use TestFlight to test upgrades to your App Store app rather than enterprise distribution.
rdar://22088607
This happens when the version you're installing has a different bundle ID than a version already installed on the device.
Seeing this recently with TestFairy builds when trying to install them on top of an already installed build from the App Store (Xcode 7, iOS 9)
TestFlight builds do upgrade properly however (not surprised).
See also Enterprise App Update Distribution on iOS 8

Bypass Code-Signing for iOS Test Dev - XCode Version 6.0.1

I'm pretty new to the Xcode environment and I'm trying to test a iOS App I'm building.
I'm running XCode 6.0.1 with a non-jailbroken iPhone 6+, running iOS 8.0.
Unfortunately, I do not have a Dev Account as yet, but my iOS simulator is ridiculously slow (and for some reason massive on my screen), making it hard for testing.
I've already tried the solution from HERE with no luck, but changing the STRINGs to NO.
I have also tried to change the following project settings (found here), as seen here, with no luck:
Is there an updated method around this? Or am I forgetting to do something?
Unfortunately, you can't. According to Apple's Documentation on iPhone certificates - iOS/iPhone certificates are only issued to members of the iOS developer program.
Those are the only two options. Without a paid developer account you won't be able to provision your device to run your app, and without jailbreaking your device you can't use the JB-enabled ways (whatever they are) to install your app on your device.

Resources