diff --git a/Makefile b/Makefile index 6292bc5..783c22c 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,7 @@ build_installer15: @unzip ./Victim/InstallerVictim.ipa -d ./_build/tmp15 @cp ./TrollHelper/.theos/obj/TrollStorePersistenceHelper.app/TrollStorePersistenceHelper ./_build/TrollStorePersistenceHelperToInject @pwnify set-cpusubtype ./_build/TrollStorePersistenceHelperToInject 1 - @ldid -s -K./Victim/victim_gta.p12 ./_build/TrollStorePersistenceHelperToInject + @ldid -s -K./Victim/victim.p12 ./_build/TrollStorePersistenceHelperToInject APP_PATH=$$(find ./_build/tmp15/Payload -name "*" -depth 1) ; \ APP_NAME=$$(basename $$APP_PATH) ; \ BINARY_NAME=$$(echo "$$APP_NAME" | cut -f 1 -d '.') ; \ diff --git a/RootHelper/control b/RootHelper/control index 4a82fb8..25219b2 100644 --- a/RootHelper/control +++ b/RootHelper/control @@ -1,6 +1,6 @@ Package: com.opa334.trollstoreroothelper Name: trollstoreroothelper -Version: 1.2 +Version: 1.2.2 Architecture: iphoneos-arm Description: An awesome tool of some sort!! Maintainer: opa334 diff --git a/RootHelper/main.m b/RootHelper/main.m index 558d040..b5f27b4 100644 --- a/RootHelper/main.m +++ b/RootHelper/main.m @@ -80,6 +80,25 @@ NSSet* appleURLSchemes(void) return systemURLSchemes.copy; } +NSSet* immutableAppBundleIdentifiers(void) +{ + NSMutableSet* systemAppIdentifiers = [NSMutableSet new]; + + LSEnumerator* enumerator = [LSEnumerator enumeratorForApplicationProxiesWithOptions:0]; + LSApplicationProxy* appProxy; + while(appProxy = [enumerator nextObject]) + { + if(appProxy.installed) + { + if(![appProxy.bundleURL.path hasPrefix:@"/private/var/containers"]) + { + [systemAppIdentifiers addObject:appProxy.bundleIdentifier.lowercaseString]; + } + } + } + + return systemAppIdentifiers.copy; +} NSDictionary* infoDictionaryForAppPath(NSString* appPath) { @@ -583,8 +602,15 @@ int installApp(NSString* appPath, BOOL sign, BOOL force) NSString* appId = appIdForAppPath(appPath); if(!appId) return 176; + if([immutableAppBundleIdentifiers() containsObject:appId.lowercaseString]) + { + return 179; + } - applyPatchesToInfoDictionary(appPath); + if(![appId isEqualToString:@"com.opa334.TrollStore"]) + { + applyPatchesToInfoDictionary(appPath); + } if(sign) { @@ -875,6 +901,12 @@ int installIpa(NSString* ipaPath, BOOL force) } } if(!tmpAppPath) return 167; + + NSString* appId = appIdForAppPath(tmpAppPath); + if([appId.lowercaseString isEqualToString:@"com.opa334.trollstore"]) + { + return 179; + } int ret = installApp(tmpAppPath, YES, force); diff --git a/RootHelper/uicache.m b/RootHelper/uicache.m index f50e214..f1554a9 100644 --- a/RootHelper/uicache.m +++ b/RootHelper/uicache.m @@ -6,6 +6,7 @@ // uicache on steroids +extern NSSet* immutableAppBundleIdentifiers(void); extern NSDictionary* dumpEntitlementsFromBinaryAtPath(NSString* binaryPath); NSDictionary* constructGroupsContainersForEntitlements(NSDictionary* entitlements, BOOL systemGroups) @@ -108,6 +109,8 @@ void registerPath(char* cPath, int unregister) NSDictionary* appInfoPlist = [NSDictionary dictionaryWithContentsOfFile:[path stringByAppendingPathComponent:@"Info.plist"]]; NSString* appBundleID = [appInfoPlist objectForKey:@"CFBundleIdentifier"]; + if([immutableAppBundleIdentifiers() containsObject:appBundleID.lowercaseString]) return; + if(appBundleID && !unregister) { MCMContainer* appContainer = [NSClassFromString(@"MCMAppDataContainer") containerWithIdentifier:appBundleID createIfNecessary:YES existed:nil error:nil]; diff --git a/TrollHelper/Resources/Info.plist b/TrollHelper/Resources/Info.plist index 6fb1e96..857f246 100644 --- a/TrollHelper/Resources/Info.plist +++ b/TrollHelper/Resources/Info.plist @@ -52,7 +52,7 @@ iPhoneOS CFBundleVersion - 1.2 + 1.2.2 LSRequiresIPhoneOS UIDeviceFamily diff --git a/TrollHelper/control b/TrollHelper/control index a0ac732..17ddd9a 100644 --- a/TrollHelper/control +++ b/TrollHelper/control @@ -1,6 +1,6 @@ Package: com.opa334.trollstorehelper Name: TrollStore Helper -Version: 1.2 +Version: 1.2.2 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 e1ab217..adb7f9c 100644 --- a/TrollStore/Resources/Info.plist +++ b/TrollStore/Resources/Info.plist @@ -50,7 +50,7 @@ iPhoneOS CFBundleVersion - 1.2 + 1.2.2 LSRequiresIPhoneOS UIDeviceFamily diff --git a/TrollStore/TSApplicationsManager.m b/TrollStore/TSApplicationsManager.m index 652c051..eebc197 100644 --- a/TrollStore/TSApplicationsManager.m +++ b/TrollStore/TSApplicationsManager.m @@ -109,6 +109,9 @@ case 178: errorDescription = @"Failed to copy app bundle."; break; + case 179: + errorDescription = @"The app you tried to install has the same identifier as a system app already installed on the device. The installation has been prevented to protect you from possible bootloops or other issues."; + break; // App detach errors /*case 184: errorDescription = @"Refusing to detach, the app is still signed with a fake root certificate. The detach option is only for when you have installed an App Store app on top of a TrollStore app."; diff --git a/TrollStore/control b/TrollStore/control index 8ea5828..d0661d1 100644 --- a/TrollStore/control +++ b/TrollStore/control @@ -1,6 +1,6 @@ Package: com.opa334.trollstore Name: TrollStore -Version: 1.2 +Version: 1.2.2 Architecture: iphoneos-arm Description: An awesome application! Maintainer: opa334 diff --git a/Victim/README.md b/Victim/README.md index 5e0ab41..3faab5d 100644 --- a/Victim/README.md +++ b/Victim/README.md @@ -1,13 +1,7 @@ -# Victim Binary and Cert +# Victim IPA and Cert -In order to support user app installations (works on anything but iOS 14 arm64), TrollStore needs a victim binary that it attaches to any binary installed by it. By default it uses the binary of "Pastebin Mobile", because the dev of that app gave me permission to use that. - -In order to compile a pwned TrollInstaller2 IPA, you need to provide a dev cert with the same team ID as your target app in this directory. +In order to compile a pwned TrollHelperOTA arm64 IPA, you need to provide a dev cert with the same team ID as your victim app in this directory. ```bash ./make_cert.sh ``` - -(Currently victim_gta.p12 is used by the build script, this works for GTA Car Tracker app, to use another app generate a new cert with the team ID and make sure to update the path in build script too) - -((Disregard the user app stuff described above, it's not implemented yet, will be in TrollStore 2.0)) \ No newline at end of file diff --git a/Victim/victim b/Victim/victim deleted file mode 100755 index b723ec1..0000000 Binary files a/Victim/victim and /dev/null differ diff --git a/Victim/victim.p12 b/Victim/victim.p12 index 00214ab..b47d699 100644 Binary files a/Victim/victim.p12 and b/Victim/victim.p12 differ diff --git a/Victim/victim_gta.p12 b/Victim/victim_gta.p12 deleted file mode 100644 index b47d699..0000000 Binary files a/Victim/victim_gta.p12 and /dev/null differ