RELEASE NOTES ------------------------------------------------------------------------------ Shield for iOS - Version 6.0.2 - 2023-11-01 Highlights: ------------------------------------------------------------------------------ * Bug fixing and stability improvements for Jigsaw and Shield interoperability Supported platforms: ------------------------------------------------------------------------------ - Shield is supported on iOS 12.0 and up to iOS/iPadOS 17. - This release is compatible with iOS/iPadOS 17.1. - The Shielder tool is supported on 64-bit Java 17 on Windows 10, Mac OSX (10.9+) and Ubuntu Linux LTS 20.04 or 22.04. - Shielder requires a macOS system in order to sign applications. - Shield supports Xcode 12 and higher. Promon recommends to use the latest Xcode. New features: ------------------------------------------------------------------------------ * Trigger ShieldSDK callbacks for debugging/testing unshielded apps in the iOS simulator and on real devices (Resolves issue SHIOS-2506). ShieldSDK provides new API for debugging purposes. New debugging APIs allow you to trigger callbacks with the desired value and delay when the callback should be triggered. This API will not trigger any checks to be run, but rather the desired Callback which one wants to validate. Check documentation about 'PRMShieldCallbackTestManager' and its interface: ``` - (void)triggerJailbreakStatus:(BOOL)value afterDelay:(NSTimeInterval)delay; - (void)triggerEmulatorDetectedAfterDelay:(NSTimeInterval)delay; ... ``` This code is for debugging purpose only and should not exist in the binary when Shielding it, as these calls in a Shielded app will cause the app to crash. This feature will not be available after shielding, as Shielder will replace the stub library with the actual Shield library. Bugs & Stability Improvements: ------------------------------------------------------------------------------ * Detect weakly linked ShieldSDK library (Resolves issue SHIOS-2419). When the ShieldSDK is embedded in a framework and weakly linked, Shielder will now detect it and properly link it during Shielding. * Changes the ShieldSDK framework message in simulator builds (Resolves issue SHIOS-2158). Whenever an application calls Shields APIs (setting up callbacks etc) in a simulator it will display the following log message: ``` ☠️ Shield is disabled in simulator builds ☠️ ``` When the app is unshielded and running in a real device, ShieldSDK will print The following log message: ``` ☠️ Application is not fully shielded ☠️ ``` Known limitations ------------------------------------------------------------------------------ * When protecting Objective-C apps with Jigsaw and Section Encryption is enabled apps may be rejected during app submission to TestFlight. If your app contains Objective-C code, you should exclude the __DATA,__data sections from Section Encryption. This limitation does not impact Swift applications. From Apple: ``` ITMS-90338: Non-public API usage - The app contains one or more corrupted binaries. Rebuild the app and resubmit.. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/ ``` To resolve this, disable section encryption in the Jigsaw config file: my-config.cfg: ``` jigsawConfiguration default { "sectionEncryption": { "sectionRules": [ "*", "!__DATA,__data"] } } ``` TestFlight also can report the following warning: ``` ITMS-90999: Invalid executable - The executable in “MyApp.app” contains multiple segments with the executable permission bit set when it should only contain one. ``` The reason is that Jigsaw protections inject additional executable segments. This warning can be ignored if it is encountered. * Blocking of external screens, such as AirPlay does not currently work for apps using UISceneDelegate in iOS 13 and above. * "--shield-all-extensions" does not add Shield to AppClips. * "--shield-all-extensions" will add Shield to all extensions from the default Plugins folder. Tested devices: ------------------------------------------------------------------------------ iPhone SE : iOS 17.1 RC 1 Iphone 14 : iOS 17.1 iPhone 13 : iOS 16.7.2 iPhone 12 : iOS 15.7.1 iPhone 7 (N) : iOS 14.8 iPhone 7 : iOS 13.0 iPhone XR : iOS 13.1.3 iPhone 11 : iOS 13.7 iPhone 8 : iOS 12.4.1 iPhone 6S : iOS 11.4.1 iPhone 5s : iOS 12.5.7 iPod Touch (Jailbroken) : iOS 14.0.1 iPad Gold 6 : 13.2.3 iPad 7 : 14.8 iPad 6 grey : 13.6 Tools: ------------------------------------------------------------------------------ Xcode 14.2 on 12.6 (Monterey) (intel Mac) Xcode 15.0.1 on 14.0 (Sonoma) (M2 Mac Mini) MacOS: ------------------------------------------------------------------------------ BigSur 11.7 (Intel / M1) Ventura 13.5 (M2 Mac Mini) Monterey 12.6.8 (Intel Mac) Monterey 13.3.1(a) : (Intel / M2 ) Sonoma 14 RC 2 (M2 Pro)