├── .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 |
--------------------------------------------------------------------------------