mirror of https://github.com/opa334/TrollStore.git
Compare commits
4 Commits
79250bc7fb
...
5b467392e5
Author | SHA1 | Date |
---|---|---|
opa334 | 5b467392e5 | |
opa334 | 1264e022c4 | |
opa334 | f98b2a2094 | |
opa334 | 0d5b72b19d |
|
@ -10,7 +10,7 @@ Supported versions: 14.0 - 16.6.1, 16.7 RC (20H18), 17.0
|
||||||
|
|
||||||
For installing TrollStore, refer to the guides at [ios.cfw.guide](https://ios.cfw.guide/installing-trollstore)
|
For installing TrollStore, refer to the guides at [ios.cfw.guide](https://ios.cfw.guide/installing-trollstore)
|
||||||
|
|
||||||
16.7.x (excluding 16.7 RC) and 17.0.1+ will NEVER be supported (unless Apple fucks CoreTrust up a third time...).
|
16.7.x (excluding 16.7 RC) and 17.0.1+ will NEVER be supported (unless a third CoreTrust bug is discovered, which is unlikely).
|
||||||
|
|
||||||
## Updating TrollStore
|
## Updating TrollStore
|
||||||
|
|
||||||
|
@ -109,6 +109,10 @@ Afterwards you can use the [spawnRoot function in TSUtil.m](./Shared/TSUtil.m#L7
|
||||||
- Spawning a launch daemon (Would need `CS_PLATFORMIZED`)
|
- Spawning a launch daemon (Would need `CS_PLATFORMIZED`)
|
||||||
- Injecting a tweak into a system process (Would need `TF_PLATFORM`, a userland PAC bypass and a PMAP trust level bypass)
|
- Injecting a tweak into a system process (Would need `TF_PLATFORM`, a userland PAC bypass and a PMAP trust level bypass)
|
||||||
|
|
||||||
|
### Compilation
|
||||||
|
|
||||||
|
To compile TrollStore, ensure [theos](https://theos.dev/docs/installation) is installed. Additionaly ensure [brew](https://brew.sh/) is installed and install [libarchive](https://formulae.brew.sh/formula/libarchive) from brew.
|
||||||
|
|
||||||
## Credits and Further Reading
|
## Credits and Further Reading
|
||||||
|
|
||||||
[@alfiecg_dev](https://twitter.com/alfiecg_dev/) - Found the CoreTrust bug that allows TrollStore to work through patchdiffing and worked on automating the bypass.
|
[@alfiecg_dev](https://twitter.com/alfiecg_dev/) - Found the CoreTrust bug that allows TrollStore to work through patchdiffing and worked on automating the bypass.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Package: com.opa334.trollstoreroothelper
|
Package: com.opa334.trollstoreroothelper
|
||||||
Name: trollstoreroothelper
|
Name: trollstoreroothelper
|
||||||
Version: 2.0.11
|
Version: 2.0.12
|
||||||
Architecture: iphoneos-arm
|
Architecture: iphoneos-arm
|
||||||
Description: An awesome tool of some sort!!
|
Description: An awesome tool of some sort!!
|
||||||
Maintainer: opa334
|
Maintainer: opa334
|
||||||
|
|
|
@ -37,8 +37,8 @@ extern NSString *LSInstallTypeKey;
|
||||||
|
|
||||||
@protocol LSApplicationWorkspaceObserverProtocol <NSObject>
|
@protocol LSApplicationWorkspaceObserverProtocol <NSObject>
|
||||||
@optional
|
@optional
|
||||||
-(void)applicationsDidInstall:(id)arg1;
|
- (void)applicationsDidInstall:(NSArray <LSApplicationProxy *>*)apps;
|
||||||
-(void)applicationsDidUninstall:(id)arg1;
|
- (void)applicationsDidUninstall:(NSArray <LSApplicationProxy *>*)apps;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface LSEnumerator : NSEnumerator
|
@interface LSEnumerator : NSEnumerator
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
<string>iPhoneOS</string>
|
<string>iPhoneOS</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>2.0.11</string>
|
<string>2.0.12</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>UIDeviceFamily</key>
|
<key>UIDeviceFamily</key>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Package: com.opa334.trollstorehelper
|
Package: com.opa334.trollstorehelper
|
||||||
Name: TrollStore Helper
|
Name: TrollStore Helper
|
||||||
Version: 2.0.11
|
Version: 2.0.12
|
||||||
Architecture: iphoneos-arm
|
Architecture: iphoneos-arm
|
||||||
Description: Helper utility to install and manage TrollStore!
|
Description: Helper utility to install and manage TrollStore!
|
||||||
Maintainer: opa334
|
Maintainer: opa334
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
<string>iPhoneOS</string>
|
<string>iPhoneOS</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>2.0.11</string>
|
<string>2.0.12</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>UIDeviceFamily</key>
|
<key>UIDeviceFamily</key>
|
||||||
|
|
|
@ -104,7 +104,8 @@ UIImage* imageWithSize(UIImage* image, CGSize size)
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTable) name:@"ApplicationsChanged" object:nil];
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTable) name:@"ApplicationsChanged" object:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad
|
||||||
|
{
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
|
|
||||||
self.tableView.allowsMultipleSelectionDuringEditing = NO;
|
self.tableView.allowsMultipleSelectionDuringEditing = NO;
|
||||||
|
@ -340,11 +341,13 @@ UIImage* imageWithSize(UIImage* image, CGSize size)
|
||||||
|
|
||||||
#pragma mark - Table view data source
|
#pragma mark - Table view data source
|
||||||
|
|
||||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
|
||||||
|
{
|
||||||
return _cachedAppInfos.count;
|
return _cachedAppInfos.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,7 +356,8 @@ UIImage* imageWithSize(UIImage* image, CGSize size)
|
||||||
[self reloadTable];
|
[self reloadTable];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
|
||||||
|
{
|
||||||
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ApplicationCell"];
|
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ApplicationCell"];
|
||||||
if(!cell) {
|
if(!cell) {
|
||||||
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"ApplicationCell"];
|
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"ApplicationCell"];
|
||||||
|
@ -412,7 +416,8 @@ UIImage* imageWithSize(UIImage* image, CGSize size)
|
||||||
return cell;
|
return cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
|
||||||
|
{
|
||||||
return 80.0f;
|
return 80.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -497,13 +502,25 @@ UIImage* imageWithSize(UIImage* image, CGSize size)
|
||||||
[TSPresentationDelegate presentViewController:appSelectAlert animated:YES completion:nil];
|
[TSPresentationDelegate presentViewController:appSelectAlert animated:YES completion:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)applicationsDidInstall:(id)arg1
|
- (void)purgeCachedIconsForApps:(NSArray <LSApplicationProxy *>*)apps
|
||||||
{
|
{
|
||||||
|
for (LSApplicationProxy *appProxy in apps) {
|
||||||
|
NSString *appId = appProxy.bundleIdentifier;
|
||||||
|
if (_cachedIcons[appId]) {
|
||||||
|
[_cachedIcons removeObjectForKey:appId];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)applicationsDidInstall:(NSArray <LSApplicationProxy *>*)apps
|
||||||
|
{
|
||||||
|
[self purgeCachedIconsForApps:apps];
|
||||||
[self reloadTable];
|
[self reloadTable];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)applicationsDidUninstall:(id)arg1
|
- (void)applicationsDidUninstall:(NSArray <LSApplicationProxy *>*)apps
|
||||||
{
|
{
|
||||||
|
[self purgeCachedIconsForApps:apps];
|
||||||
[self reloadTable];
|
[self reloadTable];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -323,7 +323,7 @@ extern NSUserDefaults* trollStoreUserDefaults(void);
|
||||||
[_specifiers addObject:installAlertConfigurationSpecifier];
|
[_specifiers addObject:installAlertConfigurationSpecifier];
|
||||||
|
|
||||||
PSSpecifier* otherGroupSpecifier = [PSSpecifier emptyGroupSpecifier];
|
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: Various contributions\n@ProcursusTeam: uicache, ldid\n@cstar_ow: uicache\n@saurik: ldid", [self getTrollStoreVersion]] forKey:@"footerText"];
|
[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"];
|
||||||
[_specifiers addObject:otherGroupSpecifier];
|
[_specifiers addObject:otherGroupSpecifier];
|
||||||
|
|
||||||
PSSpecifier* advancedLinkSpecifier = [PSSpecifier preferenceSpecifierNamed:@"Advanced"
|
PSSpecifier* advancedLinkSpecifier = [PSSpecifier preferenceSpecifierNamed:@"Advanced"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Package: com.opa334.trollstore
|
Package: com.opa334.trollstore
|
||||||
Name: TrollStore
|
Name: TrollStore
|
||||||
Version: 2.0.11
|
Version: 2.0.12
|
||||||
Architecture: iphoneos-arm
|
Architecture: iphoneos-arm
|
||||||
Description: An awesome application!
|
Description: An awesome application!
|
||||||
Maintainer: opa334
|
Maintainer: opa334
|
||||||
|
|
Loading…
Reference in New Issue