From d11c04666a77435d1ac142af1b0b749214d60a9a Mon Sep 17 00:00:00 2001 From: opa334 Date: Mon, 2 Sep 2024 13:27:04 +0200 Subject: [PATCH] 2.1 --- ChOma | 2 +- Makefile | 19 +- RootHelper/Makefile | 35 ++- RootHelper/control | 2 +- RootHelper/main.m | 235 ++++++++++++++---- Shared/TSUtil.h | 29 ++- Shared/TSUtil.m | 48 +++- TrollHelper/Resources/Info.plist | 2 +- TrollHelper/control | 2 +- TrollStore/Resources/Info.plist | 2 +- TrollStore/TSApplicationsManager.m | 2 +- TrollStore/TSSceneDelegate.m | 2 + TrollStore/TSSettingsAdvancedListController.m | 5 +- TrollStore/TSSettingsListController.m | 104 +++++++- TrollStore/control | 2 +- TrollStore/main.m | 2 +- TrollStoreLite/.gitignore | 1 + TrollStoreLite/Makefile | 16 ++ TrollStoreLite/Resources/AppIcon29x29.png | Bin 0 -> 1765 bytes TrollStoreLite/Resources/AppIcon29x29@2x.png | Bin 0 -> 4145 bytes TrollStoreLite/Resources/AppIcon29x29@3x.png | Bin 0 -> 6884 bytes TrollStoreLite/Resources/AppIcon40x40.png | Bin 0 -> 2506 bytes TrollStoreLite/Resources/AppIcon40x40@2x.png | Bin 0 -> 5550 bytes TrollStoreLite/Resources/AppIcon40x40@3x.png | Bin 0 -> 9359 bytes TrollStoreLite/Resources/AppIcon50x50.png | Bin 0 -> 3360 bytes TrollStoreLite/Resources/AppIcon50x50@2x.png | Bin 0 -> 7200 bytes TrollStoreLite/Resources/AppIcon57x57.png | Bin 0 -> 3568 bytes TrollStoreLite/Resources/AppIcon57x57@2x.png | Bin 0 -> 8719 bytes TrollStoreLite/Resources/AppIcon57x57@3x.png | Bin 0 -> 9496 bytes TrollStoreLite/Resources/AppIcon60x60.png | Bin 0 -> 3916 bytes TrollStoreLite/Resources/AppIcon60x60@2x.png | Bin 0 -> 9359 bytes TrollStoreLite/Resources/AppIcon60x60@3x.png | Bin 0 -> 17118 bytes TrollStoreLite/Resources/AppIcon72x72.png | Bin 0 -> 4587 bytes TrollStoreLite/Resources/AppIcon72x72@2x.png | Bin 0 -> 12111 bytes TrollStoreLite/Resources/AppIcon76x76.png | Bin 0 -> 5718 bytes TrollStoreLite/Resources/AppIcon76x76@2x.png | Bin 0 -> 13215 bytes .../LaunchScreen.storyboardc/Info.plist | Bin 0 -> 264 bytes .../Kx4-55-vNS-view-9BB-B5-Vbi.nib | Bin 0 -> 1824 bytes .../UITabBarController-9el-pn-lH0.nib | Bin 0 -> 3631 bytes .../X3T-Aa-nEE-view-vAu-RC-m7d.nib | Bin 0 -> 1824 bytes TrollStoreLite/Resources/Info.plist | 188 ++++++++++++++ TrollStoreLite/control | 9 + TrollStoreLite/entitlements.plist | 45 ++++ 43 files changed, 662 insertions(+), 90 deletions(-) create mode 100644 TrollStoreLite/.gitignore create mode 100644 TrollStoreLite/Makefile create mode 100644 TrollStoreLite/Resources/AppIcon29x29.png create mode 100644 TrollStoreLite/Resources/AppIcon29x29@2x.png create mode 100644 TrollStoreLite/Resources/AppIcon29x29@3x.png create mode 100644 TrollStoreLite/Resources/AppIcon40x40.png create mode 100644 TrollStoreLite/Resources/AppIcon40x40@2x.png create mode 100644 TrollStoreLite/Resources/AppIcon40x40@3x.png create mode 100644 TrollStoreLite/Resources/AppIcon50x50.png create mode 100644 TrollStoreLite/Resources/AppIcon50x50@2x.png create mode 100644 TrollStoreLite/Resources/AppIcon57x57.png create mode 100644 TrollStoreLite/Resources/AppIcon57x57@2x.png create mode 100644 TrollStoreLite/Resources/AppIcon57x57@3x.png create mode 100644 TrollStoreLite/Resources/AppIcon60x60.png create mode 100644 TrollStoreLite/Resources/AppIcon60x60@2x.png create mode 100644 TrollStoreLite/Resources/AppIcon60x60@3x.png create mode 100644 TrollStoreLite/Resources/AppIcon72x72.png create mode 100644 TrollStoreLite/Resources/AppIcon72x72@2x.png create mode 100644 TrollStoreLite/Resources/AppIcon76x76.png create mode 100644 TrollStoreLite/Resources/AppIcon76x76@2x.png create mode 100644 TrollStoreLite/Resources/Base.lproj/LaunchScreen.storyboardc/Info.plist create mode 100644 TrollStoreLite/Resources/Base.lproj/LaunchScreen.storyboardc/Kx4-55-vNS-view-9BB-B5-Vbi.nib create mode 100644 TrollStoreLite/Resources/Base.lproj/LaunchScreen.storyboardc/UITabBarController-9el-pn-lH0.nib create mode 100644 TrollStoreLite/Resources/Base.lproj/LaunchScreen.storyboardc/X3T-Aa-nEE-view-vAu-RC-m7d.nib create mode 100644 TrollStoreLite/Resources/Info.plist create mode 100644 TrollStoreLite/control create mode 100644 TrollStoreLite/entitlements.plist diff --git a/ChOma b/ChOma index defd14b..964023d 160000 --- a/ChOma +++ b/ChOma @@ -1 +1 @@ -Subproject commit defd14b0a3303aea7f345b6305619dd390176098 +Subproject commit 964023ddac2286ef8e843f90df64d44ac6a673df diff --git a/Makefile b/Makefile index 7b62de6..e548f15 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ TOPTARGETS := all clean update -$(TOPTARGETS): pre_build make_fastPathSign make_roothelper make_trollstore make_trollhelper_embedded make_trollhelper_package assemble_trollstore build_installer15 build_installer64e +$(TOPTARGETS): pre_build make_fastPathSign make_roothelper make_trollstore make_trollhelper_embedded make_trollhelper_package assemble_trollstore build_installer15 build_installer64e make_trollstore_lite pre_build: @rm -rf ./_build 2>/dev/null || true @@ -10,7 +10,7 @@ make_fastPathSign: @$(MAKE) -C ./Exploits/fastPathSign $(MAKECMDGOALS) make_roothelper: - @$(MAKE) -C ./RootHelper FINALPACKAGE=1 $(MAKECMDGOALS) + @$(MAKE) -C ./RootHelper DEBUG=0 $(MAKECMDGOALS) make_trollstore: @$(MAKE) -C ./TrollStore FINALPACKAGE=1 $(MAKECMDGOALS) @@ -73,6 +73,21 @@ build_installer64e: popd @rm -rf ./_build/tmp64e +make_trollstore_lite: + @$(MAKE) -C ./RootHelper DEBUG=0 TROLLSTORE_LITE=1 + @rm -rf ./TrollStoreLite/Resources/trollstorehelper + @cp ./RootHelper/.theos/obj/trollstorehelper_lite ./TrollStoreLite/Resources/trollstorehelper + @$(MAKE) -C ./TrollStoreLite package FINALPACKAGE=1 + @$(MAKE) -C ./RootHelper TROLLSTORE_LITE=1 clean + @$(MAKE) -C ./TrollStoreLite clean + @$(MAKE) -C ./RootHelper DEBUG=0 TROLLSTORE_LITE=1 THEOS_PACKAGE_SCHEME=rootless + @rm -rf ./TrollStoreLite/Resources/trollstorehelper + @cp ./RootHelper/.theos/obj/trollstorehelper_lite ./TrollStoreLite/Resources/trollstorehelper + @$(MAKE) -C ./TrollStoreLite package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless + +else +make_trollstore_lite: + @$(MAKE) -C ./TrollStoreLite $(MAKECMDGOALS) endif .PHONY: $(TOPTARGETS) pre_build assemble_trollstore make_trollhelper_package make_trollhelper_embedded build_installer15 build_installer64e \ No newline at end of file diff --git a/RootHelper/Makefile b/RootHelper/Makefile index 4a61650..720c8f6 100644 --- a/RootHelper/Makefile +++ b/RootHelper/Makefile @@ -1,19 +1,36 @@ TARGET := iphone:clang:16.5:14.0 ARCHS = arm64 +ifdef TROLLSTORE_LITE +HELPER_NAME = trollstorehelper_lite +else +HELPER_NAME = trollstorehelper TARGET_CODESIGN = ../Exploits/fastPathSign/fastPathSign +endif include $(THEOS)/makefiles/common.mk -TOOL_NAME = trollstorehelper +TOOL_NAME = $(HELPER_NAME) -trollstorehelper_FILES = $(wildcard *.m) $(wildcard ../Shared/*.m) $(wildcard ../ChOma/src/*.c) ../Exploits/fastPathSign/src/coretrust_bug.c ../Exploits/fastPathSign/src/codesign.m -trollstorehelper_CFLAGS = -fobjc-arc -I../Shared $(shell pkg-config --cflags libcrypto) -I../ChOma/src -I../Exploits/fastPathSign/src -I$(shell brew --prefix)/opt/libarchive/include -trollstorehelper_LDFLAGS = -L../ChOma/external/ios -lcrypto -trollstorehelper_CODESIGN_FLAGS = --entitlements entitlements.plist -trollstorehelper_INSTALL_PATH = /usr/local/bin -trollstorehelper_LIBRARIES = archive -trollstorehelper_FRAMEWORKS = CoreTelephony -trollstorehelper_PRIVATE_FRAMEWORKS = SpringBoardServices BackBoardServices MobileContainerManager FrontBoardServices RunningBoardServices +$(HELPER_NAME)_FILES = $(wildcard *.m) $(wildcard ../Shared/*.m) $(wildcard ../ChOma/src/*.c) + +ifndef TROLLSTORE_LITE +$(HELPER_NAME)_FILES += ../Exploits/fastPathSign/src/coretrust_bug.c ../Exploits/fastPathSign/src/codesign.m +$(HELPER_NAME)_CODESIGN_FLAGS = --entitlements entitlements.plist +$(HELPER_NAME)_LDFLAGS = -L../ChOma/external/ios -lcrypto +else +$(HELPER_NAME)_CODESIGN_FLAGS = -Sentitlements.plist +endif + +$(HELPER_NAME)_CFLAGS = -fobjc-arc -I../Shared $(shell pkg-config --cflags libcrypto) -I../ChOma/src -I../Exploits/fastPathSign/src -I$(shell brew --prefix)/opt/libarchive/include + +$(HELPER_NAME)_INSTALL_PATH = /usr/local/bin +$(HELPER_NAME)_LIBRARIES = archive +$(HELPER_NAME)_FRAMEWORKS = CoreTelephony +$(HELPER_NAME)_PRIVATE_FRAMEWORKS = SpringBoardServices BackBoardServices MobileContainerManager FrontBoardServices RunningBoardServices + +ifdef TROLLSTORE_LITE +$(HELPER_NAME)_CFLAGS += -DTROLLSTORE_LITE -DDISABLE_SIGNING=1 +endif include $(THEOS_MAKE_PATH)/tool.mk diff --git a/RootHelper/control b/RootHelper/control index 5799186..52288b1 100644 --- a/RootHelper/control +++ b/RootHelper/control @@ -1,6 +1,6 @@ Package: com.opa334.trollstoreroothelper Name: trollstoreroothelper -Version: 2.0.15 +Version: 2.1 Architecture: iphoneos-arm Description: An awesome tool of some sort!! Maintainer: opa334 diff --git a/RootHelper/main.m b/RootHelper/main.m index 8e3e6da..9160b78 100644 --- a/RootHelper/main.m +++ b/RootHelper/main.m @@ -24,6 +24,7 @@ #import #import #import +#import #ifdef EMBEDDED_ROOT_HELPER #define MAIN_NAME rootHelperMain @@ -243,6 +244,21 @@ void setTSURLSchemeState(BOOL newState, NSString* customAppPath) } } +#ifdef TROLLSTORE_LITE + +BOOL isLdidInstalled(void) +{ + // Since TrollStore Lite depends on ldid, we assume it exists + return YES; +} + +NSString *getLdidPath(void) +{ + return JBROOT_PATH(@"/usr/bin/ldid"); +} + +#else + void installLdid(NSString* ldidToCopyPath, NSString* ldidVersion) { if(![[NSFileManager defaultManager] fileExistsAtPath:ldidToCopyPath]) return; @@ -270,9 +286,16 @@ BOOL isLdidInstalled(void) return [[NSFileManager defaultManager] fileExistsAtPath:ldidPath]; } +NSString *getLdidPath(void) +{ + return [trollStoreAppPath() stringByAppendingPathComponent:@"ldid"]; +} + +#endif + int runLdid(NSArray* args, NSString** output, NSString** errorOutput) { - NSString* ldidPath = [trollStoreAppPath() stringByAppendingPathComponent:@"ldid"]; + NSString* ldidPath = getLdidPath(); NSMutableArray* argsM = args.mutableCopy ?: [NSMutableArray new]; [argsM insertObject:ldidPath.lastPathComponent atIndex:0]; @@ -300,6 +323,7 @@ int runLdid(NSArray* args, NSString** output, NSString** errorOutput) pid_t task_pid; int status = -200; + NSLog(@"About to spawn ldid (%@) with args %@", ldidPath, args); int spawnError = posix_spawn(&task_pid, [ldidPath fileSystemRepresentation], &action, NULL, (char* const*)argsC, NULL); for (NSUInteger i = 0; i < argCount; i++) { @@ -309,7 +333,7 @@ int runLdid(NSArray* args, NSString** output, NSString** errorOutput) if(spawnError != 0) { - NSLog(@"posix_spawn error %d\n", spawnError); + NSLog(@"ldid failed to spawn with error %d (%s)\n", spawnError, strerror(spawnError)); return spawnError; } @@ -535,6 +559,7 @@ int signApp(NSString* appPath) if(![[NSFileManager defaultManager] fileExistsAtPath:mainExecutablePath]) return 174; +#ifndef TROLLSTORE_LITE // Check if the bundle has had a supported exploit pre-applied EXPLOIT_TYPE declaredPreAppliedExploitType = getDeclaredExploitTypeFromInfoDictionary(appInfoDict); if(isPlatformVulnerableToExploitType(declaredPreAppliedExploitType)) @@ -570,6 +595,7 @@ int signApp(NSString* appPath) // On iOS 16+, binaries with certain entitlements requires developer mode to be enabled, so we'll check // while we're fixing entitlements BOOL requiresDevMode = NO; +#endif // The majority of IPA decryption utilities only decrypt the main executable of the app bundle // As a result, we cannot bail on the entire app if an additional binary is encrypted (e.g. app extensions) @@ -592,6 +618,7 @@ int signApp(NSString* appPath) NSString *bundleId = infoDict[@"CFBundleIdentifier"]; NSString *bundleExecutable = infoDict[@"CFBundleExecutable"]; if (!bundleId || !bundleExecutable) continue; + if ([bundleId isEqualToString:@""] || [bundleExecutable isEqualToString:@""]) continue; NSString *bundleMainExecutablePath = [[filePath stringByDeletingLastPathComponent] stringByAppendingPathComponent:bundleExecutable]; if (![[NSFileManager defaultManager] fileExistsAtPath:bundleMainExecutablePath]) continue; @@ -620,6 +647,7 @@ int signApp(NSString* appPath) if (!entitlementsToUse) entitlementsToUse = [NSMutableDictionary new]; +#ifndef TROLLSTORE_LITE // Developer mode does not exist before iOS 16 if (@available(iOS 16, *)){ if (!requiresDevMode) { @@ -664,15 +692,25 @@ int signApp(NSString* appPath) entitlementsToUse[@"com.apple.private.security.container-required"] = bundleId; } } - signAdhoc(bundleMainExecutablePath, entitlementsToUse); +#else + // Since TrollStore Lite adhoc signs stuff, this means that on PMAP_CS devices, it will run with "PMAP_CS_IN_LOADED_TRUST_CACHE" trust level + // We need to overwrite it so that the app runs as expected (Dopamine 2.1.5+ feature) + entitlementsToUse[@"jb.pmap_cs_custom_trust"] = @"PMAP_CS_APP_STORE"; +#endif + + int r = signAdhoc(bundleMainExecutablePath, entitlementsToUse); + if (r != 0) return r; } } // All entitlement related issues should be fixed at this point, so all we need to do is sign the entire bundle // And then apply the CoreTrust bypass to all executables // XXX: This only works because we're using ldid at the moment and that recursively signs everything - signAdhoc(appPath, nil); + int r = signAdhoc(appPath, nil); + if (r != 0) return r; +#ifndef TROLLSTORE_LITE + // Apply CoreTrust bypass enumerator = [[NSFileManager defaultManager] enumeratorAtURL:[NSURL fileURLWithPath:appPath] includingPropertiesForKeys:nil options:0 errorHandler:nil]; while(fileURL = [enumerator nextObject]) { @@ -731,6 +769,35 @@ int signApp(NSString* appPath) // Postpone trying to enable dev mode until after the app is (successfully) installed return 182; } +#else // TROLLSTORE_LITE + // Just check for whether anything is fairplay encrypted + enumerator = [[NSFileManager defaultManager] enumeratorAtURL:[NSURL fileURLWithPath:appPath] includingPropertiesForKeys:nil options:0 errorHandler:nil]; + while(fileURL = [enumerator nextObject]) + { + NSString *filePath = fileURL.path; + FAT *fat = fat_init_from_path(filePath.fileSystemRepresentation); + if (fat) { + NSLog(@"%@ is binary", filePath); + MachO *macho = fat_find_preferred_slice(fat); + if (macho) { + if (macho_is_encrypted(macho)) { + NSLog(@"[%@] Cannot apply CoreTrust bypass on an encrypted binary!", filePath); + if (isSameFile(filePath, mainExecutablePath)) { + // If this is the main binary, this error is fatal + NSLog(@"[%@] Main binary is encrypted, cannot continue!", filePath); + fat_free(fat); + return 180; + } + else { + // If not, we can continue but want to show a warning after the app is installed + hasAdditionalEncryptedBinaries = YES; + } + } + } + fat_free(fat); + } + } +#endif if (hasAdditionalEncryptedBinaries) { return 184; @@ -852,12 +919,19 @@ int installApp(NSString* appPackagePath, BOOL sign, BOOL force, BOOL isTSUpdate, NSURL* appBundleURL = findAppURLInBundleURL(bundleContainerURL); // Make sure the installed app is a TrollStore app or the container is empty (or the force flag is set) - NSURL* trollStoreMarkURL = [bundleContainerURL URLByAppendingPathComponent:@"_TrollStore"]; + NSURL* trollStoreMarkURL = [bundleContainerURL URLByAppendingPathComponent:TS_ACTIVE_MARKER]; if(appBundleURL && ![trollStoreMarkURL checkResourceIsReachableAndReturnError:nil] && !force) { NSLog(@"[installApp] already installed and not a TrollStore app... bailing out"); return 171; } + else if (appBundleURL) { + // When overwriting an app that has been installed with a different TrollStore flavor, make sure to remove the marker of said flavor + NSURL *otherMarkerURL = [bundleContainerURL URLByAppendingPathComponent:TS_INACTIVE_MARKER]; + if ([otherMarkerURL checkResourceIsReachableAndReturnError:nil]) { + [[NSFileManager defaultManager] removeItemAtURL:otherMarkerURL error:nil]; + } + } // Terminate app if it's still running if(!isTSUpdate) @@ -963,7 +1037,7 @@ int installApp(NSString* appPackagePath, BOOL sign, BOOL force, BOOL isTSUpdate, appContainer = [MCMAppContainer containerWithIdentifier:appId createIfNecessary:NO existed:nil error:nil]; // Mark app as TrollStore app - NSURL* trollStoreMarkURL = [appContainer.url URLByAppendingPathComponent:@"_TrollStore"]; + NSURL* trollStoreMarkURL = [appContainer.url URLByAppendingPathComponent:TS_ACTIVE_MARKER]; if(![[NSFileManager defaultManager] fileExistsAtPath:trollStoreMarkURL.path]) { NSError* creationError; @@ -981,7 +1055,7 @@ int installApp(NSString* appPackagePath, BOOL sign, BOOL force, BOOL isTSUpdate, NSURL* updatedAppURL = findAppURLInBundleURL(appContainer.url); fixPermissionsOfAppBundle(updatedAppURL.path); if (!skipUICache) { - if (!registerPath(updatedAppURL.path, 0, YES)) { + if (!registerPath(updatedAppURL.path, 0, !shouldRegisterAsUserByDefault())) { [[NSFileManager defaultManager] removeItemAtURL:appContainer.url error:nil]; return 181; } @@ -1492,6 +1566,105 @@ int MAIN_NAME(int argc, char *argv[], char *envp[]) NSString* appPath = args.lastObject; ret = uninstallAppByPath(appPath, useCustomMethod); } + else if([cmd isEqualToString:@"refresh"]) + { + refreshAppRegistrations(!shouldRegisterAsUserByDefault()); + } + else if([cmd isEqualToString:@"refresh-all"]) + { + cleanRestrictions(); + //refreshAppRegistrations(NO); // <- fixes app permissions resetting, causes apps to move around on home screen, so I had to disable it + [[NSFileManager defaultManager] removeItemAtPath:@"/var/containers/Shared/SystemGroup/systemgroup.com.apple.lsd.iconscache/Library/Caches/com.apple.IconsCache" error:nil]; + [[LSApplicationWorkspace defaultWorkspace] _LSPrivateRebuildApplicationDatabasesForSystemApps:YES internal:YES user:YES]; + if (!shouldRegisterAsUserByDefault()) refreshAppRegistrations(YES); + killall(@"backboardd", YES); + } + else if([cmd isEqualToString:@"url-scheme"]) + { + if(args.count < 2) return -3; + NSString* modifyArg = args.lastObject; + BOOL newState = [modifyArg isEqualToString:@"enable"]; + if(newState == YES || [modifyArg isEqualToString:@"disable"]) + { + setTSURLSchemeState(newState, nil); + } + } + else if([cmd isEqualToString:@"reboot"]) + { + [[FBSSystemService sharedService] reboot]; + // Give the system some time to reboot + sleep(1); + } + else if([cmd isEqualToString:@"enable-jit"]) + { + if(args.count < 2) return -3; + NSString* userAppId = args.lastObject; + ret = enableJIT(userAppId); + } + else if([cmd isEqualToString:@"modify-registration"]) + { + if(args.count < 3) return -3; + NSString* appPath = args[1]; + NSString* newRegistration = args[2]; + + NSString* trollStoreMark = [[appPath stringByDeletingLastPathComponent] stringByAppendingPathComponent:TS_ACTIVE_MARKER]; + if([[NSFileManager defaultManager] fileExistsAtPath:trollStoreMark]) + { + registerPath(appPath, NO, [newRegistration isEqualToString:@"System"]); + } + } + else if ([cmd isEqualToString:@"transfer-apps"]) + { + bool oneFailed = false; + for (NSString *appBundlePath in trollStoreInactiveInstalledAppBundlePaths()) { + NSLog(@"Transfering %@...", appBundlePath); + + // Ldid lacks the entitlement to sign in place + // So copy to /tmp, resign, then replace >.< + NSString *tmpPath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSUUID UUID].UUIDString]; + if (![[NSFileManager defaultManager] createDirectoryAtPath:tmpPath withIntermediateDirectories:YES attributes:nil error:nil]) return -3; + + NSString *tmpAppPath = [tmpPath stringByAppendingPathComponent:appBundlePath.lastPathComponent]; + if (![[NSFileManager defaultManager] copyItemAtPath:appBundlePath toPath:tmpAppPath error:nil]) { + [[NSFileManager defaultManager] removeItemAtPath:tmpPath error:nil]; + oneFailed = true; + continue; + } + + NSLog(@"Copied %@ to %@", appBundlePath, tmpAppPath); + + int signRet = signApp(tmpAppPath); + NSLog(@"Signing %@ returned %d", tmpAppPath, signRet); + + if (signRet == 0 || signRet == 182 || signRet == 184) { // Either 0 or non fatal error codes are fine + [[NSFileManager defaultManager] removeItemAtPath:appBundlePath error:nil]; + [[NSFileManager defaultManager] moveItemAtPath:tmpAppPath toPath:appBundlePath error:nil]; + [[NSFileManager defaultManager] removeItemAtPath:tmpPath error:nil]; + } + else { + [[NSFileManager defaultManager] removeItemAtPath:tmpPath error:nil]; + oneFailed = true; + continue; + } + + fixPermissionsOfAppBundle(appBundlePath); + + NSString *containerPath = [appBundlePath stringByDeletingLastPathComponent]; + NSString *activeMarkerPath = [containerPath stringByAppendingPathComponent:TS_ACTIVE_MARKER]; + NSString *inactiveMarkerPath = [containerPath stringByAppendingPathComponent:TS_INACTIVE_MARKER]; + + NSData* emptyData = [NSData data]; + [emptyData writeToFile:activeMarkerPath options:0 error:nil]; + + [[NSFileManager defaultManager] removeItemAtPath:inactiveMarkerPath error:nil]; + + registerPath(appBundlePath, 0, !shouldRegisterAsUserByDefault()); + + NSLog(@"Transfered %@!", appBundlePath); + } + if (oneFailed) ret = -1; + } +#ifndef TROLLSTORE_LITE else if([cmd isEqualToString:@"install-trollstore"]) { if(args.count < 2) return -3; @@ -1516,19 +1689,6 @@ int MAIN_NAME(int argc, char *argv[], char *envp[]) installLdid(ldidPath, ldidVersion); //} } - else if([cmd isEqualToString:@"refresh"]) - { - refreshAppRegistrations(YES); - } - else if([cmd isEqualToString:@"refresh-all"]) - { - cleanRestrictions(); - //refreshAppRegistrations(NO); // <- fixes app permissions resetting, causes apps to move around on home screen, so I had to disable it - [[NSFileManager defaultManager] removeItemAtPath:@"/var/containers/Shared/SystemGroup/systemgroup.com.apple.lsd.iconscache/Library/Caches/com.apple.IconsCache" error:nil]; - [[LSApplicationWorkspace defaultWorkspace] _LSPrivateRebuildApplicationDatabasesForSystemApps:YES internal:YES user:YES]; - refreshAppRegistrations(YES); - killall(@"backboardd", YES); - } else if([cmd isEqualToString:@"install-persistence-helper"]) { if(args.count < 2) return -3; @@ -1552,28 +1712,6 @@ int MAIN_NAME(int argc, char *argv[], char *envp[]) NSString* userAppId = args.lastObject; registerUserPersistenceHelper(userAppId); } - else if([cmd isEqualToString:@"modify-registration"]) - { - if(args.count < 3) return -3; - NSString* appPath = args[1]; - NSString* newRegistration = args[2]; - - NSString* trollStoreMark = [[appPath stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"_TrollStore"]; - if([[NSFileManager defaultManager] fileExistsAtPath:trollStoreMark]) - { - registerPath(appPath, NO, [newRegistration isEqualToString:@"System"]); - } - } - else if([cmd isEqualToString:@"url-scheme"]) - { - if(args.count < 2) return -3; - NSString* modifyArg = args.lastObject; - BOOL newState = [modifyArg isEqualToString:@"enable"]; - if(newState == YES || [modifyArg isEqualToString:@"disable"]) - { - setTSURLSchemeState(newState, nil); - } - } else if([cmd isEqualToString:@"check-dev-mode"]) { // switch the result, so 0 is enabled, and 1 is disabled/error @@ -1584,18 +1722,7 @@ int MAIN_NAME(int argc, char *argv[], char *envp[]) // assumes that checkDeveloperMode() has already been called ret = !armDeveloperMode(NULL); } - else if([cmd isEqualToString:@"reboot"]) - { - [[FBSSystemService sharedService] reboot]; - // Give the system some time to reboot - sleep(1); - } - else if([cmd isEqualToString:@"enable-jit"]) - { - if(args.count < 2) return -3; - NSString* userAppId = args.lastObject; - ret = enableJIT(userAppId); - } +#endif NSLog(@"trollstorehelper returning %d", ret); return ret; diff --git a/Shared/TSUtil.h b/Shared/TSUtil.h index d3c1195..8da49ae 100644 --- a/Shared/TSUtil.h +++ b/Shared/TSUtil.h @@ -3,8 +3,28 @@ #define TrollStoreErrorDomain @"TrollStoreErrorDomain" +#define TS_MARKER @"_TrollStore" +#define TS_LITE_MARKER @"_TrollStoreLite" +#define TS_NAME @"TrollStore" +#define TS_LITE_NAME @"Trollstore Lite" + +#ifdef TROLLSTORE_LITE +#define TS_ACTIVE_MARKER TS_LITE_MARKER +#define TS_INACTIVE_MARKER TS_MARKER +#define APP_ID @"com.opa334.TrollStoreLite" +#define APP_NAME TS_LITE_NAME +#define OTHER_APP_NAME TS_NAME +#else +#define TS_ACTIVE_MARKER TS_MARKER +#define TS_INACTIVE_MARKER TS_LITE_MARKER +#define APP_ID @"com.opa334.TrollStore" +#define APP_NAME TS_NAME +#define OTHER_APP_NAME TS_LITE_NAME +#endif + extern void chineseWifiFixup(void); extern NSString *getExecutablePath(void); +extern BOOL shouldRegisterAsUserByDefault(void); extern NSString* rootHelperPath(void); extern NSString* getNSStringFromFile(int fd); extern void printMultilineNSString(NSString* stringToPrint); @@ -14,10 +34,11 @@ extern void respring(void); extern void fetchLatestTrollStoreVersion(void (^completionHandler)(NSString* latestVersion)); extern void fetchLatestLdidVersion(void (^completionHandler)(NSString* latestVersion)); -extern NSArray* trollStoreInstalledAppBundlePaths(); -extern NSArray* trollStoreInstalledAppContainerPaths(); -extern NSString* trollStorePath(); -extern NSString* trollStoreAppPath(); +extern NSArray* trollStoreInstalledAppBundlePaths(void); +extern NSArray* trollStoreInactiveInstalledAppBundlePaths(void); +extern NSArray* trollStoreInstalledAppContainerPaths(void); +extern NSString* trollStorePath(void); +extern NSString* trollStoreAppPath(void); extern BOOL isRemovableSystemApp(NSString* appId); diff --git a/Shared/TSUtil.m b/Shared/TSUtil.m index d4eb2c0..7ef755c 100644 --- a/Shared/TSUtil.m +++ b/Shared/TSUtil.m @@ -4,6 +4,7 @@ #import #import #import +#import static EXPLOIT_TYPE gPlatformVulnerabilities; @@ -35,6 +36,25 @@ NSString *getExecutablePath(void) return [NSString stringWithUTF8String:selfPath]; } +#ifdef TROLLSTORE_LITE + +BOOL shouldRegisterAsUserByDefault(void) +{ + if ([[NSFileManager defaultManager] fileExistsAtPath:JBROOT_PATH(@"/Library/MobileSubstrate/DynamicLibraries/AppSyncUnified-FrontBoard.dylib")]) { + return YES; + } + return NO; +} + +#else + +BOOL shouldRegisterAsUserByDefault(void) +{ + return NO; +} + +#endif + #ifdef EMBEDDED_ROOT_HELPER NSString* rootHelperPath(void) { @@ -315,7 +335,7 @@ void fetchLatestLdidVersion(void (^completionHandler)(NSString* latestVersion)) github_fetchLatestVersion(@"opa334/ldid", completionHandler); } -NSArray* trollStoreInstalledAppContainerPaths() +NSArray* trollStoreInstalledAppContainerPathsInternal(NSString *marker) { NSMutableArray* appContainerPaths = [NSMutableArray new]; @@ -336,11 +356,12 @@ NSArray* trollStoreInstalledAppContainerPaths() BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:containerPath isDirectory:&isDirectory]; if(exists && isDirectory) { - NSString* trollStoreMark = [containerPath stringByAppendingPathComponent:@"_TrollStore"]; + NSString* trollStoreMark = [containerPath stringByAppendingPathComponent:marker]; if([[NSFileManager defaultManager] fileExistsAtPath:trollStoreMark]) { NSString* trollStoreApp = [containerPath stringByAppendingPathComponent:@"TrollStore.app"]; - if(![[NSFileManager defaultManager] fileExistsAtPath:trollStoreApp]) + NSString* trollStoreLiteApp = [containerPath stringByAppendingPathComponent:@"TrollStoreLite.app"]; + if(![[NSFileManager defaultManager] fileExistsAtPath:trollStoreApp] && ![[NSFileManager defaultManager] fileExistsAtPath:trollStoreLiteApp]) { [appContainerPaths addObject:containerPath]; } @@ -351,10 +372,15 @@ NSArray* trollStoreInstalledAppContainerPaths() return appContainerPaths.copy; } -NSArray* trollStoreInstalledAppBundlePaths() +NSArray *trollStoreInstalledAppContainerPaths(void) +{ + return trollStoreInstalledAppContainerPathsInternal(TS_ACTIVE_MARKER); +} + +NSArray* trollStoreInstalledAppBundlePathsInternal(NSString *marker) { NSMutableArray* appPaths = [NSMutableArray new]; - for(NSString* containerPath in trollStoreInstalledAppContainerPaths()) + for(NSString* containerPath in trollStoreInstalledAppContainerPathsInternal(marker)) { NSArray* items = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:containerPath error:nil]; if(!items) return nil; @@ -370,10 +396,20 @@ NSArray* trollStoreInstalledAppBundlePaths() return appPaths.copy; } +NSArray *trollStoreInstalledAppBundlePaths(void) +{ + return trollStoreInstalledAppBundlePathsInternal(TS_ACTIVE_MARKER); +} + +NSArray *trollStoreInactiveInstalledAppBundlePaths(void) +{ + return trollStoreInstalledAppBundlePathsInternal(TS_INACTIVE_MARKER); +} + NSString* trollStorePath() { NSError* mcmError; - MCMAppContainer* appContainer = [MCMAppContainer containerWithIdentifier:@"com.opa334.TrollStore" createIfNecessary:NO existed:NULL error:&mcmError]; + MCMAppContainer* appContainer = [MCMAppContainer containerWithIdentifier:APP_ID createIfNecessary:NO existed:NULL error:&mcmError]; if(!appContainer) return nil; return appContainer.url.path; } diff --git a/TrollHelper/Resources/Info.plist b/TrollHelper/Resources/Info.plist index ceac008..01f59de 100644 --- a/TrollHelper/Resources/Info.plist +++ b/TrollHelper/Resources/Info.plist @@ -52,7 +52,7 @@ iPhoneOS CFBundleVersion - 2.0.15 + 2.1 LSRequiresIPhoneOS UIDeviceFamily diff --git a/TrollHelper/control b/TrollHelper/control index 12a6565..3f5df20 100644 --- a/TrollHelper/control +++ b/TrollHelper/control @@ -1,6 +1,6 @@ Package: com.opa334.trollstorehelper Name: TrollStore Helper -Version: 2.0.15 +Version: 2.1 Architecture: iphoneos-arm Description: Helper utility to install and manage TrollStore! Maintainer: opa334 diff --git a/TrollStore/Resources/Info.plist b/TrollStore/Resources/Info.plist index 53b89ed..b0e7ea9 100644 --- a/TrollStore/Resources/Info.plist +++ b/TrollStore/Resources/Info.plist @@ -50,7 +50,7 @@ iPhoneOS CFBundleVersion - 2.0.15 + 2.1 LSRequiresIPhoneOS UIDeviceFamily diff --git a/TrollStore/TSApplicationsManager.m b/TrollStore/TSApplicationsManager.m index 8dba589..f873e37 100644 --- a/TrollStore/TSApplicationsManager.m +++ b/TrollStore/TSApplicationsManager.m @@ -42,7 +42,7 @@ extern NSUserDefaults* trollStoreUserDefaults(); errorDescription = @"Failed to create container for app bundle."; break; case 171: - errorDescription = @"A non-TrollStore app with the same identifier is already installed. If you are absolutely sure it is not, you can force install it."; + errorDescription = @"A non "APP_NAME@" or a "OTHER_APP_NAME@" app with the same identifier is already installed. If you are absolutely sure it is not, you can force install it."; break; case 172: errorDescription = @"The app does not contain an Info.plist file."; diff --git a/TrollStore/TSSceneDelegate.m b/TrollStore/TSSceneDelegate.m index b5090fa..e86b456 100644 --- a/TrollStore/TSSceneDelegate.m +++ b/TrollStore/TSSceneDelegate.m @@ -130,6 +130,7 @@ // or if it's the one from an old TrollStore version that's no longer supported - (void)handleLdidCheck { +#ifndef TROLLSTORE_LITE //if (@available(iOS 16, *)) {} else { NSString* tsAppPath = [NSBundle mainBundle].bundlePath; @@ -141,6 +142,7 @@ [TSInstallationController installLdid]; } //} +#endif } - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { diff --git a/TrollStore/TSSettingsAdvancedListController.m b/TrollStore/TSSettingsAdvancedListController.m index 8bdc1b9..5f77982 100644 --- a/TrollStore/TSSettingsAdvancedListController.m +++ b/TrollStore/TSSettingsAdvancedListController.m @@ -1,4 +1,5 @@ #import "TSSettingsAdvancedListController.h" +#import "TSUtil.h" #import extern NSUserDefaults* trollStoreUserDefaults(); @@ -39,7 +40,7 @@ extern NSUserDefaults* trollStoreUserDefaults(); edit:nil]; [installationMethodSegmentSpecifier setProperty:@YES forKey:@"enabled"]; installationMethodSegmentSpecifier.identifier = @"installationMethodSegment"; - [installationMethodSegmentSpecifier setProperty:@"com.opa334.TrollStore" forKey:@"defaults"]; + [installationMethodSegmentSpecifier setProperty:APP_ID forKey:@"defaults"]; [installationMethodSegmentSpecifier setProperty:@"installationMethod" forKey:@"key"]; installationMethodSegmentSpecifier.values = @[@0, @1]; installationMethodSegmentSpecifier.titleDictionary = @{@0 : @"installd", @1 : @"Custom"}; @@ -71,7 +72,7 @@ extern NSUserDefaults* trollStoreUserDefaults(); edit:nil]; [uninstallationMethodSegmentSpecifier setProperty:@YES forKey:@"enabled"]; uninstallationMethodSegmentSpecifier.identifier = @"uninstallationMethodSegment"; - [uninstallationMethodSegmentSpecifier setProperty:@"com.opa334.TrollStore" forKey:@"defaults"]; + [uninstallationMethodSegmentSpecifier setProperty:APP_ID forKey:@"defaults"]; [uninstallationMethodSegmentSpecifier setProperty:@"uninstallationMethod" forKey:@"key"]; uninstallationMethodSegmentSpecifier.values = @[@0, @1]; uninstallationMethodSegmentSpecifier.titleDictionary = @{@0 : @"installd", @1 : @"Custom"}; diff --git a/TrollStore/TSSettingsListController.m b/TrollStore/TSSettingsListController.m index 61fb1e7..27c80ea 100644 --- a/TrollStore/TSSettingsListController.m +++ b/TrollStore/TSSettingsListController.m @@ -20,6 +20,7 @@ extern NSUserDefaults* trollStoreUserDefaults(void); [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadSpecifiers) name:UIApplicationWillEnterForegroundNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadSpecifiers) name:@"TrollStoreReloadSettingsNotification" object:nil]; +#ifndef TROLLSTORE_LITE fetchLatestTrollStoreVersion(^(NSString* latestVersion) { NSString* currentVersion = [self getTrollStoreVersion]; @@ -64,6 +65,7 @@ extern NSUserDefaults* trollStoreUserDefaults(void); { _devModeEnabled = YES; } +#endif [self reloadSpecifiers]; } @@ -73,6 +75,7 @@ extern NSUserDefaults* trollStoreUserDefaults(void); { _specifiers = [NSMutableArray new]; +#ifndef TROLLSTORE_LITE if(_newerVersion) { PSSpecifier* updateTrollStoreGroupSpecifier = [PSSpecifier emptyGroupSpecifier]; @@ -111,10 +114,23 @@ extern NSUserDefaults* trollStoreUserDefaults(void); enableDevModeSpecifier.buttonAction = @selector(enableDevModePressed); [_specifiers addObject:enableDevModeSpecifier]; } +#endif PSSpecifier* utilitiesGroupSpecifier = [PSSpecifier emptyGroupSpecifier]; utilitiesGroupSpecifier.name = @"Utilities"; - [utilitiesGroupSpecifier setProperty:@"If an app does not immediately appear after installation, respring here and it should appear afterwards." forKey:@"footerText"]; + + NSString *utilitiesDescription = @""; +#ifdef TROLLSTORE_LITE + if (shouldRegisterAsUserByDefault()) { + utilitiesDescription = @"Apps will be registered as User by default since AppSync Unified is installed.\n\n"; + } + else { + utilitiesDescription = @"Apps will be registered as System by default since AppSync Unified is not installed. When apps loose their System registration and stop working, press \"Refresh App Registrations\" here to fix them.\n\n"; + } +#endif + utilitiesDescription = [utilitiesDescription stringByAppendingString:@"If an app does not immediately appear after installation, respring here and it should appear afterwards."]; + + [utilitiesGroupSpecifier setProperty:utilitiesDescription forKey:@"footerText"]; [_specifiers addObject:utilitiesGroupSpecifier]; PSSpecifier* respringButtonSpecifier = [PSSpecifier preferenceSpecifierNamed:@"Respring" @@ -130,6 +146,19 @@ extern NSUserDefaults* trollStoreUserDefaults(void); [_specifiers addObject:respringButtonSpecifier]; + PSSpecifier* refreshAppRegistrationsSpecifier = [PSSpecifier preferenceSpecifierNamed:@"Refresh App Registrations" + target:self + set:nil + get:nil + detail:nil + cell:PSButtonCell + edit:nil]; + refreshAppRegistrationsSpecifier.identifier = @"refreshAppRegistrations"; + [refreshAppRegistrationsSpecifier setProperty:@YES forKey:@"enabled"]; + refreshAppRegistrationsSpecifier.buttonAction = @selector(refreshAppRegistrationsPressed); + + [_specifiers addObject:refreshAppRegistrationsSpecifier]; + PSSpecifier* rebuildIconCacheSpecifier = [PSSpecifier preferenceSpecifierNamed:@"Rebuild Icon Cache" target:self set:nil @@ -143,6 +172,23 @@ extern NSUserDefaults* trollStoreUserDefaults(void); [_specifiers addObject:rebuildIconCacheSpecifier]; + NSArray *inactiveBundlePaths = trollStoreInactiveInstalledAppBundlePaths(); + if (inactiveBundlePaths.count > 0) { + PSSpecifier* transferAppsSpecifier = [PSSpecifier preferenceSpecifierNamed:[NSString stringWithFormat:@"Transfer %zu "OTHER_APP_NAME@" %@", inactiveBundlePaths.count, inactiveBundlePaths.count > 1 ? @"Apps" : @"App"] + target:self + set:nil + get:nil + detail:nil + cell:PSButtonCell + edit:nil]; + transferAppsSpecifier.identifier = @"transferApps"; + [transferAppsSpecifier setProperty:@YES forKey:@"enabled"]; + transferAppsSpecifier.buttonAction = @selector(transferAppsPressed); + + [_specifiers addObject:transferAppsSpecifier]; + } + +#ifndef TROLLSTORE_LITE //if (@available(iOS 16, *)) { } else { NSString* ldidPath = [NSBundle.mainBundle.bundlePath stringByAppendingPathComponent:@"ldid"]; NSString* ldidVersionPath = [NSBundle.mainBundle.bundlePath stringByAppendingPathComponent:@"ldid.version"]; @@ -288,6 +334,7 @@ extern NSUserDefaults* trollStoreUserDefaults(void); [_specifiers addObject:_installPersistenceHelperSpecifier]; } } +#endif PSSpecifier* installationSettingsGroupSpecifier = [PSSpecifier emptyGroupSpecifier]; installationSettingsGroupSpecifier.name = @"Security"; @@ -316,14 +363,14 @@ extern NSUserDefaults* trollStoreUserDefaults(void); installAlertConfigurationSpecifier.detailControllerClass = [PSListItemsController class]; [installAlertConfigurationSpecifier setProperty:@"installationConfirmationValues" forKey:@"valuesDataSource"]; [installAlertConfigurationSpecifier setProperty:@"installationConfirmationNames" forKey:@"titlesDataSource"]; - [installAlertConfigurationSpecifier setProperty:@"com.opa334.TrollStore" forKey:@"defaults"]; + [installAlertConfigurationSpecifier setProperty:APP_ID forKey:@"defaults"]; [installAlertConfigurationSpecifier setProperty:@"installAlertConfiguration" forKey:@"key"]; [installAlertConfigurationSpecifier setProperty:@0 forKey:@"default"]; [_specifiers addObject:installAlertConfigurationSpecifier]; PSSpecifier* otherGroupSpecifier = [PSSpecifier emptyGroupSpecifier]; - [otherGroupSpecifier setProperty:[NSString stringWithFormat:@"TrollStore %@\n\n© 2022-2024 Lars Fröder (opa334)\n\nTrollStore is NOT for piracy!\n\nCredits:\nGoogle TAG, @alfiecg_dev: CoreTrust bug\n@lunotech11, @SerenaKit, @tylinux, @TheRealClarity, @dhinakg, @khanhduytran0: Various contributions\n@ProcursusTeam: uicache, ldid\n@cstar_ow: uicache\n@saurik: ldid", [self getTrollStoreVersion]] forKey:@"footerText"]; + [otherGroupSpecifier setProperty:[NSString stringWithFormat:@"%@ %@\n\n© 2022-2024 Lars Fröder (opa334)\n\nTrollStore is NOT for piracy!\n\nCredits:\nGoogle TAG, @alfiecg_dev: CoreTrust bug\n@lunotech11, @SerenaKit, @tylinux, @TheRealClarity, @dhinakg, @khanhduytran0: Various contributions\n@ProcursusTeam: uicache, ldid\n@cstar_ow: uicache\n@saurik: ldid", APP_NAME, [self getTrollStoreVersion]] forKey:@"footerText"]; [_specifiers addObject:otherGroupSpecifier]; PSSpecifier* advancedLinkSpecifier = [PSSpecifier preferenceSpecifierNamed:@"Advanced" @@ -348,6 +395,7 @@ extern NSUserDefaults* trollStoreUserDefaults(void); [donateSpecifier setProperty:@YES forKey:@"enabled"]; [_specifiers addObject:donateSpecifier]; +#ifndef TROLLSTORE_LITE // Uninstall TrollStore PSSpecifier* uninstallTrollStoreSpecifier = [PSSpecifier preferenceSpecifierNamed:@"Uninstall TrollStore" target:self @@ -361,7 +409,7 @@ extern NSUserDefaults* trollStoreUserDefaults(void); [uninstallTrollStoreSpecifier setProperty:NSClassFromString(@"PSDeleteButtonCell") forKey:@"cellClass"]; uninstallTrollStoreSpecifier.buttonAction = @selector(uninstallTrollStorePressed); [_specifiers addObject:uninstallTrollStoreSpecifier]; - +#endif /*PSSpecifier* doTheDashSpecifier = [PSSpecifier preferenceSpecifierNamed:@"Do the Dash" target:self set:nil @@ -439,7 +487,7 @@ extern NSUserDefaults* trollStoreUserDefaults(void); { if([[NSFileManager defaultManager] fileExistsAtPath:[@"/System/Library/AppSignatures" stringByAppendingPathComponent:appProxy.bundleIdentifier]]) { - NSURL* trollStoreMarkURL = [appProxy.bundleURL.URLByDeletingLastPathComponent URLByAppendingPathComponent:@"_TrollStore"]; + NSURL* trollStoreMarkURL = [appProxy.bundleURL.URLByDeletingLastPathComponent URLByAppendingPathComponent:TS_ACTIVE_MARKER]; if(![trollStoreMarkURL checkResourceIsReachableAndReturnError:nil]) { [appCandidates addObject:appProxy]; @@ -471,6 +519,52 @@ extern NSUserDefaults* trollStoreUserDefaults(void); [TSPresentationDelegate presentViewController:selectAppAlert animated:YES completion:nil]; } +- (void)transferAppsPressed +{ + UIAlertController *confirmationAlert = [UIAlertController alertControllerWithTitle:@"Transfer Apps" message:[NSString stringWithFormat:@"This option will transfer %zu apps from "OTHER_APP_NAME@" to "APP_NAME@". Continue?", trollStoreInactiveInstalledAppBundlePaths().count] preferredStyle:UIAlertControllerStyleAlert]; + + UIAlertAction* transferAction = [UIAlertAction actionWithTitle:@"Transfer" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action) + { + [TSPresentationDelegate startActivity:@"Transfering"]; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ + { + NSString *log; + int transferRet = spawnRoot(rootHelperPath(), @[@"transfer-apps"], nil, &log); + + dispatch_async(dispatch_get_main_queue(), ^ + { + [TSPresentationDelegate stopActivityWithCompletion:^ + { + [self reloadSpecifiers]; + + if (transferRet != 0) { + NSArray *remainingApps = trollStoreInactiveInstalledAppBundlePaths(); + UIAlertController *errorAlert = [UIAlertController alertControllerWithTitle:@"Transfer Failed" message:[NSString stringWithFormat:@"Failed to transfer %zu %@", remainingApps.count, remainingApps.count > 1 ? @"apps" : @"app"] preferredStyle:UIAlertControllerStyleAlert]; + + UIAlertAction* copyLogAction = [UIAlertAction actionWithTitle:@"Copy Debug Log" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action) + { + UIPasteboard* pasteboard = [UIPasteboard generalPasteboard]; + pasteboard.string = log; + }]; + [errorAlert addAction:copyLogAction]; + + UIAlertAction* closeAction = [UIAlertAction actionWithTitle:@"Close" style:UIAlertActionStyleDefault handler:nil]; + [errorAlert addAction:closeAction]; + + [TSPresentationDelegate presentViewController:errorAlert animated:YES completion:nil]; + } + }]; + }); + }); + }]; + [confirmationAlert addAction:transferAction]; + + UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]; + [confirmationAlert addAction:cancelAction]; + + [TSPresentationDelegate presentViewController:confirmationAlert animated:YES completion:nil]; +} + - (id)getURLSchemeEnabledForSpecifier:(PSSpecifier*)specifier { BOOL URLSchemeActive = (BOOL)[NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleURLTypes"]; diff --git a/TrollStore/control b/TrollStore/control index bce7e39..808bf55 100644 --- a/TrollStore/control +++ b/TrollStore/control @@ -1,6 +1,6 @@ Package: com.opa334.trollstore Name: TrollStore -Version: 2.0.15 +Version: 2.1 Architecture: iphoneos-arm Description: An awesome application! Maintainer: opa334 diff --git a/TrollStore/main.m b/TrollStore/main.m index 99cf0a0..ba87d0a 100644 --- a/TrollStore/main.m +++ b/TrollStore/main.m @@ -4,7 +4,7 @@ NSUserDefaults* trollStoreUserDefaults(void) { - return [[NSUserDefaults alloc] initWithSuiteName:[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Preferences/com.opa334.TrollStore.plist"]]; + return [[NSUserDefaults alloc] initWithSuiteName:[NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Library/Preferences/%@.plist", APP_ID]]]; } int main(int argc, char *argv[]) { diff --git a/TrollStoreLite/.gitignore b/TrollStoreLite/.gitignore new file mode 100644 index 0000000..8fb7de9 --- /dev/null +++ b/TrollStoreLite/.gitignore @@ -0,0 +1 @@ +Resources/trollstorehelper \ No newline at end of file diff --git a/TrollStoreLite/Makefile b/TrollStoreLite/Makefile new file mode 100644 index 0000000..c2cfa0c --- /dev/null +++ b/TrollStoreLite/Makefile @@ -0,0 +1,16 @@ +TARGET := iphone:clang:16.5:14.0 +INSTALL_TARGET_PROCESSES = TrollStoreLite +ARCHS = arm64 + +include $(THEOS)/makefiles/common.mk + +APPLICATION_NAME = TrollStoreLite + +TrollStoreLite_FILES = $(wildcard ../TrollStore/*.m) $(wildcard ../Shared/*.m) +TrollStoreLite_FRAMEWORKS = UIKit CoreGraphics CoreServices CoreTelephony +TrollStoreLite_PRIVATE_FRAMEWORKS = Preferences MobileIcons MobileContainerManager +TrollStoreLite_LIBRARIES = archive +TrollStoreLite_CFLAGS = -fobjc-arc -I../Shared -I$(shell brew --prefix)/opt/libarchive/include -DTROLLSTORE_LITE +TrollStoreLite_CODESIGN_FLAGS = -Sentitlements.plist + +include $(THEOS_MAKE_PATH)/application.mk diff --git a/TrollStoreLite/Resources/AppIcon29x29.png b/TrollStoreLite/Resources/AppIcon29x29.png new file mode 100644 index 0000000000000000000000000000000000000000..22f75955e7c756e8094832592d50b0e9e3f8f16e GIT binary patch literal 1765 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 literal 0 HcmV?d00001 diff --git a/TrollStoreLite/Resources/AppIcon29x29@3x.png b/TrollStoreLite/Resources/AppIcon29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8dc678ba0c18001c4a6d3158c0e7a904c1158a GIT binary patch literal 6884 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

b zitYW6s~laP>bL>+-VrB8-Qb(tzWTql&G+6^7@+m3_A>U;I-g+6`ypk2Fm zs9d=+`U%hW%Sw$wi{Jxj;+&8|VXBD6+O=yjaNs~RY0?B`%a+x&Ws3mffBzj@w{8XJ zCOoD)vKo|qKboqgLMIW_wE(Z9Z`$gwQHAFn9$Hr<>LDF>k-r>2tM9E`akD& zEPr+Z8g_B#&K*peGzr_cZ&x3TiHSkOh7HxXs9KJMgaj=6?KkumM8=Md(3X;FC68Fz z5)%{Q=H@Qw^q1o)T5)`3fx~|OS%tH7=~A3MdsYRrXwf1J9XeFeEi^zr*jC947A(*J zS&{;z2Ge|*PS#bX@cjAnn%b&WtK#n6yL#To#|MA?bwbj8P_HA>ti9x7>(;IHItK6I z;UQ?I;+J0{^f$%ktXIru)JC0+jfusOp+m4?!v^)MkWL{8{V7y^jy6PfQ#28gk=QAm zq8Cn>FhLhU>+$gL6qFAsC1~svz^$7%5g-mg&XMm)NlBPEaUxEhJPETjATB1W1K4)> zP6MQskbmLf;mVEJ*jV_L@0K-QkZQ&EJ6R$rAyeeXOGTdYzf#4u2```E0tsQFu+g@9lIH=$HJp% zae3BWmOFkJBpXt;TNKCaIkOQyGF-XH!GgbJ$rAm|AbLpp*bjE<)Jb`3k%gH=u{7`@ zqS&S)Akyeto2YyU8aMD}mOQpoOf$QYvQFJU_0 zy?dufaY3{RrjMnJb(;4OZ3fFqK?>0GXv7RUGBQFoO`_OBwx9Ohj7`Y75}*rQ5j8nV z#lZ(NE$sE!S<^C%!8*!eY?9c5-M)QC5#zCH)v9R)q7$%!u-ec+ou}3L_A_6Kje1Ng zp~EL9Co74GOiD_MB0}US7XHr6%0yb~d!$ML9Bj+jsvx6#145h9044dYdb?f$nouXCJk+>NGz z2p&FsSh>iw`S|!saW`oX$JDc{CO7GO+^w-9FqNz}>{uoy&=;B@T%>auxo%5>; z7DfIujz|740b0Yhd9)KT6xj!hgIICw!ZF68KF0yU;^@mjh2J)BcM6-L*ee450TTm^ U&3s!WRsaA107*qoM6N<$f{)JSJ^%m! literal 0 HcmV?d00001 diff --git a/TrollStoreLite/Resources/AppIcon40x40@2x.png b/TrollStoreLite/Resources/AppIcon40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2bca8bff26a48ab3d03e18c7aecfc84331ff34 GIT binary patch literal 5550 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 literal 0 HcmV?d00001 diff --git a/TrollStoreLite/Resources/AppIcon40x40@3x.png b/TrollStoreLite/Resources/AppIcon40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8b89b68ebf21e32a242309ed4e63d2b74931c5f8 GIT binary patch literal 9359 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

-*x(&J-a*e=1sr8RkvTmJ6#*t9Xa$VDzv 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 literal 0 HcmV?d00001 diff --git a/TrollStoreLite/Resources/AppIcon57x57@3x.png b/TrollStoreLite/Resources/AppIcon57x57@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..86254d410ca406d08f82e548e04e12a24fe7ecd0 GIT binary patch literal 9496 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 O0000gPD0V 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 FV1j*@Vs8Kd literal 0 HcmV?d00001 diff --git a/TrollStoreLite/Resources/AppIcon76x76.png b/TrollStoreLite/Resources/AppIcon76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc98723541a40087b49efd364b7bafe59551052 GIT binary patch literal 5718 zcmV-c7OClpP)E|ON+(t<=PMJWuSv?yth(jskFkqVLQ7g{cr$X2$rlTgtjV<%a%wV2Re zc3IPy|NDE+d5-U#IcLsy&YYqD+jXuPGvD&Q_j^D0b3f1bO=;O~NIs2&?z%^XuFY-I z{NKs%;o&#&e|^u9es9GoX~_Z>nr8|ooYX3h&`C)Hc39@?ckAy92R-#!^wfg@X6QVZgtT8mml{@Il}D zyS8oHrc48%V#SI{(V|7AM2Qk|{PD+2nKEUhQl(0A;)y59fddDWoyKN1jB~#H@=Iyg zww)9%T39~&>@&IW!V42;S}uAKVwi8_BQ9oO{r&gf^3qE$$qO&MAltWZmr|ul$r)#y zAt#)0f)p-XST4KlGCB3sQx!NC$%0uVzXPXN#~h;{00Jyy>%RT_Wb>xYl9`z) z>%RY9(p;!FY}in$R;?O!X+Qt`vs`n{HOl7Y%a`jsxMwOfE$NUnF=rA}rc9A`?b^wo zfBq@0TD6ikZQ3X}FbE)u6e*(M5KhJfw8gss!jtp)?A*Ci7igId1_C6kJoeaQW&Qf~ zGI8QWW#rv=-z{gIb(S7)a{}lcJ9fzV=bx{@1DYk9yk^fhfJM)QUa-18-BtSc>n|5y ze6hUx>Z?+=Y*~5jwb!I_<;wEUKmVwJ!=^$73Q3_Ng#z;6z++K%9SbX%b<#;E$;l_5 z?8LjY3O3gOz(4-@LtxHdfBmJuzx2{e_2+NB^_HA|`ss4lU3Z1p%k{Yax8JUjYSpUC zlTSV=&p!KXNeWl0dFB}f0}X-^EI!%*BtSsx*lj`*o$?Nn z!Z+W1qsOpt*kO9cwPDW>Km4HQHEr6|C6%?Zc=2Mn?Y7%g+(V~zRv2a2Yy&_y|)v6T+Qot5u zDL`L*@r5Rf^z;UrE%`a&w`tQR`R%vglvyR*bxw9kV9lDfa?Uw5kn!Wk%X#OW zCk+}j2n*2)6)I>1eDJ{sd0?5dOD+p01em#Pw208T@x~iv8H}9NfQMZX0w44 zCQQ(b3iH?m=0y|`4QL;ml^2#J1ek>)3r2wF&YdT9>s}mMG*lloYLuq^>#n;l>SE{4 zohxUad8S%~NU#V|G8-Xw_0?DFMsQ89w=-bVveRVGzCH5XbI&QG*bLYQXj}tU*?H(F zx_A5Sx2w*w;gQ$O#Yu$yDn4KyzhRkc<;sK^dGlsv3?a?OI}r57jT@^O#^ZVIhJn+iODAV}2B~Q# zdz&}(3zQv~5MY|^9K{C>8YGWD{&+x3JYi*Kk_;DX?A*0O=FXlcS6y{gRByxr0m@A1 z(4j-si~=G*<9@KGPMta`39yR+E2~wjrkmj1DBEPBqFlLh(z;b^88?1hAalF5Bs$^) z7QCW`BU*$GTy)Vz>c6(;IH7%T(e@w9~o1(|AK|Nc@h$cn(p0k21Q0bK&*X3d(p?6*b+ z4jd?*I(5>cU=tg}=Gc7d*RQX30p^fdVLbY&R}DUH1t>Bs8%<&$bYa`FWy_>`_3GiW zpfkyR#0AXEB{zlsxMp;S9bK|yiPD-d0Kl3xYYKLvZ{NOpSD3{_&2w=rjz_5Px#u3O z0=%qXab(X`t5(URWgDvMZ*M+L)@7#?mRM_0F!Ef0@({3Vow(@`~QtSg6joOex8U}GLi)Q0s z7>nju?m~3O=B%Sg}I88Ti7lzy4ZT>$m9`7ciqg;dkw|*UC*d z-J~}`!?(+&se&v-{YKWIFUtXE@@y8!4$n?(M zc;gM|vFH69a9Pfu5NuvkJ*lR-o|iX|a*(HuG$-qw)a zZ|TydGHu#adEkKu^S@4X?5z$Se7;fKmh=F5h5?ATEyfeog< zWrOj7XPW*kq+%M;4CsHw6<4TcA-L!Z3)!$?gDw6;}0 zSYy=_!jPgG<7tE4<;EK}Zct-LCzPF}i$TVMC9vVW_uiA6Z@yV|h&nKKQ;*(Opno5E zjJ1Mdb{w1pELgZe`((`P)?05?KgVDbkd)4yJL~UR2QmWSbcv};<2?uP1sGZ7l1na; zu3ft-JEl#W=Je$O&6eyOtV7G#K};tMU&acgaPwLY^3PJ7Rn-AJd~#cfH9@6MC|cH=G?tEX5na?F)L>?0Asr4Z4V*p!-fshdjKktKt21(C!Z+8aHGYG71s?lpZ4&>59{X8d<0mG zEYcFMl^xes*ad3WuC1Yl(9;nBFp6AS#klZ_70WwMlo{4tz#~zL*rH)6paQZvcD~YO zpuEA|0|=syfh9B3YwO*+w`N|BH8$~Y0HM7!W5x_!C|R?2-`-NTOj!jPrmk_IOmKZN zHWb|gAZ!V9XC6cb8pm@8+Th*}O0Zp5UO+qx^?Ro*0-{2pdBoNfq|r_rX#}OqA#;&XSj`-?8>JZ`c#_@fNd~| za~UuTNx;q^`XnGCfPsu;WMpU(Vt$xdtO)ZbX(178G^}OB?)4v1_5fgUUXw7E0S2W- zX9q}k2M9LpMr%nz+1bCb1Ov}mE3)4(z@2V}I7ghaa<;Nn?{(9XGU5&{e`D3NHR;HAhc ze9sOe^stE?fAPf^HS8XF*ixdpE;CAw)5#JY=CZ_M=U?z``LH&ego8W>IV23F9r zv0*X*SQzHXWJ=fI(-i>ceDn(~L!$z%?L!0bF{WrEj3ZBFImV!a{2MVRoDp%ZZ4E(V z7hiGo=p%ZY5Lh17PYN*n7dpjYveqgwuMLkIP z0y4!q;4ruk-~%EoMHT>=Vj9rA2GrOE>!?yl5+ntVN$6!eo2%N2Xd}XE*p2`YJ*MZM ze_qc*=yA|YfNbX-bTIHwX=&M^$#ETf^6Ukb^8lLi1r~5!w9Q^_p&WxnXq`RL#)J}r zFqB7e0O4hhwTSqN6cF}=t{+FA6Osh~bjBuv8ARCWJTNGYcm#&GAv9SqR>99ezX(GZ zLe>KuDg`seTqEmXmaJa2T6GiGPXmBK_JlE|N|ko(n;xb~7V7rwkta_)c%gGa6ERtK zX*7fw7Uzw+tZetbsO!0-U({o?Q5cv%(lmW8is8XdSnqNzAiNkL(*3MjxvDg1*gzRX zp$wp;eliyNM%KciFIX_&`Kv`5Zq|u4HjteGg5n+j#r9QxQ~JL(MKO? z2Jh*5b3I&@l8|-SAtOxpsUa`T=U3gCk3ccT_ zL$M+xVZaCtK)_W~B-?`pcAL{Uo6MVY~Z?TI%wfc6eg!U-un6^x+PW6@kED~qmcnilK4Ba4P%gz4GSqQR^( z*buxIhLk}@B)kc0B!Oe;M!;Se$fn{MX+0Nrjz9ZwzvF5`O12?1&>TzI7D9w2tzLkk zkY?gA$Odg|L>@o@npcp}6qpJdy@Q9dgcFa|Ftz~0AY{=>S~M6}$}&0@Fe%-E+RgRR z@Q7$C^)7EIhGoV0e~%HIMs!h6bMMkqDESzH3t&3CyGc>xdM82{Que6$x(}Ah-c7|n zZF64g&)}12v>75i_kJs4A!T`u-ktwMx00+a$`(NCP@Fv+X zlCu!8;n0wb_sY4ki?6T()5_#v1v^Lxl8p!-n3vl`S*ZCh!ZWuQ+pH@=>l&*8i(oOp zaZkby1{13291n;`I}NSn+BE=`kY@Ry42SsAFawOtMyTMs5LtAF2erm5vK-lw9jBEO zIRFc0nOC-^qje|vJ)iAcx4U|8xh4-nn0rt%u_5Rmol*cH5%Bn*L5mwt$R_ydK;*`Fr2&?ho`cBJtEB0Y#2wj zvO$dpz=D^Laz!Cg0R4z8rggJcqd99d)o$2gY?noJggE_2MY9+$m*VuiK|Jm3&&6w#DLfhXiS2j^iI$jEF|y?XVXUJVEt*24{y z&CnOaY$sVXefu`f98PhypuHMy@92l^a;!~=vpKK`LyCw~S`m^6yFGLC50no2moS}~Mg_QIXDYI5yi z#nR!(pNIaPIH(B$X59e%Q8VYj7rCd|yuikb9+B_P=h!^Yq^SU45ylg1VqntzBm45i z2S%AkOQyq+1bJeg;+cCwfN@2$7zjPShle3(5k{8xA@F3lakR=ZAp(yM!Ad@qMhsYl zYsXiiiwM4V&y#sbky4(IgA;8U$pd!S=6l#~8)oE-Wr!$%b0W&r5QFsh-FG0P^-u{EGj8ga7~l07*qo IM6N<$f?%rC-~a#s literal 0 HcmV?d00001 diff --git a/TrollStoreLite/Resources/AppIcon76x76@2x.png b/TrollStoreLite/Resources/AppIcon76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3e658ed8fc7339df292f323e9b393dc0648d446c GIT binary patch literal 13215 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 + + + + CFBundleExecutable + TrollStoreLite + CFBundleDisplayName + TrollStore Lite + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconFiles + + AppIcon29x29 + AppIcon40x40 + AppIcon57x57 + AppIcon60x60 + + UIPrerenderedIcon + + + + CFBundleIcons~ipad + + CFBundlePrimaryIcon + + CFBundleIconFiles + + AppIcon29x29 + AppIcon40x40 + AppIcon57x57 + AppIcon60x60 + AppIcon50x50 + AppIcon72x72 + AppIcon76x76 + + UIPrerenderedIcon + + + + CFBundleIdentifier + com.opa334.TrollStoreLite + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleSupportedPlatforms + + iPhoneOS + + CFBundleVersion + 2.1 + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + armv7 + + UILaunchStoryboardName + LaunchScreen + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + TSSceneDelegate + + + + + UTImportedTypeDeclarations + + + UTTypeConformsTo + + public.data + + UTTypeDescription + iOS App + UTTypeIconFiles + + UTTypeIdentifier + com.apple.itunes.ipa + UTTypeTagSpecification + + public.filename-extension + + ipa + + public.mime-type + + + + + CFBundleDocumentTypes + + + CFBundleTypeName + iOS App + LSHandlerRank + Default + LSItemContentTypes + + com.apple.itunes.ipa + + + + CFBundleTypeName + AirDrop friendly iOS app + CFBundleTypeRole + Viewer + LSHandlerRank + Owner + LSItemContentTypes + + com.opa334.trollstore.tipa + + + + UTExportedTypeDeclarations + + + UTTypeIdentifier + com.opa334.trollstore.tipa + UTTypeDescription + AirDrop friendly iOS app + UTTypeConformsTo + + public.data + + UTTypeTagSpecification + + public.filename-extension + + tipa + + public.mime-type + application/trollstore-ipa + + + + CFBundleURLTypes + + + CFBundleURLName + com.apple.Magnifier + CFBundleURLSchemes + + apple-magnifier + + + + LSSupportsOpeningDocumentsInPlace + + TSRootBinaries + + trollstorehelper + + + diff --git a/TrollStoreLite/control b/TrollStoreLite/control new file mode 100644 index 0000000..4f7c331 --- /dev/null +++ b/TrollStoreLite/control @@ -0,0 +1,9 @@ +Package: com.opa334.trollstorelite +Name: TrollStore Lite +Version: 2.1 +Architecture: iphoneos-arm +Description: TrollStore for jailbroken iOS +Depends: ldid +Maintainer: opa334 +Author: opa334 +Section: Applications diff --git a/TrollStoreLite/entitlements.plist b/TrollStoreLite/entitlements.plist new file mode 100644 index 0000000..abc5d7b --- /dev/null +++ b/TrollStoreLite/entitlements.plist @@ -0,0 +1,45 @@ + + + + + application-identifier + com.opa334.TrollStore + platform-application + + com.apple.security.exception.files.absolute-path.read-write + + / + + com.apple.security.exception.iokit-user-client-class + + AGXDeviceUserClient + IOSurfaceRootUserClient + + com.apple.private.security.no-sandbox + + com.apple.private.persona-mgmt + + com.apple.private.security.container-manager + + com.apple.private.coreservices.canmaplsdatabase + + com.apple.lsapplicationworkspace.rebuildappdatabases + + com.apple.private.MobileContainerManager.allowed + + com.apple.private.MobileInstallationHelperService.InstallDaemonOpsEnabled + + com.apple.private.MobileInstallationHelperService.allowed + + com.apple.private.uninstall.deletion + + com.apple.private.security.storage.MobileDocuments + + com.apple.CommCenter.fine-grained + + data-allowed-write + + com.apple.springboard.opensensitiveurl + + + \ No newline at end of file