├── .gitignore ├── Makefile ├── README.md ├── Resources ├── AppIcon20x20.png ├── AppIcon20x20@2x.png ├── AppIcon20x20@3x.png ├── AppIcon29x29.png ├── AppIcon29x29@2x.png ├── AppIcon29x29@3x.png ├── AppIcon40x40.png ├── AppIcon40x40@2x.png ├── AppIcon40x40@3x.png ├── AppIcon60x60@2x.png ├── AppIcon60x60@3x.png ├── AppIcon76x76.png ├── AppIcon76x76@2x.png ├── AppIcon83.5x83.5@2x.png └── Info.plist ├── U0LAppDelegate.h ├── U0LAppDelegate.m ├── U0LRootViewController.h ├── U0LRootViewController.m ├── control ├── entitlements.plist └── main.m /.gitignore: -------------------------------------------------------------------------------- 1 | .theos/ 2 | packages/ 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | TARGET := iphone:clang:latest:7.0 2 | INSTALL_TARGET_PROCESSES = u0Launcher 3 | 4 | include $(THEOS)/makefiles/common.mk 5 | 6 | APPLICATION_NAME = u0Launcher 7 | 8 | u0Launcher_FILES = main.m U0LAppDelegate.m U0LRootViewController.m 9 | u0Launcher_FRAMEWORKS = UIKit CoreGraphics CoreServices 10 | u0Launcher_CFLAGS = -fobjc-arc 11 | u0Launcher_CODESIGN_FLAGS = -fobjc-arc 12 | u0Launcher_CODESIGN_FLAGS = -Sentitlements.plist 13 | 14 | include $(THEOS_MAKE_PATH)/application.mk 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # u0Launcher 2 | 3 | Normally when you install unc0ver through TrollStore and try to jailbreak with it, it fails with a "Failed to disable codesigning" error because unc0ver expects amfid to be running in the background in order to patch it. However when unc0ver is installed through TrollStore, amfid doesn't get invoked in the unc0ver launch process because it launches through App Store fast path, which does not contact amfid for verification. 4 | 5 | u0Launcher is an App that first sends an empty XPC message to amfid to make it start up and then jumps to unc0ver. This fixes the "Failed to disable codesigning" error when jailbreaking. 6 | 7 | ## How to use 8 | 9 | 1. Install unc0ver through TrollStore 10 | 11 | 2. Install u0Launcher through TrollStore 12 | 13 | 3. When jailbreaking, start the u0Launcher app instead of unc0ver, it will do the neccessary fix and then jump to unc0ver. Then you can press the "Jailbreak" button in the unc0ver app and it will work. -------------------------------------------------------------------------------- /Resources/AppIcon20x20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon20x20.png -------------------------------------------------------------------------------- /Resources/AppIcon20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon20x20@2x.png -------------------------------------------------------------------------------- /Resources/AppIcon20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon20x20@3x.png -------------------------------------------------------------------------------- /Resources/AppIcon29x29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon29x29.png -------------------------------------------------------------------------------- /Resources/AppIcon29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon29x29@2x.png -------------------------------------------------------------------------------- /Resources/AppIcon29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon29x29@3x.png -------------------------------------------------------------------------------- /Resources/AppIcon40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon40x40.png -------------------------------------------------------------------------------- /Resources/AppIcon40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon40x40@2x.png -------------------------------------------------------------------------------- /Resources/AppIcon40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon40x40@3x.png -------------------------------------------------------------------------------- /Resources/AppIcon60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon60x60@2x.png -------------------------------------------------------------------------------- /Resources/AppIcon60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon60x60@3x.png -------------------------------------------------------------------------------- /Resources/AppIcon76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon76x76.png -------------------------------------------------------------------------------- /Resources/AppIcon76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon76x76@2x.png -------------------------------------------------------------------------------- /Resources/AppIcon83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opa334/u0Launcher/77ad6bee1a75b43bcf67a6f265198780f2a0b024/Resources/AppIcon83.5x83.5@2x.png -------------------------------------------------------------------------------- /Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleExecutable 6 | u0Launcher 7 | CFBundleIcons 8 | 9 | CFBundlePrimaryIcon 10 | 11 | CFBundleIconFiles 12 | 13 | AppIcon20x20 14 | AppIcon29x29 15 | AppIcon40x40 16 | AppIcon60x60 17 | 18 | UIPrerenderedIcon 19 | 20 | 21 | 22 | CFBundleIcons~ipad 23 | 24 | CFBundlePrimaryIcon 25 | 26 | CFBundleIconFiles 27 | 28 | AppIcon29x29 29 | AppIcon40x40 30 | AppIcon57x57 31 | AppIcon60x60 32 | AppIcon50x50 33 | AppIcon72x72 34 | AppIcon76x76 35 | AppIcon83.5x83.5 36 | 37 | UIPrerenderedIcon 38 | 39 | 40 | 41 | CFBundleIdentifier 42 | com.opa334.u0launcher 43 | CFBundleInfoDictionaryVersion 44 | 6.0 45 | CFBundlePackageType 46 | APPL 47 | CFBundleSignature 48 | ???? 49 | CFBundleSupportedPlatforms 50 | 51 | iPhoneOS 52 | 53 | CFBundleVersion 54 | 1.0.1 55 | LSRequiresIPhoneOS 56 | 57 | UIDeviceFamily 58 | 59 | 1 60 | 2 61 | 62 | UIRequiredDeviceCapabilities 63 | 64 | armv7 65 | 66 | UISupportedInterfaceOrientations 67 | 68 | UIInterfaceOrientationPortrait 69 | UIInterfaceOrientationLandscapeLeft 70 | UIInterfaceOrientationLandscapeRight 71 | 72 | UISupportedInterfaceOrientations~ipad 73 | 74 | UIInterfaceOrientationPortrait 75 | UIInterfaceOrientationPortraitUpsideDown 76 | UIInterfaceOrientationLandscapeLeft 77 | UIInterfaceOrientationLandscapeRight 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /U0LAppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | 5 | @interface U0LAppDelegate : UIResponder 6 | 7 | @property (nonatomic, strong) UIWindow *window; 8 | @property (nonatomic, strong) UIViewController *rootViewController; 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /U0LAppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "U0LAppDelegate.h" 2 | #import "U0LRootViewController.h" 3 | 4 | @implementation U0LAppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 7 | _window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 8 | _rootViewController = [[U0LRootViewController alloc] init]; 9 | _window.rootViewController = _rootViewController; 10 | [_window makeKeyAndVisible]; 11 | return YES; 12 | } 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /U0LRootViewController.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface U0LRootViewController : UIViewController 4 | 5 | @end 6 | -------------------------------------------------------------------------------- /U0LRootViewController.m: -------------------------------------------------------------------------------- 1 | #import "U0LRootViewController.h" 2 | #import 3 | 4 | @interface LSApplicationWorkspace : NSObject 5 | + (instancetype)defaultWorkspace; 6 | - (BOOL)openApplicationWithBundleID:(NSString*)appId; 7 | @end 8 | 9 | BOOL isAlreadyJailbroken(void) 10 | { 11 | for (uint32_t i = 0; i < _dyld_image_count(); i++) 12 | { 13 | const char *pathC = _dyld_get_image_name(i); 14 | NSString* path = [NSString stringWithUTF8String:pathC]; 15 | 16 | if([path isEqualToString:@"/usr/lib/substitute-inserter.dylib"]) 17 | { 18 | return YES; 19 | } 20 | } 21 | 22 | return NO; 23 | } 24 | 25 | @implementation U0LRootViewController 26 | 27 | - (void)showErrorMessage:(NSString*)errorMessage 28 | { 29 | UIAlertController* errorAlertController = [UIAlertController alertControllerWithTitle:@"Error" message:errorMessage preferredStyle:UIAlertControllerStyleAlert]; 30 | 31 | UIAlertAction* closeAction = [UIAlertAction actionWithTitle:@"Close" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { 32 | exit(0); 33 | }]; 34 | 35 | [errorAlertController addAction:closeAction]; 36 | 37 | [self presentViewController:errorAlertController animated:YES completion:nil]; 38 | } 39 | 40 | - (void)viewDidLoad 41 | { 42 | [super viewDidLoad]; 43 | 44 | if(isAlreadyJailbroken()) 45 | { 46 | exit(0); 47 | return; 48 | } 49 | 50 | // Ping amfid, which makes it launch (which unc0ver needs) 51 | xpc_connection_t xpcConnection = xpc_connection_create_mach_service("com.apple.MobileFileIntegrity", 0, XPC_CONNECTION_MACH_SERVICE_PRIVILEGED); 52 | xpc_connection_set_event_handler(xpcConnection, ^(xpc_object_t object){}); 53 | xpc_connection_resume(xpcConnection); 54 | xpc_object_t wakeupMessage = xpc_dictionary_create(NULL,NULL,0); 55 | xpc_connection_send_message_with_reply(xpcConnection, wakeupMessage, dispatch_get_main_queue(), ^(xpc_object_t reply) 56 | { 57 | BOOL launchWorked = [[LSApplicationWorkspace defaultWorkspace] openApplicationWithBundleID:@"science.xnu.undecimus"]; 58 | if(!launchWorked) 59 | { 60 | [self showErrorMessage:@"Failed to launch unc0ver, make sure you have installed the unc0ver IPA via TrollStore."]; 61 | return; 62 | } 63 | 64 | exit(1); 65 | }); 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /control: -------------------------------------------------------------------------------- 1 | Package: com.opa334.u0launcher 2 | Name: u0Launcher 3 | Version: 1.0.1 4 | Architecture: iphoneos-arm 5 | Description: An awesome application! 6 | Maintainer: opa334 7 | Author: opa334 8 | Section: Utilities 9 | -------------------------------------------------------------------------------- /entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | application-identifier 6 | com.opa334.u0launcher 7 | com.apple.security.exception.mach-lookup.global-name 8 | 9 | com.apple.MobileFileIntegrity 10 | 11 | com.apple.backboardd.launchapplications 12 | 13 | com.apple.multitasking.termination 14 | 15 | 16 | -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import "U0LAppDelegate.h" 3 | 4 | int main(int argc, char *argv[]) { 5 | @autoreleasepool { 6 | return UIApplicationMain(argc, argv, nil, NSStringFromClass(U0LAppDelegate.class)); 7 | } 8 | } 9 | --------------------------------------------------------------------------------