├── .gitattributes
├── .github
└── ISSUE_TEMPLATE
│ └── bootstrap-bug.yml
├── .gitignore
├── .gitmodules
├── .vscode
└── settings.json
├── Bootstrap.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── swiftpm
│ │ │ └── Package.resolved
│ └── xcuserdata
│ │ └── admin.xcuserdatad
│ │ ├── IDEFindNavigatorScopes.plist
│ │ └── UserInterfaceState.xcuserstate
└── xcuserdata
│ ├── admin.xcuserdatad
│ └── xcschemes
│ │ └── xcschememanagement.plist
│ ├── hariz.xcuserdatad
│ └── xcschemes
│ │ └── xcschememanagement.plist
│ └── haxi0.xcuserdatad
│ ├── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
│ └── xcschemes
│ └── xcschememanagement.plist
├── Bootstrap
├── AppDelegate.h
├── AppDelegate.m
├── AppEnabler.m
├── AppInfo.h
├── AppInfo.m
├── AppViewController.h
├── AppViewController.m
├── Assets.xcassets
│ ├── AccentColor.colorset
│ │ └── Contents.json
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── icon-1024.png
│ │ ├── icon-20@2x.png
│ │ ├── icon-20@3x.png
│ │ ├── icon-29@2x.png
│ │ ├── icon-29@3x.png
│ │ ├── icon-38@2x.png
│ │ ├── icon-38@3x.png
│ │ ├── icon-40@2x.png
│ │ ├── icon-40@3x.png
│ │ ├── icon-60@2x.png
│ │ ├── icon-60@3x.png
│ │ ├── icon-64@2x.png
│ │ ├── icon-64@3x.png
│ │ ├── icon-68@2x.png
│ │ ├── icon-76@2x.png
│ │ └── icon-83.5@2x.png
│ ├── AppIcon.appiconset1
│ │ ├── Contents.json
│ │ ├── icon-1024.png
│ │ ├── icon-20@2x.png
│ │ ├── icon-20@3x.png
│ │ ├── icon-29@2x.png
│ │ ├── icon-29@3x.png
│ │ ├── icon-38@2x.png
│ │ ├── icon-38@3x.png
│ │ ├── icon-40@2x.png
│ │ ├── icon-40@3x.png
│ │ ├── icon-60@2x.png
│ │ ├── icon-60@3x.png
│ │ ├── icon-64@2x.png
│ │ ├── icon-64@3x.png
│ │ ├── icon-68@2x.png
│ │ ├── icon-76@2x.png
│ │ └── icon-83.5@2x.png
│ ├── Bootstrap.imageset
│ │ ├── Bootstrap.png
│ │ └── Contents.json
│ └── Contents.json
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── Bootstrap-Bridging-Header.h
├── Classes
│ └── Log.swift
├── Extensions
│ ├── ButtonStyles.swift
│ └── VisualEffectView.swift
├── Frameworks
│ └── MobileContainerManager.framework
│ │ └── MobileContainerManager.tbd
├── Info.plist
├── LICENSE
├── MBProgressHUD.framework
│ ├── Headers
│ │ └── MBProgressHUD.h
│ ├── Info.plist
│ ├── MBProgressHUD
│ └── Modules
│ │ └── module.modulemap
├── NSUserDefaults+appDefaults.h
├── NSUserDefaults+appDefaults.m
├── SceneDelegate.h
├── SceneDelegate.m
├── ViewController.h
├── ViewController.m
├── Views
│ ├── AppViewControllerWrapper.swift
│ ├── ContentView.swift
│ ├── CreditsView.swift
│ ├── Haptic++.swift
│ └── OptionsView.swift
├── ar.lproj
│ └── Localizable.strings
├── basebin
│ ├── bootstrap.dylib
│ ├── bootstrap.entitlements
│ ├── bootstrapd
│ ├── devtest
│ ├── entitlements
│ │ ├── com.apple.mobilemail.extra
│ │ ├── com.apple.mobilemail.strip
│ │ ├── com.apple.mobilesafari.extra
│ │ ├── com.apple.mobilesafari.strip
│ │ ├── com.apple.mobileslideshow.extra
│ │ └── com.apple.mobileslideshow.photo-picker.extra
│ ├── fastPathSign
│ ├── ldid
│ ├── nickchan.entitlements
│ ├── preload
│ ├── preload.dylib
│ ├── rebuildapp
│ ├── rebuildapps.sh
│ ├── test.sh
│ └── uicache
├── bootstrap.h
├── bootstrap.m
├── common.h
├── credits.h
├── de.lproj
│ └── Localizable.strings
├── en.lproj
│ └── Localizable.strings
├── envbuf.c
├── envbuf.h
├── es.lproj
│ └── Localizable.strings
├── fr.lproj
│ └── Localizable.strings
├── id.lproj
│ └── Localizable.strings
├── it.lproj
│ └── Localizable.strings
├── ja.lproj
│ └── Localizable.strings
├── jv-ID.lproj
│ └── Localizable.strings
├── ko.lproj
│ └── Localizable.strings
├── main.m
├── nl.lproj
│ └── Localizable.strings
├── pl.lproj
│ └── Localizable.strings
├── pt-BR.lproj
│ └── Localizable.strings
├── ru.lproj
│ └── Localizable.strings
├── seh.h
├── sources.h
├── sv.lproj
│ └── Localizable.strings
├── syslog.h
├── th.lproj
│ └── Localizable.strings
├── uk.lproj
│ └── Localizable.strings
├── utils.h
├── utils.m
├── vi.lproj
│ └── Localizable.strings
├── zh-CN.lproj
│ └── Localizable.strings
├── zh-TW.lproj
│ └── Localizable.strings
└── zstd_wrapper.m
├── LICENSE
├── Makefile
├── README.md
├── control
├── entitlements.plist
├── libkrw0-dummy.deb
├── rebuild.sh
├── roothideapp.deb
├── sileo.deb
├── strapfiles
├── bootstrap-1800.tar.zst
├── bootstrap-1900.tar.zst
└── bootstrap-2000.tar.zst
├── suid.rtf
├── tar
└── zebra.deb
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bootstrap-bug.yml:
--------------------------------------------------------------------------------
1 | name: Bootstrap Bug
2 | description: A bug while using the roothide Bootstrap
3 | labels: ["bug"]
4 | body:
5 | - type: markdown
6 | attributes:
7 | value: |
8 | Thanks for using the roothide Bootstap! If your issue can be solved with simple troubleshooting, check out these resources:
9 |
10 | [Bootstrap README.md](https://github.com/roothide/Bootstrap/blob/main/README.md)
11 | [Bootstrap FAQ](https://github.com/dleovl/Bootstrap/blob/faq/README.md)
12 | [roothide Discord server](https://discord.gg/ZvY2Yjw8GA) (with support channels)
13 | - type: input
14 | id: device-model
15 | attributes:
16 | label: Device Model
17 | description: What device model are you using? (Device, Chipset)
18 | placeholder: ex. iPhone 11, A13
19 | validations:
20 | required: true
21 | - type: input
22 | id: ios-version
23 | attributes:
24 | label: iOS Version
25 | description: What iOS version are you using?
26 | placeholder: ex. 17.0
27 | validations:
28 | required: true
29 | - type: input
30 | id: bootstrap-version
31 | attributes:
32 | label: Bootstrap Version
33 | description: What version of the roothide Bootstrap are you using?
34 | placeholder: ex. 1.0
35 | validations:
36 | required: true
37 | - type: input
38 | id: serotonin-version
39 | attributes:
40 | label: Serotonin Version
41 | description: What version of Serotonin are you using? (if applicable)
42 | placeholder: ex. 1.0.1
43 | - type: textarea
44 | id: bugs
45 | attributes:
46 | label: What happened
47 | description: Also, what did you expect to happen? How can we reproduce this?
48 | placeholder: I did ..., but ... was supposed to happen. ... doesn't work!
49 | validations:
50 | required: true
51 | - type: textarea
52 | id: logs
53 | attributes:
54 | label: Log output
55 | description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
56 | render: shell
57 | - type: checkboxes
58 | id: acknowledgement
59 | attributes:
60 | label: Acknowledgement of README and FAQ
61 | description: By submitting this issue, you acknowledge you have read both the [README](https://github.com/roothide/Bootstrap/blob/main/README.md) and the [FAQ](https://github.com/dleovl/Bootstrap/blob/faq/README.md), and neither solve the issue (nor should it be written).
62 | options:
63 | - label: I have read both the README and the FAQ.
64 | required: true
65 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .theos/
2 | packages/
3 | .DS_Store
4 | /layout/
5 | *.xcuserstate
6 | /Bootstrap.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate
7 | *.xcuserstate
8 | .vscode/
9 |
10 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "basebin"]
2 | path = basebin
3 | url = https://github.com/roothide/Bootstrap-basebin
4 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.associations": {
3 | "__locale": "c",
4 | "__tree": "c",
5 | "bitset": "c",
6 | "set": "c",
7 | "syslimits.h": "c",
8 | "mman.h": "c",
9 | "fcntl.h": "c",
10 | "_pthread_types.h": "c",
11 | "_pthread_t.h": "c",
12 | "signal.h": "c",
13 | "algorithm": "cpp",
14 | "__bit_reference": "c",
15 | "chrono": "c",
16 | "map": "c",
17 | "unordered_map": "c",
18 | "pwd.h": "c",
19 | "libgen.h": "c",
20 | "libproc.h": "c",
21 | "proc_info.h": "c",
22 | "libproc_private.h": "c"
23 | }
24 | }
--------------------------------------------------------------------------------
/Bootstrap.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Bootstrap.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Bootstrap.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved:
--------------------------------------------------------------------------------
1 | {
2 | "pins" : [
3 | {
4 | "identity" : "fluidgradient",
5 | "kind" : "remoteSourceControl",
6 | "location" : "https://github.com/Cindori/FluidGradient.git",
7 | "state" : {
8 | "revision" : "9ddda4cf23671ef0228e88681ec6210cb3e0d7f7",
9 | "version" : "1.0.0"
10 | }
11 | },
12 | {
13 | "identity" : "zstd",
14 | "kind" : "remoteSourceControl",
15 | "location" : "https://github.com/facebook/zstd.git",
16 | "state" : {
17 | "branch" : "dev",
18 | "revision" : "126ec2669c927b24acd38ea903a211c1b5416588"
19 | }
20 | }
21 | ],
22 | "version" : 2
23 | }
24 |
--------------------------------------------------------------------------------
/Bootstrap.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/IDEFindNavigatorScopes.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Bootstrap.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Bootstrap.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Bootstrap.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Bootstrap.xcodeproj/xcuserdata/hariz.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Bootstrap.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Bootstrap.xcodeproj/xcuserdata/haxi0.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/Bootstrap.xcodeproj/xcuserdata/haxi0.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Bootstrap.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Bootstrap/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #ifndef APPDELEGATE_H
2 | #define APPDELEGATE_H
3 |
4 | #import
5 |
6 | @interface AppDelegate : UIResponder
7 |
8 | +(void)showHudMsg:(NSString*)msg;
9 | +(void)showHudMsg:(NSString*)msg detail:(NSString*)info;
10 | +(void)dismissHud;
11 |
12 | + (void)showAlert:(UIAlertController*)alert;
13 | + (void)showMesage:(NSString*)msg title:(NSString*)title;
14 |
15 | + (void)addLogText:(NSString*)text;
16 |
17 | @end
18 |
19 | #endif //APPDELEGATE_H
20 |
--------------------------------------------------------------------------------
/Bootstrap/AppDelegate.m:
--------------------------------------------------------------------------------
1 | #import "AppDelegate.h"
2 | #include "common.h"
3 |
4 | #include
5 |
6 | @interface AppDelegate ()
7 | @end
8 |
9 | @implementation AppDelegate
10 |
11 | + (void)addLogText:(NSString*)text
12 | {
13 | SYSLOG("addLogText: %@", text);
14 | [NSNotificationCenter.defaultCenter postNotificationName:@"LogMsgNotification" object:text];
15 | }
16 |
17 | MBProgressHUD *switchHud=nil;
18 |
19 | +(void)showHudMsg:(NSString*)msg
20 | {
21 | dispatch_async(dispatch_get_main_queue(), ^{
22 | switchHud = [MBProgressHUD showHUDAddedTo:UIApplication.sharedApplication.keyWindow animated:YES];
23 | [switchHud showAnimated:YES];
24 | switchHud.label.text = msg;
25 | });
26 | }
27 |
28 | +(void)showHudMsg:(NSString*)msg detail:(NSString*)info
29 | {
30 | dispatch_async(dispatch_get_main_queue(), ^{
31 | switchHud = [MBProgressHUD showHUDAddedTo:UIApplication.sharedApplication.keyWindow animated:YES];
32 | [switchHud showAnimated:YES];
33 | switchHud.label.text = msg;
34 | switchHud.detailsLabel.text = info;
35 | });
36 | }
37 |
38 | +(void)dismissHud {
39 | dispatch_async(dispatch_get_main_queue(), ^{
40 | [switchHud hideAnimated:YES];
41 | });
42 | }
43 |
44 | + (void)showAlert:(UIAlertController*)alert {
45 |
46 | static dispatch_queue_t alertQueue = nil;
47 |
48 | static dispatch_once_t oncetoken;
49 | dispatch_once(&oncetoken, ^{
50 | alertQueue = dispatch_queue_create("alertQueue", DISPATCH_QUEUE_SERIAL);
51 | });
52 |
53 | dispatch_async(alertQueue, ^{
54 | __block BOOL presenting = NO;
55 | __block BOOL presented = NO;
56 | while(!presenting) {
57 | dispatch_sync(dispatch_get_main_queue(), ^{
58 | UIViewController* vc = UIApplication.sharedApplication.keyWindow.rootViewController;
59 | while(vc.presentedViewController){
60 | vc = vc.presentedViewController;
61 | if(vc.isBeingDismissed) {
62 | return;
63 | }
64 | }
65 | presenting = YES;
66 | [vc presentViewController:alert animated:YES completion:^{ presented=YES; }];
67 | });
68 | if(!presenting) usleep(1000*100);
69 | }
70 | while(!presented) usleep(100*1000);
71 | });
72 | }
73 |
74 | + (void)showMesage:(NSString*)msg title:(NSString*)title {
75 |
76 | UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert];
77 | [alert addAction:[UIAlertAction actionWithTitle:Localized(@"OK") style:UIAlertActionStyleDefault handler:nil]];
78 | [self showAlert:alert];
79 | }
80 |
81 |
82 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
83 | // Override point for customization after application launch.
84 | return YES;
85 | }
86 |
87 |
88 | #pragma mark - UISceneSession lifecycle
89 |
90 |
91 | - (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
92 | // Called when a new scene session is being created.
93 | // Use this method to select a configuration to create the new scene with.
94 | return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
95 | }
96 |
97 |
98 | - (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions {
99 | // Called when the user discards a scene session.
100 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
101 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
102 | }
103 |
104 |
105 | @end
106 |
--------------------------------------------------------------------------------
/Bootstrap/AppEnabler.m:
--------------------------------------------------------------------------------
1 | #import
2 | #include
3 | #include "AppInfo.h"
4 | #include "common.h"
5 |
6 | NSString * relativize(NSURL * to, NSURL * from, BOOL fromIsDir) {
7 | NSString * toString = [[to path] stringByStandardizingPath];
8 | NSMutableArray * toPieces = [NSMutableArray arrayWithArray:[toString pathComponents]];
9 |
10 | NSString * fromString = [[from path] stringByStandardizingPath];
11 | NSMutableArray * fromPieces = [NSMutableArray arrayWithArray:[fromString pathComponents]];
12 |
13 | NSMutableString * relPath = [NSMutableString string];
14 |
15 | NSString * toTrimmed = toString;
16 | NSString * toPiece = NULL;
17 | NSString * fromTrimmed = fromString;
18 | NSString * fromPiece = NULL;
19 |
20 | NSMutableArray * parents = [NSMutableArray array];
21 | NSMutableArray * pieces = [NSMutableArray array];
22 |
23 | if(toPieces.count >= fromPieces.count) {
24 | NSUInteger toCount = toPieces.count;
25 | while(toCount > fromPieces.count) {
26 | toPiece = [toTrimmed lastPathComponent];
27 | toTrimmed = [toTrimmed stringByDeletingLastPathComponent];
28 | [pieces insertObject:toPiece atIndex:0];
29 | toCount--;
30 | }
31 |
32 | while(![fromTrimmed isEqualToString:toTrimmed]) {
33 | toPiece = [toTrimmed lastPathComponent];
34 | toTrimmed = [toTrimmed stringByDeletingLastPathComponent];
35 | fromPiece = [fromTrimmed lastPathComponent];
36 | fromTrimmed = [fromTrimmed stringByDeletingLastPathComponent];
37 | if(![toPiece isEqualToString:fromPiece]) {
38 | if(![fromPiece isEqualToString:[fromPiece lastPathComponent]] || fromIsDir) {
39 | [parents addObject:@".."];
40 | }
41 | [pieces insertObject:toPiece atIndex:0];
42 | }
43 | }
44 |
45 | } else {
46 | NSUInteger fromCount = fromPieces.count;
47 |
48 | while(fromCount > toPieces.count) {
49 | fromPiece = [fromTrimmed lastPathComponent];
50 | fromTrimmed = [fromTrimmed stringByDeletingLastPathComponent];
51 | if(![fromPiece isEqualToString:[fromString lastPathComponent]] || fromIsDir) {
52 | [parents addObject:@".."];
53 | }
54 | fromCount--;
55 | }
56 |
57 | while(![toTrimmed isEqualToString:fromTrimmed]) {
58 | toPiece = [toTrimmed lastPathComponent];
59 | toTrimmed = [toTrimmed stringByDeletingLastPathComponent];
60 | fromPiece = [fromTrimmed lastPathComponent];
61 | fromTrimmed = [fromTrimmed stringByDeletingLastPathComponent];
62 | [parents addObject:@".."];
63 | [pieces insertObject:toPiece atIndex:0];
64 | }
65 |
66 | }
67 |
68 | [relPath appendString:[parents componentsJoinedByString:@"/"]];
69 | if(parents.count > 0) [relPath appendString:@"/"];
70 | else [relPath appendString:@"./"];
71 | [relPath appendString:[pieces componentsJoinedByString:@"/"]];
72 |
73 | return relPath;
74 | }
75 |
76 | NSArray* appBackupFileNames = @[
77 | @"Info.plist",
78 | @"_CodeSignature",
79 | @"SC_Info",
80 | ];
81 |
82 | //will skip empty dir
83 | int backupApp(NSString* bundlePath)
84 | {
85 | NSFileManager* fm = NSFileManager.defaultManager;
86 |
87 | NSString* backup = [bundlePath stringByAppendingPathExtension:@"appbackup"];
88 |
89 | if([fm fileExistsAtPath:backup]) {
90 | ASSERT(![fm fileExistsAtPath:[backup.stringByDeletingLastPathComponent stringByAppendingPathComponent:@".appbackup"]]);
91 | ASSERT([fm removeItemAtPath:backup error:nil]);
92 | }
93 |
94 | NSString *resolvedPath = [[bundlePath stringByResolvingSymlinksInPath] stringByStandardizingPath];
95 | NSDirectoryEnumerator *directoryEnumerator = [fm enumeratorAtURL:[NSURL fileURLWithPath:resolvedPath isDirectory:YES] includingPropertiesForKeys:@[NSURLIsRegularFileKey] options:0 errorHandler:nil];
96 |
97 | int backupFileCount=0;
98 | for (NSURL *enumURL in directoryEnumerator) { @autoreleasepool {
99 | NSNumber *isFile=nil;
100 | ASSERT([enumURL getResourceValue:&isFile forKey:NSURLIsRegularFileKey error:nil] && isFile!=nil);
101 | if (![isFile boolValue]) continue;
102 |
103 | FILE *fp = fopen(enumURL.fileSystemRepresentation, "rb");
104 | ASSERT(fp != NULL);
105 |
106 | bool ismacho=false, islib=false;
107 | machoGetInfo(fp, &ismacho, &islib);
108 |
109 | fclose(fp);
110 |
111 | //bundlePath should be a real-path
112 | NSString* subPath = relativize(enumURL, [NSURL fileURLWithPath:bundlePath], YES);
113 | NSString* backupPath = [backup stringByAppendingPathComponent:subPath];
114 |
115 | if(![fm fileExistsAtPath:backupPath.stringByDeletingLastPathComponent])
116 | ASSERT([fm createDirectoryAtPath:backupPath.stringByDeletingLastPathComponent withIntermediateDirectories:YES attributes:nil error:nil]);
117 |
118 | if(ismacho || [appBackupFileNames containsObject:enumURL.path.lastPathComponent])
119 | {
120 | NSError* err=nil;
121 | ASSERT([fm copyItemAtPath:enumURL.path toPath:backupPath error:&err]);
122 | SYSLOG("copied %@ => %@", enumURL.path, backupPath);
123 |
124 | backupFileCount++;
125 | }
126 | else {
127 | ASSERT(link(enumURL.path.UTF8String, backupPath.UTF8String)==0);
128 | }
129 |
130 | } }
131 |
132 | ASSERT(backupFileCount > 0);
133 |
134 | ASSERT([[NSString new] writeToFile:[backup.stringByDeletingLastPathComponent stringByAppendingPathComponent:@".appbackup"] atomically:YES encoding:NSUTF8StringEncoding error:nil]);
135 |
136 | return 0;
137 | }
138 |
139 | //if the app package is changed/upgraded, the directory structure may change and some paths may become invalid.
140 | int restoreApp(NSString* bundlePath)
141 | {
142 | SYSLOG("restoreApp=%@", bundlePath);
143 | NSFileManager* fm = NSFileManager.defaultManager;
144 |
145 | NSString* backup = [bundlePath stringByAppendingPathExtension:@"appbackup"];
146 |
147 | ASSERT([fm fileExistsAtPath:backup]);
148 | ASSERT([fm fileExistsAtPath:[backup.stringByDeletingLastPathComponent stringByAppendingPathComponent:@".appbackup"]]);
149 |
150 | NSString *resolvedPath = [[backup stringByResolvingSymlinksInPath] stringByStandardizingPath];
151 | NSDirectoryEnumerator *directoryEnumerator = [fm enumeratorAtURL:[NSURL fileURLWithPath:resolvedPath isDirectory:YES] includingPropertiesForKeys:@[NSURLIsRegularFileKey] options:0 errorHandler:nil];
152 |
153 | int restoreFileCount=0;
154 | for (NSURL *enumURL in directoryEnumerator) { @autoreleasepool {
155 | NSNumber *isFile=nil;
156 | ASSERT([enumURL getResourceValue:&isFile forKey:NSURLIsRegularFileKey error:nil] && isFile!=nil);
157 | if (![isFile boolValue]) continue;
158 |
159 | //bundlePath should be a real-path
160 | NSString* subPath = relativize(enumURL, [NSURL fileURLWithPath:backup], YES);
161 | NSString* restorePath = [bundlePath stringByAppendingPathComponent:subPath];
162 |
163 | SYSLOG("restore %@ => %@", enumURL.path, restorePath);
164 |
165 | if([fm fileExistsAtPath:restorePath])
166 | ASSERT([fm removeItemAtPath:restorePath error:nil]);
167 |
168 | NSError* err=nil;
169 | if(![fm moveItemAtPath:enumURL.path toPath:restorePath error:&err]) {
170 | SYSLOG("move failed %@", err);
171 | ABORT();
172 | }
173 |
174 | restoreFileCount++;
175 |
176 | } }
177 |
178 | ASSERT(restoreFileCount > 0);
179 |
180 | ASSERT([fm removeItemAtPath:backup error:nil]);
181 | ASSERT([fm removeItemAtPath:[backup.stringByDeletingLastPathComponent stringByAppendingPathComponent:@".appbackup"] error:nil]);
182 |
183 | return 0;
184 | }
185 |
186 |
187 | int enableForApp(NSString* bundlePath)
188 | {
189 | SYSLOG("enableForApp %@", bundlePath);
190 |
191 | NSFileManager* fm = NSFileManager.defaultManager;
192 |
193 | NSDictionary* appInfo = [NSDictionary dictionaryWithContentsOfFile:[bundlePath stringByAppendingPathComponent:@"Info.plist"]];
194 | if(!appInfo) return -1;
195 |
196 | if([bundlePath hasPrefix:@"/Applications/"])
197 | {
198 | if([fm fileExistsAtPath:jbroot(bundlePath)])
199 | ASSERT([fm removeItemAtPath:jbroot(bundlePath) error:nil]);
200 |
201 | ASSERT([fm copyItemAtPath:bundlePath toPath:jbroot(bundlePath) error:nil]);
202 |
203 | ASSERT([fm createSymbolicLinkAtPath:[jbroot(bundlePath) stringByAppendingString:@"/.jbroot"] withDestinationPath:jbroot(@"/") error:nil]);
204 |
205 | NSString* log=nil;
206 | NSString* err=nil;
207 | if(spawnBootstrap((char*[]){"/usr/bin/uicache","-p", bundlePath.UTF8String, NULL}, &log, &err) != 0) {
208 | STRAPLOG("%@\nERR:%@", log, err);
209 | AppInfo* app = [AppInfo appWithBundleIdentifier:appInfo[@"CFBundleIdentifier"]];
210 | if(app && [app.bundleURL.path hasPrefix:@"/Applications/"]) {
211 | ASSERT([fm removeItemAtPath:bundlePath error:nil]);
212 | }
213 | ABORT();
214 | }
215 | }
216 | else if([appInfo[@"CFBundleIdentifier"] hasPrefix:@"com.apple."]
217 | || [NSFileManager.defaultManager fileExistsAtPath:[bundlePath stringByAppendingString:@"/../_TrollStore"]]
218 | || [NSFileManager.defaultManager fileExistsAtPath:[bundlePath stringByAppendingString:@"/../_TrollStoreLite"]])
219 | {
220 | ASSERT(backupApp(bundlePath) == 0);
221 |
222 | ASSERT([fm createSymbolicLinkAtPath:[bundlePath stringByAppendingString:@"/.jbroot"] withDestinationPath:jbroot(@"/") error:nil]);
223 |
224 | NSString* log=nil;
225 | NSString* err=nil;
226 | if(spawnBootstrap((char*[]){"/usr/bin/uicache","-s","-p", rootfsPrefix(bundlePath).UTF8String, NULL}, &log, &err) != 0) {
227 | STRAPLOG("%@\nERR:%@", log, err);
228 | ABORT();
229 | }
230 | }
231 | else
232 | {
233 | ASSERT(backupApp(bundlePath) == 0);
234 |
235 | ASSERT([fm createSymbolicLinkAtPath:[bundlePath stringByAppendingString:@"/.jbroot"] withDestinationPath:jbroot(@"/") error:nil]);
236 |
237 | NSString* log=nil;
238 | NSString* err=nil;
239 | if(spawnBootstrap((char*[]){"/usr/bin/uicache","-s","-p", rootfsPrefix(bundlePath).UTF8String, NULL}, &log, &err) != 0) {
240 | STRAPLOG("%@\nERR:%@", log, err);
241 | ABORT();
242 | }
243 | }
244 |
245 | return 0;
246 | }
247 |
248 | int disableForApp(NSString* bundlePath)
249 | {
250 | SYSLOG("disalbeForApp %@", bundlePath);
251 |
252 | NSFileManager* fm = NSFileManager.defaultManager;
253 |
254 | NSDictionary* appInfo = [NSDictionary dictionaryWithContentsOfFile:[bundlePath stringByAppendingPathComponent:@"Info.plist"]];
255 | if(!appInfo) return -1;
256 |
257 | if(![bundlePath hasPrefix:@"/Applications/"] && [bundlePath containsString:@"/Applications/"])
258 | {
259 | ASSERT([fm removeItemAtPath:bundlePath error:nil]);
260 |
261 | NSString* sysPath = [@"/Applications/" stringByAppendingString:bundlePath.lastPathComponent];
262 | ASSERT(spawnBootstrap((char*[]){"/usr/bin/uicache","-p", rootfsPrefix(sysPath).UTF8String, NULL}, nil, nil) == 0);
263 | }
264 | else if([appInfo[@"CFBundleIdentifier"] hasPrefix:@"com.apple."]
265 | || [NSFileManager.defaultManager fileExistsAtPath:[bundlePath stringByAppendingString:@"/../_TrollStore"]]
266 | || [NSFileManager.defaultManager fileExistsAtPath:[bundlePath stringByAppendingString:@"/../_TrollStoreLite"]])
267 | {
268 |
269 | struct stat st;
270 | if(lstat([bundlePath stringByAppendingString:@"/.jbroot"].fileSystemRepresentation, &st)==0)
271 | ASSERT([fm removeItemAtPath:[bundlePath stringByAppendingString:@"/.jbroot"] error:nil]);
272 | if(lstat([bundlePath stringByAppendingString:@"/.prelib"].fileSystemRepresentation, &st)==0)
273 | ASSERT([fm removeItemAtPath:[bundlePath stringByAppendingString:@"/.prelib"] error:nil]);
274 | if(lstat([bundlePath stringByAppendingString:@"/.preload"].fileSystemRepresentation, &st)==0)
275 | ASSERT([fm removeItemAtPath:[bundlePath stringByAppendingString:@"/.preload"] error:nil]);
276 | if(lstat([bundlePath stringByAppendingString:@"/.rebuild"].fileSystemRepresentation, &st)==0)
277 | ASSERT([fm removeItemAtPath:[bundlePath stringByAppendingString:@"/.rebuild"] error:nil]);
278 |
279 | ASSERT(restoreApp(bundlePath) == 0);
280 |
281 | ASSERT(spawnBootstrap((char*[]){"/usr/bin/uicache","-s","-p", rootfsPrefix(bundlePath).UTF8String, NULL}, nil, nil) == 0);
282 | }
283 | else
284 | {
285 | //should be an appstored app
286 |
287 | struct stat st;
288 | if(lstat([bundlePath stringByAppendingString:@"/.jbroot"].fileSystemRepresentation, &st)==0)
289 | ASSERT([fm removeItemAtPath:[bundlePath stringByAppendingString:@"/.jbroot"] error:nil]);
290 | if(lstat([bundlePath stringByAppendingString:@"/.prelib"].fileSystemRepresentation, &st)==0)
291 | ASSERT([fm removeItemAtPath:[bundlePath stringByAppendingString:@"/.prelib"] error:nil]);
292 | if(lstat([bundlePath stringByAppendingString:@"/.preload"].fileSystemRepresentation, &st)==0)
293 | ASSERT([fm removeItemAtPath:[bundlePath stringByAppendingString:@"/.preload"] error:nil]);
294 | if(lstat([bundlePath stringByAppendingString:@"/.rebuild"].fileSystemRepresentation, &st)==0)
295 | ASSERT([fm removeItemAtPath:[bundlePath stringByAppendingString:@"/.rebuild"] error:nil]);
296 |
297 | ASSERT(restoreApp(bundlePath) == 0);
298 |
299 | //unregister or respring to keep app's icon on home screen
300 | ASSERT(spawnBootstrap((char*[]){"/usr/bin/uicache","-u", rootfsPrefix(bundlePath).UTF8String, NULL}, nil, nil) == 0);
301 | //come back
302 | ASSERT(spawnBootstrap((char*[]){"/usr/bin/uicache","-p", rootfsPrefix(bundlePath).UTF8String, NULL}, nil, nil) == 0);
303 | }
304 |
305 | return 0;
306 | }
307 |
--------------------------------------------------------------------------------
/Bootstrap/AppInfo.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 |
4 | @interface AppInfo : NSObject
5 | @property (nonatomic, strong) NSString *infoPlistPath;
6 |
7 | @property (nonatomic, readonly) NSString* bundleIdentifier;
8 | @property (nonatomic, readonly) NSString* name;
9 | @property (nonatomic, readonly) UIImage* icon;
10 | @property (nonatomic, readonly) NSURL *bundleURL;
11 | @property (nonatomic, readonly) NSURL *containerURL;
12 |
13 | @property (nonatomic, readonly) NSString *applicationDSID;
14 | @property (nonatomic, readonly) NSString *applicationIdentifier;
15 | @property (nonatomic, readonly) NSString *applicationType;
16 | @property (nonatomic, readonly) NSNumber *dynamicDiskUsage;
17 |
18 | @property (nonatomic, readonly) NSArray *groupIdentifiers;
19 | @property (nonatomic, readonly) NSNumber *itemID;
20 | @property (nonatomic, readonly) NSString *itemName;
21 | @property (nonatomic, readonly) NSString *minimumSystemVersion;
22 | @property (nonatomic, readonly) NSArray *requiredDeviceCapabilities;
23 | @property (nonatomic, readonly) NSString *roleIdentifier;
24 | @property (nonatomic, readonly) NSString *sdkVersion;
25 | @property (nonatomic, readonly) NSString *shortVersionString;
26 | @property (nonatomic, readonly) NSString *sourceAppIdentifier;
27 | @property (nonatomic, readonly) NSNumber *staticDiskUsage;
28 | @property (nonatomic, readonly) NSString *teamID;
29 | @property (nonatomic, readonly) NSString *vendorName;
30 |
31 | @property (nonatomic, readonly) BOOL isHiddenApp;
32 |
33 | + (instancetype)appWithPrivateProxy:(id)privateProxy;
34 | + (instancetype)appWithBundleIdentifier:(NSString*)bundleIdentifier;
35 |
36 | @end
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Bootstrap/AppInfo.m:
--------------------------------------------------------------------------------
1 | // https://github.com/wujianguo/iOSAppsInfo
2 | // modified by Shadow-
3 |
4 | #import "AppInfo.h"
5 | #import
6 |
7 | @interface UIImage ()
8 | + (id)_iconForResourceProxy:(id)arg1 variant:(int)arg2 variantsScale:(float)arg3;
9 | + (id)_applicationIconImageForBundleIdentifier:(id)arg1 format:(int)arg2 scale:(double)arg3;
10 | @end
11 |
12 | #pragma mark -
13 |
14 | @interface PrivateApi_LSApplicationProxy
15 |
16 | + (instancetype)applicationProxyForIdentifier:(NSString*)identifier;
17 | @property (nonatomic, readonly) NSString* localizedShortName;
18 | @property (nonatomic, readonly) NSString* localizedName;
19 | @property (nonatomic, readonly) NSString* bundleIdentifier;
20 | @property (nonatomic, readonly) NSArray* appTags;
21 |
22 | @property (nonatomic, readonly) NSString *applicationDSID;
23 | @property (nonatomic, readonly) NSString *applicationIdentifier;
24 | @property (nonatomic, readonly) NSString *applicationType;
25 | @property (nonatomic, readonly) NSNumber *dynamicDiskUsage;
26 | @property (nonatomic, readonly) NSURL *bundleURL;
27 | @property (nonatomic, readonly) NSURL *containerURL;
28 |
29 | @property (nonatomic, readonly) NSArray *groupIdentifiers;
30 | @property (nonatomic, readonly) NSNumber *itemID;
31 | @property (nonatomic, readonly) NSString *itemName;
32 | @property (nonatomic, readonly) NSString *minimumSystemVersion;
33 | @property (nonatomic, readonly) NSArray *requiredDeviceCapabilities;
34 | @property (nonatomic, readonly) NSString *roleIdentifier;
35 | @property (nonatomic, readonly) NSString *sdkVersion;
36 | @property (nonatomic, readonly) NSString *shortVersionString;
37 | @property (nonatomic, readonly) NSString *sourceAppIdentifier;
38 | @property (nonatomic, readonly) NSNumber *staticDiskUsage;
39 | @property (nonatomic, readonly) NSString *teamID;
40 | @property (nonatomic, readonly) NSString *vendorName;
41 |
42 | @end
43 |
44 |
45 | @implementation AppInfo
46 | {
47 | PrivateApi_LSApplicationProxy* _applicationProxy;
48 | UIImage* _icon;
49 | }
50 |
51 | - (NSString*)name
52 | {
53 | NSString *languageCode = [[NSLocale preferredLanguages] firstObject];
54 | NSRange range = [languageCode rangeOfString:@"-" options:NSBackwardsSearch];
55 | if (range.location != NSNotFound) {
56 | languageCode = [languageCode substringToIndex:range.location];
57 | }
58 |
59 | NSString *infoPlistPath = [_applicationProxy.bundleURL.path stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.lproj/InfoPlist.strings", languageCode]];
60 | NSFileManager *fileManager = [NSFileManager defaultManager];
61 | if ([fileManager fileExistsAtPath:infoPlistPath]) {
62 | NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:infoPlistPath];
63 | NSString* displayName = [plistDict objectForKey:@"CFBundleDisplayName"];
64 | if (displayName) {
65 | return displayName;
66 | }
67 | }
68 |
69 | return _applicationProxy.localizedName ?: _applicationProxy.localizedShortName;
70 | }
71 |
72 | - (NSString*)bundleIdentifier
73 | {
74 | return [_applicationProxy bundleIdentifier];
75 | }
76 |
77 | - (UIImage*)icon
78 | {
79 | if(nil == _icon)
80 | {
81 | _icon = [UIImage _applicationIconImageForBundleIdentifier:self.bundleIdentifier format:10 scale:UIScreen.mainScreen.scale];
82 | }
83 |
84 | return _icon;
85 | }
86 |
87 | - (NSString*)applicationDSID
88 | {
89 | return _applicationProxy.applicationDSID;
90 | }
91 | - (NSURL*)bundleURL
92 | {
93 | return _applicationProxy.bundleURL;
94 | }
95 | - (NSURL*)containerURL
96 | {
97 | return _applicationProxy.containerURL;
98 | }
99 | - (NSString*)applicationIdentifier
100 | {
101 | return _applicationProxy.applicationIdentifier;
102 | }
103 |
104 | - (NSString*)applicationType
105 | {
106 | return _applicationProxy.applicationType;
107 | }
108 |
109 | - (NSArray*)groupIdentifiers
110 | {
111 | return _applicationProxy.groupIdentifiers;
112 | }
113 |
114 | - (NSNumber*)itemID
115 | {
116 | return _applicationProxy.itemID;
117 | }
118 |
119 | - (NSString*)itemName
120 | {
121 | return _applicationProxy.itemName;
122 | }
123 |
124 | - (NSString*)minimumSystemVersion
125 | {
126 | return _applicationProxy.minimumSystemVersion;
127 | }
128 |
129 | - (NSArray*)requiredDeviceCapabilities
130 | {
131 | return _applicationProxy.requiredDeviceCapabilities;
132 | }
133 |
134 | - (NSString*)sdkVersion
135 | {
136 | return _applicationProxy.sdkVersion;
137 | }
138 |
139 | - (NSString*)shortVersionString
140 | {
141 | return _applicationProxy.shortVersionString;
142 | }
143 |
144 | - (NSNumber*)staticDiskUsage
145 | {
146 | return _applicationProxy.staticDiskUsage;
147 | }
148 |
149 | - (NSString*)teamID
150 | {
151 | return _applicationProxy.teamID;
152 | }
153 |
154 | - (NSString*)vendorName
155 | {
156 | return _applicationProxy.vendorName;
157 | }
158 |
159 | - (BOOL)isHiddenApp
160 | {
161 | return [[_applicationProxy appTags] indexOfObject:@"hidden"] != NSNotFound;
162 | }
163 |
164 | - (id)initWithPrivateProxy:(id)privateProxy
165 | {
166 | self = [super init];
167 | if(self != nil)
168 | {
169 | _applicationProxy = (PrivateApi_LSApplicationProxy*)privateProxy;
170 | }
171 |
172 | return self;
173 | }
174 |
175 | - (instancetype)initWithBundleIdentifier:(NSString*)bundleIdentifier
176 | {
177 | self = [super init];
178 | if(self != nil)
179 | {
180 | _applicationProxy = [NSClassFromString(@"LSApplicationProxy") applicationProxyForIdentifier:bundleIdentifier];
181 | }
182 |
183 | return self;
184 | }
185 |
186 | + (instancetype)appWithPrivateProxy:(id)privateProxy
187 | {
188 | return [[self alloc] initWithPrivateProxy:privateProxy];
189 | }
190 |
191 | + (instancetype)appWithBundleIdentifier:(NSString*)bundleIdentifier
192 | {
193 | return [[self alloc] initWithBundleIdentifier:bundleIdentifier];
194 | }
195 |
196 | @end
197 |
--------------------------------------------------------------------------------
/Bootstrap/AppViewController.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | NS_ASSUME_NONNULL_BEGIN
4 |
5 | @interface AppViewController : UITableViewController
6 |
7 | + (instancetype)sharedInstance;
8 |
9 | @end
10 |
11 | NS_ASSUME_NONNULL_END
12 |
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "size": "20x20",
5 | "idiom": "universal",
6 | "filename": "icon-20@2x.png",
7 | "scale": "2x",
8 | "platform": "ios"
9 | },
10 | {
11 | "size": "20x20",
12 | "idiom": "universal",
13 | "filename": "icon-20@3x.png",
14 | "scale": "3x",
15 | "platform": "ios"
16 | },
17 | {
18 | "size": "29x29",
19 | "idiom": "universal",
20 | "filename": "icon-29@2x.png",
21 | "scale": "2x",
22 | "platform": "ios"
23 | },
24 | {
25 | "size": "29x29",
26 | "idiom": "universal",
27 | "filename": "icon-29@3x.png",
28 | "scale": "3x",
29 | "platform": "ios"
30 | },
31 | {
32 | "size": "38x38",
33 | "idiom": "universal",
34 | "filename": "icon-38@2x.png",
35 | "scale": "2x",
36 | "platform": "ios"
37 | },
38 | {
39 | "size": "38x38",
40 | "idiom": "universal",
41 | "filename": "icon-38@3x.png",
42 | "scale": "3x",
43 | "platform": "ios"
44 | },
45 | {
46 | "size": "40x40",
47 | "idiom": "universal",
48 | "filename": "icon-40@2x.png",
49 | "scale": "2x",
50 | "platform": "ios"
51 | },
52 | {
53 | "size": "40x40",
54 | "idiom": "universal",
55 | "filename": "icon-40@3x.png",
56 | "scale": "3x",
57 | "platform": "ios"
58 | },
59 | {
60 | "size": "60x60",
61 | "idiom": "universal",
62 | "filename": "icon-60@2x.png",
63 | "scale": "2x",
64 | "platform": "ios"
65 | },
66 | {
67 | "size": "60x60",
68 | "idiom": "universal",
69 | "filename": "icon-60@3x.png",
70 | "scale": "3x",
71 | "platform": "ios"
72 | },
73 | {
74 | "size": "64x64",
75 | "idiom": "universal",
76 | "filename": "icon-64@2x.png",
77 | "scale": "2x",
78 | "platform": "ios"
79 | },
80 | {
81 | "size": "64x64",
82 | "idiom": "universal",
83 | "filename": "icon-64@3x.png",
84 | "scale": "3x",
85 | "platform": "ios"
86 | },
87 | {
88 | "size": "68x68",
89 | "idiom": "universal",
90 | "filename": "icon-68@2x.png",
91 | "scale": "2x",
92 | "platform": "ios"
93 | },
94 | {
95 | "size": "76x76",
96 | "idiom": "universal",
97 | "filename": "icon-76@2x.png",
98 | "scale": "2x",
99 | "platform": "ios"
100 | },
101 | {
102 | "size": "83.5x83.5",
103 | "idiom": "universal",
104 | "filename": "icon-83.5@2x.png",
105 | "scale": "2x",
106 | "platform": "ios"
107 | },
108 | {
109 | "size": "1024x1024",
110 | "idiom": "universal",
111 | "filename": "icon-1024.png",
112 | "scale": "1x",
113 | "platform": "ios"
114 | }
115 | ],
116 | "info": {
117 | "version": 1,
118 | "author": "icon.wuruihong.com"
119 | }
120 | }
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-1024.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-38@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-38@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-38@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-38@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "size": "20x20",
5 | "idiom": "universal",
6 | "filename": "icon-20@2x.png",
7 | "scale": "2x",
8 | "platform": "ios"
9 | },
10 | {
11 | "size": "20x20",
12 | "idiom": "universal",
13 | "filename": "icon-20@3x.png",
14 | "scale": "3x",
15 | "platform": "ios"
16 | },
17 | {
18 | "size": "29x29",
19 | "idiom": "universal",
20 | "filename": "icon-29@2x.png",
21 | "scale": "2x",
22 | "platform": "ios"
23 | },
24 | {
25 | "size": "29x29",
26 | "idiom": "universal",
27 | "filename": "icon-29@3x.png",
28 | "scale": "3x",
29 | "platform": "ios"
30 | },
31 | {
32 | "size": "38x38",
33 | "idiom": "universal",
34 | "filename": "icon-38@2x.png",
35 | "scale": "2x",
36 | "platform": "ios"
37 | },
38 | {
39 | "size": "38x38",
40 | "idiom": "universal",
41 | "filename": "icon-38@3x.png",
42 | "scale": "3x",
43 | "platform": "ios"
44 | },
45 | {
46 | "size": "40x40",
47 | "idiom": "universal",
48 | "filename": "icon-40@2x.png",
49 | "scale": "2x",
50 | "platform": "ios"
51 | },
52 | {
53 | "size": "40x40",
54 | "idiom": "universal",
55 | "filename": "icon-40@3x.png",
56 | "scale": "3x",
57 | "platform": "ios"
58 | },
59 | {
60 | "size": "60x60",
61 | "idiom": "universal",
62 | "filename": "icon-60@2x.png",
63 | "scale": "2x",
64 | "platform": "ios"
65 | },
66 | {
67 | "size": "60x60",
68 | "idiom": "universal",
69 | "filename": "icon-60@3x.png",
70 | "scale": "3x",
71 | "platform": "ios"
72 | },
73 | {
74 | "size": "64x64",
75 | "idiom": "universal",
76 | "filename": "icon-64@2x.png",
77 | "scale": "2x",
78 | "platform": "ios"
79 | },
80 | {
81 | "size": "64x64",
82 | "idiom": "universal",
83 | "filename": "icon-64@3x.png",
84 | "scale": "3x",
85 | "platform": "ios"
86 | },
87 | {
88 | "size": "68x68",
89 | "idiom": "universal",
90 | "filename": "icon-68@2x.png",
91 | "scale": "2x",
92 | "platform": "ios"
93 | },
94 | {
95 | "size": "76x76",
96 | "idiom": "universal",
97 | "filename": "icon-76@2x.png",
98 | "scale": "2x",
99 | "platform": "ios"
100 | },
101 | {
102 | "size": "83.5x83.5",
103 | "idiom": "universal",
104 | "filename": "icon-83.5@2x.png",
105 | "scale": "2x",
106 | "platform": "ios"
107 | },
108 | {
109 | "size": "1024x1024",
110 | "idiom": "universal",
111 | "filename": "icon-1024.png",
112 | "scale": "1x",
113 | "platform": "ios"
114 | }
115 | ],
116 | "info": {
117 | "version": 1,
118 | "author": "icon.wuruihong.com"
119 | }
120 | }
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-1024.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-20@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-20@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-29@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-29@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-38@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-38@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-38@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-38@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-40@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-40@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-60@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-60@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-64@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-64@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-64@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-64@3x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-68@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-68@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-76@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/AppIcon.appiconset1/icon-83.5@2x.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/Bootstrap.imageset/Bootstrap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/Assets.xcassets/Bootstrap.imageset/Bootstrap.png
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/Bootstrap.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Bootstrap.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Bootstrap/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Bootstrap/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Bootstrap/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/Bootstrap/Bootstrap-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 | #include
5 | #include "credits.h"
6 | #include "utils.h"
7 | #include "bootstrap.h"
8 | #include "ViewController.h"
9 | #include "AppViewController.h"
10 | #include "NSUserDefaults+appDefaults.h"
11 |
--------------------------------------------------------------------------------
/Bootstrap/Classes/Log.swift:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Bootstrap/Extensions/ButtonStyles.swift:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Bootstrap/Extensions/VisualEffectView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // VisualEffectView.swift
3 | // BootstrapUI
4 | //
5 | // Created by haxi0 on 29.12.2023.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct VisualEffectView: UIViewRepresentable {
11 | var effect: UIVisualEffect?
12 | func makeUIView(context: UIViewRepresentableContext) -> UIVisualEffectView { UIVisualEffectView() }
13 | func updateUIView(_ uiView: UIVisualEffectView, context: UIViewRepresentableContext) { uiView.effect = effect }
14 | }
15 |
--------------------------------------------------------------------------------
/Bootstrap/Frameworks/MobileContainerManager.framework/MobileContainerManager.tbd:
--------------------------------------------------------------------------------
1 | --- !tapi-tbd-v3
2 | archs: [ armv7, armv7s, arm64, arm64e ]
3 | platform: ios
4 | flags: [ flat_namespace ]
5 | install-name: /System/Library/PrivateFrameworks/MobileContainerManager.framework/MobileContainerManager
6 | current-version: 1
7 | compatibility-version: 1
8 | objc-constraint: retain_release
9 | exports:
10 | - archs: [ armv7, armv7s, arm64, arm64e ]
11 | symbols: [ _MCMErrorDomain, _MCMFunctionNameErrorKey,
12 | _MCMPathArgumentErrorKey, _MCMSourceFileLineErrorKey,
13 | _kMCMACLFailureError, _kMCMBadInitializerValuesError,
14 | _kMCMBadReplyContentsError,
15 | _kMCMBundleOwnerMigrationFailError,
16 | _kMCMCacheAddError, _kMCMCacheFailedToRebuildError,
17 | _kMCMCacheInconsistencyError,
18 | _kMCMCacheInvalidDataError, _kMCMCacheRemoveError,
19 | _kMCMContainerNotFoundError,
20 | _kMCMContainersWithClassInitError,
21 | _kMCMCreateBaseDirectoryError,
22 | _kMCMCreateContainerClassDirectoryError,
23 | _kMCMCreateDeathRowDirectoryError,
24 | _kMCMCreateReplaceDirectoryError,
25 | _kMCMCreateStagingDirectoryError,
26 | _kMCMCreateSubDirectoryError,
27 | _kMCMCreateTempDirectoryError,
28 | _kMCMDataProtectionFailLockedError,
29 | _kMCMDestroyContainerError, _kMCMExceptionError,
30 | _kMCMExistingContainerReplaceError,
31 | _kMCMFailureToGetErrorReply,
32 | _kMCMGetMetadataErrorError,
33 | _kMCMIdentifierNotFoundInDbError,
34 | _kMCMInvalidCommandError,
35 | _kMCMInvalidContainerObjectError,
36 | _kMCMInvalidEntitlementInfoError,
37 | _kMCMInvalidMetadataError,
38 | _kMCMInvalidMetadataURLMismatchError,
39 | _kMCMInvalidParametersError, _kMCMInvalidReplyError,
40 | _kMCMInvalidURLError,
41 | _kMCMMismatchedClassReplaceError,
42 | _kMCMMismatchedUserReplaceError,
43 | _kMCMMoveStagingToLiveError,
44 | _kMCMMoveToDeathRowError, _kMCMNilIdentifierError,
45 | _kMCMNotEntitledForOperationError,
46 | _kMCMPathNotFoundError,
47 | _kMCMPendingUpdateNoLongerValidError,
48 | _kMCMReadEntitlementFileError,
49 | _kMCMReadMetadataError, _kMCMRegenerateUUIDMoveError,
50 | _kMCMRemoveIndividualStagingDirectoryError,
51 | _kMCMRemoveLegacyDirectoryError,
52 | _kMCMRemoveStagingDirectoryError,
53 | _kMCMRemoveTempContainerError,
54 | _kMCMReplaceContainerError,
55 | _kMCMReplaceMoveToTempError,
56 | _kMCMReplaceRecoverError, _kMCMReplaceRemoveError,
57 | _kMCMReplaceURLError, _kMCMRestoreContainerError,
58 | _kMCMRestorePathExistsError, _kMCMSQLiteError,
59 | _kMCMSQLiteUnexpectedNumChangesError,
60 | _kMCMSameContainerReplaceError,
61 | _kMCMSetSandboxMappingError, _kMCMSetupProxyError,
62 | _kMCMStageForDeleteError,
63 | _kMCMStageSharedContentFailureError, _kMCMSuccess,
64 | _kMCMUndefinedContainerClassError,
65 | _kMCMUnknownSubdirectoriesForClassError,
66 | _kMCMValueNotFoundForKeyError,
67 | _kMCMWriteEntitlementFileError,
68 | _kMCMWriteMetadataDictionaryError,
69 | _kMCMXPCInterruptedReplyError,
70 | _kMCMXPCInvalidReplyError, _kMCMXPCSetupError,
71 | _kMCMXPCUnknownReplyError ]
72 | objc-classes: [ MCMAppContainer, MCMAppDataContainer, MCMContainer,
73 | MCMContainerManager, MCMDataContainer,
74 | MCMFrameworkContainer,
75 | MCMInternalDaemonDataContainer, MCMLazyDescription,
76 | MCMPluginKitPluginContainer,
77 | MCMPluginKitPluginDataContainer,
78 | MCMSharedDataContainer, MCMSharedSystemDataContainer,
79 | MCMSystemDataContainer, MCMTempDirDataContainer,
80 | MCMVPNPluginContainer, MCMVPNPluginDataContainer,
81 | MCMXPCServiceDataContainer ]
82 | objc-ivars: [ MCMContainer._containerClass,
83 | MCMContainer._identifier,
84 | MCMContainer._personaUniqueString,
85 | MCMContainer._thisContainer, MCMContainer._uuid,
86 | MCMLazyDescription._block, MCMLazyDescription._value ]
87 | ...
88 |
--------------------------------------------------------------------------------
/Bootstrap/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIApplicationSceneManifest
6 |
7 | UIApplicationSupportsMultipleScenes
8 |
9 | UISceneConfigurations
10 |
11 | UIWindowSceneSessionRoleApplication
12 |
13 |
14 | UISceneConfigurationName
15 | Default Configuration
16 | UISceneDelegateClassName
17 | SceneDelegate
18 | UISceneStoryboardFile
19 | Main
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Bootstrap/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 RootHide
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Bootstrap/MBProgressHUD.framework/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/MBProgressHUD.framework/Info.plist
--------------------------------------------------------------------------------
/Bootstrap/MBProgressHUD.framework/MBProgressHUD:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/MBProgressHUD.framework/MBProgressHUD
--------------------------------------------------------------------------------
/Bootstrap/MBProgressHUD.framework/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module MBProgressHUD {
2 | umbrella header "MBProgressHUD.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Bootstrap/NSUserDefaults+appDefaults.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | NS_ASSUME_NONNULL_BEGIN
4 |
5 | @interface NSUserDefaults (appDefaults)
6 | +(NSUserDefaults*)appDefaults;
7 | @end
8 |
9 | NS_ASSUME_NONNULL_END
10 |
--------------------------------------------------------------------------------
/Bootstrap/NSUserDefaults+appDefaults.m:
--------------------------------------------------------------------------------
1 | #import "NSUserDefaults+appDefaults.h"
2 | #include "common.h"
3 |
4 | @interface MCMContainer : NSObject
5 | - (NSURL *)url;
6 | + (instancetype)containerWithIdentifier:(NSString *)identifier
7 | createIfNecessary:(BOOL)createIfNecessary
8 | existed:(BOOL *)existed
9 | error:(NSError **)error;
10 | @end
11 |
12 | @interface MCMAppDataContainer : MCMContainer
13 | @end
14 |
15 | @implementation NSUserDefaults (appDefaults)
16 |
17 | static NSUserDefaults* _appDefaults=nil;
18 |
19 | //+(NSUserDefaults*)appDefaults {
20 | // static dispatch_once_t once;
21 | // dispatch_once (&once, ^{
22 | // /* initWithSuiteName does not accept AppBundleIdentifier as SuiteName, and preferences cannot be shared between processes with different uid. */
23 | // _appDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.roothide.Bootstrap.shared"];
24 | // [_appDefaults registerDefaults:@{}];
25 | // });
26 | // return _appDefaults;
27 | //}
28 |
29 | +(NSUserDefaults*)appDefaults {
30 | static dispatch_once_t once;
31 | dispatch_once (&once, ^{
32 | MCMAppDataContainer* container = [MCMAppDataContainer containerWithIdentifier:NSBundle.mainBundle.bundleIdentifier createIfNecessary:YES existed:nil error:nil];
33 | NSString* path = [NSString stringWithFormat:@"%@/Library/Preferences/%@.plist", container.url.path, NSBundle.mainBundle.bundleIdentifier];
34 | SYSLOG("appDefaults=%@", path);
35 | _appDefaults = [[NSUserDefaults alloc] initWithSuiteName:path];
36 | [_appDefaults registerDefaults:@{}];
37 | });
38 | return _appDefaults;
39 | }
40 |
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/Bootstrap/SceneDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface SceneDelegate : UIResponder
4 |
5 | @property (strong, nonatomic) UIWindow * window;
6 |
7 | @end
8 |
9 |
--------------------------------------------------------------------------------
/Bootstrap/SceneDelegate.m:
--------------------------------------------------------------------------------
1 | #import "SceneDelegate.h"
2 |
3 | @interface SceneDelegate ()
4 |
5 | @end
6 |
7 | @implementation SceneDelegate
8 |
9 |
10 | - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
11 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
12 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
13 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
14 | }
15 |
16 |
17 | - (void)sceneDidDisconnect:(UIScene *)scene {
18 | // Called as the scene is being released by the system.
19 | // This occurs shortly after the scene enters the background, or when its session is discarded.
20 | // Release any resources associated with this scene that can be re-created the next time the scene connects.
21 | // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
22 | }
23 |
24 |
25 | - (void)sceneDidBecomeActive:(UIScene *)scene {
26 | // Called when the scene has moved from an inactive state to an active state.
27 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
28 | }
29 |
30 |
31 | - (void)sceneWillResignActive:(UIScene *)scene {
32 | // Called when the scene will move from an active state to an inactive state.
33 | // This may occur due to temporary interruptions (ex. an incoming phone call).
34 | }
35 |
36 |
37 | - (void)sceneWillEnterForeground:(UIScene *)scene {
38 | // Called as the scene transitions from the background to the foreground.
39 | // Use this method to undo the changes made on entering the background.
40 | }
41 |
42 |
43 | - (void)sceneDidEnterBackground:(UIScene *)scene {
44 | // Called as the scene transitions from the foreground to the background.
45 | // Use this method to save data, release shared resources, and store enough scene-specific state information
46 | // to restore the scene back to its current state.
47 | }
48 |
49 |
50 | @end
51 |
--------------------------------------------------------------------------------
/Bootstrap/ViewController.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface ViewController : UIViewController
4 | @end
5 |
6 | void initFromSwiftUI();
7 | void respringAction();
8 | void rebuildappsAction();
9 | void reinstallPackageManager();
10 | void rebuildIconCacheAction();
11 | void tweaEnableAction(BOOL enable);
12 | BOOL opensshAction(BOOL enable);
13 | void bootstrapAction();
14 | void unbootstrapAction();
15 | BOOL updateOpensshStatus(BOOL notify);
16 | void resetMobilePassword();
17 | void URLSchemesAction(BOOL enable);
18 | void hideAllCTBugApps();
19 | void unhideAllCTBugApps();
20 | BOOL isAllCTBugAppsHidden();
21 |
--------------------------------------------------------------------------------
/Bootstrap/Views/AppViewControllerWrapper.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppViewControllerWrapper.swift
3 | // Bootstrap
4 | //
5 | // Created by haxi0 on 02.01.2024.
6 | //
7 |
8 | import SwiftUI
9 | import UIKit
10 |
11 | struct AppViewControllerWrapper: UIViewControllerRepresentable {
12 | class Coordinator: NSObject {}
13 |
14 | func makeCoordinator() -> Coordinator {
15 | return Coordinator()
16 | }
17 |
18 | func makeUIViewController(context: Context) -> UIViewController {
19 | let navigationController = UINavigationController(rootViewController: AppViewController.sharedInstance())
20 | return navigationController
21 | }
22 |
23 | func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
24 | }
25 |
--------------------------------------------------------------------------------
/Bootstrap/Views/ContentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ContentView.swift
3 | // BootstrapUI
4 | //
5 | // Created by haxi0 on 21.12.2023.
6 | //
7 |
8 | import SwiftUI
9 | import FluidGradient
10 |
11 | @objc class SwiftUIViewWrapper: NSObject {
12 | @objc static func createSwiftUIView() -> UIViewController {
13 | let viewController = UIHostingController(rootView: MainView())
14 | return viewController
15 | }
16 | }
17 |
18 | public let niceAnimation = Animation.timingCurve(0.25, 0.1, 0.35, 1.3).speed(0.9)
19 |
20 | struct MainView: View {
21 | @State var LogString: String = ""
22 | @State var lastScroll = Date()
23 |
24 | // let colorsWarm: [Color] = [.red, .orange, .yellow]
25 | // let colorsCold: [Color] = [.blue, .purple, .pink]
26 |
27 | @State var currentBlobs: [Color] = []
28 | @State var currentHighlights: [Color] = []
29 |
30 | @AppStorage("colorScheme", store: UserDefaults.app()) var colorScheme = 1
31 |
32 | @State private var showOptions = false
33 | @State private var showCredits = false
34 | @State private var showAppView = false
35 | @State private var strapButtonDisabled = false
36 | @State private var newVersionAvailable = false
37 | @State private var newVersionReleaseURL:String = ""
38 | @State private var tweakEnable: Bool = !isSystemBootstrapped() || FileManager.default.fileExists(atPath: jbroot("/var/mobile/.tweakenabled"))
39 |
40 | let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
41 |
42 | var body: some View {
43 | ZStack {
44 | FluidGradient(blobs: currentBlobs,
45 | highlights: currentHighlights,
46 | speed: 0.5,
47 | blur: 0.95)
48 | .background(.quaternary)
49 | .ignoresSafeArea()
50 | .onAppear {
51 | currentBlobs = colorScheme == 0 ? [.red, .orange] : [.blue, .purple]
52 | currentHighlights = colorScheme == 0 ? [.red, .yellow] : [.blue, .pink]
53 | }
54 | .onChange(of: colorScheme) {_ in
55 | withAnimation(.easeInOut(duration: 2.5).speed(0.5)) {
56 | currentBlobs = colorScheme == 0 ? [.red, .orange] : [.blue, .purple]
57 | currentHighlights = colorScheme == 0 ? [.red, .yellow] : [.blue, .pink]
58 | }
59 | }
60 |
61 | VStack {
62 | HStack(spacing: 15) {
63 | Image("Bootstrap")
64 | .resizable()
65 | .frame(width: 80, height: 80)
66 | .cornerRadius(18)
67 |
68 | VStack(alignment: .leading, content: {
69 | Text("Bootstrap")
70 | .bold()
71 | .font(Font.system(size: 35))
72 | Text("Version \(appVersion!)")
73 | .font(Font.system(size: 20))
74 | .opacity(0.5)
75 | })
76 | }
77 | .padding(20)
78 |
79 | if newVersionAvailable {
80 | Button {
81 | UIApplication.shared.open(URL(string: newVersionReleaseURL)!)
82 | } label: {
83 | Label(
84 | title: { Text("New Version Available") },
85 | icon: { Image(systemName: "arrow.down.app.fill") }
86 | )
87 | }
88 | .frame(height:20)
89 | .padding(.top, -20)
90 | .padding(10)
91 | }
92 |
93 | VStack {
94 | Button {
95 | Haptic.shared.play(.light)
96 | bootstrapAction()
97 | } label: {
98 | if isSystemBootstrapped() {
99 | if checkBootstrapVersion() {
100 | Label(
101 | title: { Text("Bootstrapped").bold() },
102 | icon: { Image(systemName: "chair.fill") }
103 | )
104 | .frame(maxWidth: .infinity)
105 | .padding(25)
106 | .onAppear() {
107 | strapButtonDisabled = true
108 | }
109 | } else {
110 | Label(
111 | title: { Text("Update").bold() },
112 | icon: { Image(systemName: "chair") }
113 | )
114 | .frame(maxWidth: .infinity)
115 | .padding(25)
116 | }
117 | } else if isBootstrapInstalled() {
118 | Label(
119 | title: { Text("Bootstrap").bold() },
120 | icon: { Image(systemName: "chair") }
121 | )
122 | .frame(maxWidth: .infinity)
123 | .padding(25)
124 | } else if ProcessInfo.processInfo.operatingSystemVersion.majorVersion>=15 {
125 | Label(
126 | title: { Text("Install").bold() },
127 | icon: { Image(systemName: "chair") }
128 | )
129 | .frame(maxWidth: .infinity)
130 | .padding(25)
131 | } else {
132 | Label(
133 | title: { Text("Unsupported").bold() },
134 | icon: { Image(systemName: "chair") }
135 | )
136 | .frame(maxWidth: .infinity)
137 | .padding(25)
138 | .onAppear() {
139 | strapButtonDisabled = true
140 | }
141 | }
142 | }
143 | .frame(width: 295)
144 | .background {
145 | Color(UIColor.systemBackground)
146 | .cornerRadius(18)
147 | .opacity(0.5)
148 | }
149 | .disabled(strapButtonDisabled)
150 |
151 | HStack {
152 |
153 | Button {
154 | showAppView.toggle()
155 | Haptic.shared.play(.light)
156 | } label: {
157 | Label(
158 | title: { Text("App List") },
159 | icon: { Image(systemName: "checklist") }
160 | )
161 | .frame(width: 145, height: 65)
162 | }
163 | .background {
164 | Color(UIColor.systemBackground)
165 | .cornerRadius(18)
166 | .opacity(0.5)
167 | }
168 | .disabled(!isSystemBootstrapped() || !checkBootstrapVersion())
169 |
170 | Button {
171 | withAnimation(niceAnimation) {
172 | Haptic.shared.play(.light)
173 | showOptions = true
174 | }
175 | } label: {
176 | Label(
177 | title: { Text("Settings") },
178 | icon: { Image(systemName: "gear") }
179 | )
180 | .frame(width: 145, height: 65)
181 | }
182 | .background {
183 | Color(UIColor.systemBackground)
184 | .cornerRadius(18)
185 | .opacity(0.5)
186 | }
187 |
188 | }
189 |
190 | VStack {
191 | ScrollViewReader { scroll in
192 | ScrollView {
193 | Text(LogString)
194 | .frame(minWidth: 0,
195 | maxWidth: .infinity,
196 | minHeight: 0,
197 | maxHeight: .infinity,
198 | alignment: .topLeading)
199 | .transition(.opacity)
200 | .textSelection(.enabled)
201 | .font(.custom("Menlo", size: 15))
202 | .foregroundColor(.white)
203 | .id("LogText")
204 | .onChange(of: LogString) { newValue in
205 | // withAnimation {
206 | // if lastScroll.timeIntervalSinceNow < -0.25 {
207 | // lastScroll = Date()
208 | // scroll.scrollTo("LogText", anchor: .bottom)
209 | // }
210 | // }
211 | scroll.scrollTo("LogText", anchor: .bottom)
212 |
213 | }
214 | .onReceive(NotificationCenter.default.publisher(for: Notification.Name("LogMsgNotification"))) { obj in
215 | DispatchQueue.main.async {
216 | LogString += "\(obj.object as! NSString)\n"
217 | }
218 | }
219 |
220 | }
221 | }
222 | .frame(maxHeight: 200)
223 | }
224 | .frame(width: 253)
225 | .padding(20)
226 | .background {
227 | Color(.black)
228 | .cornerRadius(18)
229 | .opacity(0.5)
230 | }
231 |
232 | Text("UI made with love by haxi0. ♡")
233 | .font(Font.system(size: 13))
234 | .opacity(0.5)
235 | }
236 | }
237 | .scaleEffect((showOptions || showCredits) ? 0.9 : 1)
238 | }
239 | .tint(colorScheme == 0 ? .orange : .blue)
240 | .safeAreaInset(edge: .bottom, spacing: 0) {
241 | Button {
242 | withAnimation(niceAnimation) {
243 | Haptic.shared.play(.light)
244 | showCredits.toggle()
245 | }
246 | } label: {
247 | Label(
248 | title: { Text("Credits") },
249 | icon: { Image(systemName: "person") }
250 | )
251 | }
252 | .frame(height:30, alignment: .bottom)
253 | .padding(10)
254 | .animation(.default, value: colorScheme)
255 | .tint(colorScheme == 0 ? .orange : .blue)
256 | }
257 | .overlay {
258 | Group {
259 | CreditsView(showCredits: $showCredits)
260 | .opacity(showCredits ? 1 : 0)
261 | .allowsHitTesting(showCredits)
262 | OptionsView(showOptions: $showOptions, tweakEnable: $tweakEnable, colorScheme: $colorScheme)
263 | .opacity(showOptions ? 1 : 0)
264 | .allowsHitTesting(showOptions)
265 | }
266 | .animation(.default, value: colorScheme)
267 | .tint(colorScheme == 0 ? .orange : .blue)
268 | }
269 | .onAppear {
270 | initFromSwiftUI()
271 | Task {
272 | do {
273 | try await checkForUpdates()
274 | } catch {
275 |
276 | }
277 | }
278 | }
279 | .sheet(isPresented: $showAppView) {
280 | AppViewControllerWrapper()
281 | }
282 | }
283 |
284 | func checkForUpdates() async throws {
285 | if let currentAppVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
286 | let owner = "roothide"
287 | let repo = "Bootstrap"
288 |
289 | // Get the releases
290 | let releasesURL = URL(string: "https://api.github.com/repos/\(owner)/\(repo)/releases")!
291 | let releasesRequest = URLRequest(url: releasesURL)
292 | let (releasesData, _) = try await URLSession.shared.data(for: releasesRequest)
293 | guard let releasesJSON = try JSONSerialization.jsonObject(with: releasesData, options: []) as? [[String: Any]] else {
294 | return
295 | }
296 |
297 | if let latestTag = releasesJSON.first?["tag_name"] as? String, latestTag != currentAppVersion {
298 | newVersionAvailable = true
299 | newVersionReleaseURL = "https://github.com/\(owner)/\(repo)/releases/tag/\(latestTag)"
300 | }
301 | }
302 | }
303 | }
304 |
305 | struct MainView_Preview: PreviewProvider {
306 | static var previews: some View {
307 | MainView()
308 | }
309 | }
310 |
--------------------------------------------------------------------------------
/Bootstrap/Views/CreditsView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CreditsView.swift
3 | // Bootstrap
4 | //
5 | // Created by haxi0 on 31.12.2023.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct CreditsView: View {
11 | @Binding var showCredits: Bool
12 |
13 | let credits: [String: String] = CREDITS as! Dictionary
14 |
15 | var body: some View {
16 | ZStack {
17 | VisualEffectView(effect: UIBlurEffect(style: .regular))
18 | .ignoresSafeArea()
19 |
20 | VStack {
21 | HStack {
22 | Text("Credits")
23 | .bold()
24 | .frame(maxWidth: 250, alignment: .leading)
25 | .font(Font.system(size: 35))
26 | Button {
27 | Haptic.shared.play(.light)
28 | withAnimation(niceAnimation) {
29 | showCredits = false
30 | }
31 | } label: {
32 | Image(systemName: "xmark.circle")
33 | .resizable()
34 | .foregroundColor(.primary)
35 | .frame(width: 25, height: 25)
36 | .padding(6)
37 | }
38 | .background(.ultraThinMaterial)
39 | .cornerRadius(.infinity)
40 | }
41 |
42 | ScrollView {
43 | VStack {
44 |
45 | VStack {
46 | ForEach(credits.sorted(by: { $0.key < $1.key }), id: \.key) { (name, link) in
47 | creditStack(name: name, link: link)
48 | }
49 | }
50 | }
51 | .frame(width: 253)
52 | .padding(20)
53 | }
54 | .background {
55 | Color(UIColor.systemBackground)
56 | .cornerRadius(20)
57 | .opacity(0.5)
58 | }
59 | .frame(maxHeight: 550)
60 | }
61 | .scaleEffect(showCredits ? 1 : 0.9)
62 | }
63 | }
64 |
65 | private func creditStack(name: String, link: String) -> some View {
66 | HStack {
67 | Text(name)
68 | .bold()
69 | Spacer()
70 | Button {
71 | if let url = URL(string: link) {
72 | UIApplication.shared.open(url)
73 | }
74 | } label: {
75 | Image(systemName: "link")
76 | }
77 | }
78 | .padding(5)
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/Bootstrap/Views/Haptic++.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Haptic++.swift
3 | // PsychicPaper
4 | //
5 | // Created by Hariz Shirazi on 2023-02-04.
6 | //
7 |
8 | import Foundation
9 | import UIKit
10 |
11 | /// Wrapper around UIKit haptics
12 | class Haptic {
13 | static let shared = Haptic()
14 | private init() { }
15 | /// Play haptic feedback
16 | func play(_ feedbackStyle: UIImpactFeedbackGenerator.FeedbackStyle) {
17 | UIImpactFeedbackGenerator(style: feedbackStyle).impactOccurred()
18 | }
19 |
20 | /// Provide haptic user feedback for an action
21 | func notify(_ feedbackType: UINotificationFeedbackGenerator.FeedbackType) {
22 | UINotificationFeedbackGenerator().notificationOccurred(feedbackType)
23 | }
24 |
25 | /// Play feedback for a selection
26 | func selection() {
27 | UISelectionFeedbackGenerator().selectionChanged()
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Bootstrap/ar.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "الإعدادات";
2 | "Tweak Enable" = "تفعيل الأدوات";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "إعادة التشغيل السريع";
5 | "Rebuild Apps" = "إعادة بناء التطبيقات";
6 | "Rebuild Icon Cache" = "إعادة بناء ذاكرة الأيقونات المؤقتة";
7 | "Reinstall Sileo & Zebra" = "إعادة تثبيت Sileo و Zebra";
8 | "Uninstall" = "إلغاء التثبيت";
9 | "Credits" = "الاعتمادات";
10 | "New Version Available" = "إصدار جديد متاح";
11 | "Bootstrapped" = "تم التمهيد";
12 | "Update" = "تحديث";
13 | "Install" = "تثبيت";
14 | "Unsupported" = "غير مدعوم";
15 | "App List" = "قائمة التطبيقات";
16 |
17 |
18 | "OK" = "حسنًا";
19 | "Error" = "خطأ";
20 | "Warning" = "تحذير";
21 | "Applying" = "جارِ التطبيق";
22 | "Cancel" = "إلغاء";
23 | "Bootstrapping" = "جارِ التمهيد";
24 | "Uninstalling" = "جارِ إلغاء التثبيت";
25 | "bootstrap uninstalled" = "تم إزالة التمهيد";
26 |
27 | "Enable Tweak for App" = "تفعيل الأدوات للتطبيقات";
28 | "name or identifier" = "الاسم أو المعرف";
29 |
30 | "Server Not Running" = "الخادم لا يعمل";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "خادم التمهيد لا يعمل لأسباب غير واضحة، الشيء الوحيد الذي يمكن عمله الآن هو إعادة تشغيله.";
33 |
34 | "Restart Server" = "إعادة تشغيل الخادم";
35 | "bootstrap server restart successful" = "نجح إعادة تشغيل خادم التمهيد";
36 |
37 | "Rebuilding" = "إعادة البناء";
38 | "Don't exit Bootstrap app until show the lock screen" = "لا تخرج من تطبيق Bootstrap حتى تظهر شاشة القفل";
39 |
40 | "bootstrap installed" = "تم تثبيت التمهيد";
41 | "bootstrap not installed" = "التمهيد غير مثبت";
42 | "system bootstrapped" = "تم تمهيد النظام";
43 | "system not bootstrapped" = "لم يتم تمهيد النظام";
44 | "bootstrap server check successful" = "نجح التحقق من خادم التمهيد";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "يبدو أن تطبيق Filza مثبت لديك، يمكن اكتشاف وتمييز هذا التطبيق لاحقًا على أنه جيلبريك. يمكنك تفعيل الأدوات له لإخفائه.";
47 |
48 | "Status: Rebuilding Apps" = "الحالة: إعادة بناء التطبيقات";
49 | "Status: Reinstalling Sileo" = "الحالة: إعادة تثبيت Sileo";
50 | "Status: Reinstalling Zebra" = "الحالة: إعادة تثبيت Zebra";
51 | "Sileo and Zebra reinstalled!" = "تم إعادة تثبيت Sileo و Zebra!";
52 | "Status: Rebuilding Icon Cache" = "الحالة: إعادة بناء الذاكرة المؤقتة للأيقونات";
53 |
54 | "openssh package is not installed" = "حزمة OpenSSH غير مثبتة";
55 |
56 | "Reboot Device" = "إعادة تشغيل الجهاز";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "إصدار التمهيد الحالي غير متطابق مع إصدار تطبيق Bootstrap، أنت تحتاج كذلك إلى إعادة تشغيل الجهاز لتحديثه.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "إصدار TrollStor الذي لديك قديم جدًا، يدعم Bootstrap إصدارات 2.0 وأحدث من TrollStore فقط، يجب عليك تحديث TrollStore ثم إعادة تثبيت تطبيق Bootstrap.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "يبدو أن وضع المطور غير مفعل على جهازك.\n\nيرحى تفعيل وضع المطور وإعادة تشغيل جهازك.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "تم تثبيت RootHide Dopamine على هذا الجهاز، تثبيت هذا التمهيد الآن قد يتسبب في تعطله!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "لقد قمت بتثبيت إصدار تجريبي قديم، يرجى تعطيل كل أدوات التطبيقات وإعادة تشغيل جهازك لإزالته حتى يتسنى لك تثبيت الإصدار الجديد من Bootstrap.";
66 |
67 | "openssh launch successful" = "نجح تشغيل OpenSSH";
68 | "respring now..." = "جارِ إعادة التشغيل السريع الآن…";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "هل أنت متأكد من أنك تريد إلغاء تثبيت Bootstrap؟\n\nيرجى التأكد من تعطيلك للأدوات لكل التطبيقات قبل إلغاء التثبيت.";
71 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/bootstrap.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/basebin/bootstrap.dylib
--------------------------------------------------------------------------------
/Bootstrap/basebin/bootstrap.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 | platform-application
14 |
15 | get-task-allow
16 |
17 | com.apple.private.persona-mgmt
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/bootstrapd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/basebin/bootstrapd
--------------------------------------------------------------------------------
/Bootstrap/basebin/devtest:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/basebin/devtest
--------------------------------------------------------------------------------
/Bootstrap/basebin/entitlements/com.apple.mobilemail.extra:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | platform-application
6 |
7 | get-task-allow
8 |
9 |
10 | uicache.data-container-required
11 |
12 | com.apple.private.security.no-sandbox
13 |
14 | com.apple.private.security.storage.AppBundles
15 |
16 | com.apple.private.security.storage.AppDataContainers
17 |
18 | com.apple.security.iokit-user-client-class
19 |
20 | IOUserClient
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/entitlements/com.apple.mobilemail.strip:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.private.security.container-required
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/entitlements/com.apple.mobilesafari.extra:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | platform-application
6 |
7 | get-task-allow
8 |
9 |
10 | uicache.data-container-required
11 |
12 | com.apple.private.security.no-sandbox
13 |
14 | com.apple.private.security.storage.AppBundles
15 |
16 | com.apple.private.security.storage.AppDataContainers
17 |
18 | com.apple.security.iokit-user-client-class
19 |
20 | IOUserClient
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/entitlements/com.apple.mobilesafari.strip:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.private.security.container-required
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/entitlements/com.apple.mobileslideshow.extra:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | platform-application
6 |
7 | get-task-allow
8 |
9 | com.apple.private.security.storage.AppDataContainers
10 |
11 | com.apple.private.security.no-sandbox
12 |
13 | uicache.data-container-required
14 |
15 |
16 | com.apple.security.exception.process-info
17 |
18 | com.apple.security.temporary-exception.process-info
19 |
20 | com.apple.security.exception.sysctl.read-write
21 |
22 | com.apple.private.security.storage.AppBundles
23 |
24 | com.apple.security.exception.mobile-preferences-read-write
25 |
26 | user-preference-write
27 |
28 | seatbelt-profiles
29 |
30 | com.apple.security.iokit-user-client-class
31 |
32 | IOUserClient
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/entitlements/com.apple.mobileslideshow.photo-picker.extra:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | platform-application
6 |
7 | get-task-allow
8 |
9 | com.apple.private.security.storage.AppDataContainers
10 |
11 | com.apple.private.security.no-sandbox
12 |
13 | uicache.data-container-required
14 |
15 |
16 | com.apple.security.exception.process-info
17 |
18 | com.apple.security.temporary-exception.process-info
19 |
20 | com.apple.security.exception.sysctl.read-write
21 |
22 | com.apple.private.security.storage.AppBundles
23 |
24 | com.apple.security.exception.mobile-preferences-read-write
25 |
26 | user-preference-write
27 |
28 | seatbelt-profiles
29 |
30 | com.apple.security.iokit-user-client-class
31 |
32 | IOUserClient
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/fastPathSign:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/basebin/fastPathSign
--------------------------------------------------------------------------------
/Bootstrap/basebin/ldid:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/basebin/ldid
--------------------------------------------------------------------------------
/Bootstrap/basebin/preload:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/basebin/preload
--------------------------------------------------------------------------------
/Bootstrap/basebin/preload.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/basebin/preload.dylib
--------------------------------------------------------------------------------
/Bootstrap/basebin/rebuildapp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/basebin/rebuildapp
--------------------------------------------------------------------------------
/Bootstrap/basebin/rebuildapps.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | ls /Applications/ | while read app; do
4 | echo "--$app--";
5 |
6 | uicache -p "/Applications/$app" || true
7 |
8 | done
9 |
10 | ls -d /var/containers/Bundle/Application/*/*.app/.jbroot | while read file; do
11 | bundle=$(dirname "$file")
12 | echo "--$bundle--"
13 |
14 | unlink "$bundle"/.jbroot
15 | ln -s / "$bundle"/.jbroot
16 |
17 | uicache -s -p "$bundle" || true
18 | done
19 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/test.sh:
--------------------------------------------------------------------------------
1 | set jbroot_path $(realpath ..)
2 | export DYLD_INSERT_LIBRARIES=$jbroot_path/basebin/bootstrap.dylib
3 | DYLD_INSERT_LIBRARIES=$jbroot_path/basebin/bootstrap.dylib $jbroot_path/usr/bin/zsh
4 |
--------------------------------------------------------------------------------
/Bootstrap/basebin/uicache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/Bootstrap/basebin/uicache
--------------------------------------------------------------------------------
/Bootstrap/bootstrap.h:
--------------------------------------------------------------------------------
1 | #ifndef bootstrap_h
2 | #define bootstrap_h
3 |
4 | #define BOOTSTRAP_VERSION (5)
5 |
6 | #import
7 |
8 | void rebuildSignature(NSString *directoryPath);
9 |
10 | int bootstrap();
11 |
12 | int unbootstrap();
13 |
14 | bool isBootstrapInstalled();
15 |
16 | bool isSystemBootstrapped();
17 |
18 | bool checkBootstrapVersion();
19 |
20 | #endif /* bootstrap_h */
21 |
--------------------------------------------------------------------------------
/Bootstrap/common.h:
--------------------------------------------------------------------------------
1 | #ifndef common_h
2 | #define common_h
3 |
4 | #include "syslog.h"
5 | #include "utils.h"
6 | #include "seh.h"
7 |
8 | #define Localized(x) NSLocalizedString(x,nil)
9 |
10 | #endif /* common_h */
11 |
--------------------------------------------------------------------------------
/Bootstrap/credits.h:
--------------------------------------------------------------------------------
1 | #ifndef credits_h
2 | #define credits_h
3 | // dictionary will be sorted alphabetically
4 | static NSDictionary* CREDITS = @{
5 | @"TheAlphaStream" : @"https://twitter.com/kutarin_",
6 | @"Nick Chan" : @"https://github.com/asdfugil",
7 | @"opa334" : @"http://github.com/opa334",
8 | @"hayden" : @"https://procursus.social/@hayden",
9 | @"CKatri" : @"https://procursus.social/@cameron",
10 | @"Alfie" : @"https://alfiecg.uk",
11 | @"Mineek" : @"https://github.com/mineek",
12 | @"hrtowii" : @"https://github.com/hrtowii",
13 | @"BomberFish" : @"https://twitter.com/bomberfish77",
14 | @"Évelyne" : @"http://github.com/evelyneee",
15 | @"sourcelocation" : @"http://github.com/sourcelocation",
16 | @"Linus Henze" : @"http://github.com/LinusHenze",
17 | @"Cryptic" : @"http://github.com/Cryptiiiic",
18 | @"Clarity" : @"http://github.com/TheRealClarity",
19 | @"Dhinakg" : @"http://github.com/dhinakg",
20 | @"dleovl" : @"https://github.com/dleovl",
21 | @"Capt Inc" : @"http://github.com/captinc",
22 | @"Sam Bingner" : @"http://github.com/sbingner",
23 | @"ProcursusTeam" : @"https://procursus.social/@team",
24 | @"TheosTeam" : @"https://theos.dev",
25 | @"kirb" : @"http://github.com/kirb",
26 | @"Amy While" : @"http://github.com/elihwyma",
27 | @"roothide" : @"http://github.com/roothide",
28 | @"Shadow-" : @"http://iosjb.top/",
29 | @"Summit" : @"https://github.com/dbmz502",
30 | @"SeanIsTethered" : @"https://github.com/jailbreakmerebooted",
31 | @"Huy Nguyen" : @"https://twitter.com/little_34306",
32 | @"haxi0" : @"https://haxi0.space",
33 | @"Nebula" : @"https://itsnebula.net",
34 | @"DuyKhanhTran" : @"https://twitter.com/TranKha50277352",
35 | @"Nathan" : @"https://github.com/verygenericname",
36 | @"Muirey03" : @"https://twitter.com/Muirey03",
37 | @"absidue" : @"https://github.com/absidue",
38 | @"MasterMike" : @"https://ios.cfw.guide",
39 | @"Nightwind" : @"https://twitter.com/NightwindDev",
40 | @"Leptos" : @"https://github.com/leptos-null",
41 | @"Lightmann" : @"https://github.com/L1ghtmann",
42 | @"iAdam1n" : @"https://twitter.com/iAdam1n",
43 | @"xina520" : @"https://twitter.com/xina520",
44 | @"Barron" : @"https://tweaksdev22.github.io",
45 | @"iarrays" : @"https://iarrays.com",
46 | @"niceios" : @"https://twitter.com/niceios",
47 | @"Snail" : @"https://twitter.com/somnusix",
48 | @"Misty" : @"https://twitter.com/miscmisty",
49 | @"limneos" : @"https://twitter.com/limneos",
50 | @"iDownloadBlog" : @"https://twitter.com/idownloadblog",
51 | @"GeoSnOw" : @"https://twitter.com/fce365",
52 | @"onejailbreak" : @"https://twitter.com/onejailbreak_",
53 | @"iExmo" : @"https://twitter.com/iexmojailbreak",
54 | @"omrkujman" : @"https://twitter.com/omrkujman",
55 | @"nzhaonan" : @"https://twitter.com/nzhaonan",
56 | @"YourRepo" : @"https://twitter.com/yourepo",
57 | @"Phuc Do" : @"https://twitter.com/dobabaophuc",
58 | @"dxcool223x" : @"https://twitter.com/dxcool223x",
59 | @"akusio" : @"https://twitter.com/akusio_rr",
60 | @"xsf1re" : @"https://twitter.com/xsf1re",
61 | @"PoomSmart" : @"https://twitter.com/poomsmart",
62 | @"katana" : @"https://twitter.com/nsbedtime",
63 | @"Elias Sfeir" : @"https://twitter.com/eliassfeir1",
64 | @"SquidGesture" : @"https://twitter.com/lclrc",
65 | @"yandevelop" : @"https://twitter.com/yandevelop",
66 | @"EquationGroups" : @"https://twitter.com/equationgroups",
67 | @"tihmstar" : @"https://twitter.com/tihmstar",
68 | @"laileld" : @"https://twitter.com/h_h_x_t",
69 | @"bswbw" : @"https://twitter.com/bswbw",
70 | @"Jonathan" : @"https://twitter.com/jontelang",
71 | @"iRaMzi" : @"https://twitter.com/iramzi7",
72 | @"xybp888" : @"https://twitter.com/xybp888",
73 | @"Ellie" : @"https://twitter.com/elliessurviving",
74 | @"tigisoftware" : @"https://twitter.com/tigisoftware",
75 | @"Kevin" : @"https://github.com/iodes",
76 | @"i_82" : @"https://github.com/Lessica",
77 | @"Lakr" : @"https://github.com/Lakr233",
78 | @"olivertzeng" : @"https://github.com/olivertzeng",
79 | };
80 |
81 | #endif /* credits_h */
82 |
--------------------------------------------------------------------------------
/Bootstrap/de.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Einstellungen";
2 | "Tweak Enable" = "Tweak aktivieren";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Apps neu aufbauen";
6 | "Rebuild Icon Cache" = "Icon-Cache neu aufbauen";
7 | "Reinstall Sileo & Zebra" = "Sileo & Zebra neu installieren";
8 | "Uninstall" = "Entfernen";
9 | "Credits" = "Danksagungen";
10 | "New Version Available" = "Neue Version verfügbar";
11 | "Bootstrapped" = "Bootstrapped";
12 | "Update" = "Update";
13 | "Install" = "Installieren";
14 | "Unsupported" = "Nicht unterstützt";
15 | "App List" = "App-Liste";
16 |
17 |
18 | "OK" = "Okay";
19 | "Error" = "Fehler";
20 | "Warning" = "Warnung";
21 | "Applying" = "Anwenden";
22 | "Cancel" = "Abbrechen";
23 | "Bootstrapping" = "Bootstrapping";
24 | "Uninstalling" = "Entferne";
25 | "bootstrap uninstalled" = "Bootstrap entfernt";
26 |
27 | "Enable Tweak for App" = "Tweak für App aktivieren";
28 | "name or identifier" = "Name oder Identifikator";
29 |
30 | "Server Not Running" = "Server läuft nicht";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "Aus unbekannten Gründen läuft der Bootstrap-Server nicht. Das Einzige, was wir tun können, ist, ihn jetzt neu zu starten.";
33 |
34 | "Restart Server" = "Server neu starten";
35 | "bootstrap server restart successful" = "Neustart des Bootstrap-Servers erfolgreich";
36 |
37 | "Rebuilding" = "Neuaufbau";
38 | "Don't exit Bootstrap app until show the lock screen" = "Beenden Sie die Bootstrap-App erst, wenn der Sperrbildschirm angezeigt wird.";
39 |
40 | "bootstrap installed" = "Bootstrap installiert";
41 | "bootstrap not installed" = "Bootstrap nicht installiert";
42 | "system bootstrapped" = "System gebootstrappt";
43 | "system not bootstrapped" = "System nicht gebootstrappt";
44 | "bootstrap server check successful" = "Überprüfung des Bootstrap-Servers erfolgreich.";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Es scheint, dass Sie die Filza-App installiert haben, die möglicherweise als Jailbreak erkannt wird. Sie können den Tweak aktivieren, um Filza verstecken.";
47 |
48 | "Status: Rebuilding Apps" = "Status: Apps werden neu aufgebaut";
49 | "Status: Reinstalling Sileo" = "Status: Sileo wird neu installiert";
50 | "Status: Reinstalling Zebra" = "Status: Zebra wird neu installiert";
51 | "Sileo and Zebra reinstalled!" = "Sileo und Zebra neu installiert!";
52 | "Status: Rebuilding Icon Cache" = "Status: Icon-Cache wird neu aufgebaut";
53 |
54 | "openssh package is not installed" = "Das OpenSSH-Paket ist nicht installiert.";
55 |
56 | "Reboot Device" = "Gerät neustarten";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "Die aktuelle Bootstrap-Version stimmt nicht mit der Bootstrap-App-Version überein. Sie müssen das Gerät neu starten, um es zu aktualisieren.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Ihre Trollstore-Version ist zu alt, Bootstrap unterstützt nur Trollstore>=2.0. Sie müssen Trollstore aktualisieren und dann die Bootstrap-App neu installieren.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Auf Ihrem Gerät scheint der Entwicklermodus nicht aktiviert zu sein.\n\nBitte aktivieren Sie den Entwicklermodus und starten Sie das Gerät neu.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "Roothide Dopamine wurde auf diesem Gerät installiert. Wenn Bootstrap installiert wird, können Fehler auftreten!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Sie haben eine alte Beta-Version installiert. Bitte deaktivieren Sie alle App-Tweaks und starten Sie das Gerät neu, um diese zu deinstallieren, damit Sie eine neue Bootstrap Version installieren können.";
66 |
67 | "openssh launch successful" = "OpenSSH-Start erfolgreich";
68 | "respring now..." = "Respring ...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Möchten Sie Bootstrap wirklich deinstallieren?\n\nBitte stellen Sie vor der Deinstallation sicher, dass Sie die Tweaks für alle Apps deaktiviert haben.";
71 |
--------------------------------------------------------------------------------
/Bootstrap/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Settings";
2 | "Tweak Enable" = "Tweak Enable";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Rebuild Apps";
6 | "Rebuild Icon Cache" = "Rebuild Icon Cache";
7 | "Reinstall Sileo & Zebra" = "Reinstall Sileo & Zebra";
8 | "Uninstall" = "Uninstall";
9 | "Credits" = "Credits";
10 | "New Version Available" = "New Version Available";
11 | "Bootstrapped" = "Bootstrapped";
12 | "Update" = "Update";
13 | "Install" = "Install";
14 | "Unsupported" = "Unsupported";
15 | "App List" = "App List";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Error";
20 | "Warning" = "Warning";
21 | "Applying" = "Applying";
22 | "Cancel" = "Cancel";
23 | "Bootstrapping" = "Bootstrapping";
24 | "Uninstalling" = "Uninstalling";
25 | "bootstrap uninstalled" = "bootstrap uninstalled";
26 |
27 | "Enable Tweak for App" = "Enable Tweak for App";
28 | "name or identifier" = "Search by name or identifier";
29 |
30 | "Server Not Running" = "Server isn't running";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now.";
33 |
34 | "Restart Server" = "Restart Server";
35 | "bootstrap server restart successful" = "bootstrap server restart successful";
36 |
37 | "Rebuilding" = "Rebuilding";
38 | "Don't exit Bootstrap app until show the lock screen" = "Don't exit the app until you land on the lock screen";
39 |
40 | "bootstrap installed" = "bootstrap installed";
41 | "bootstrap not installed" = "bootstrap not installed";
42 | "system bootstrapped" = "system bootstrapped";
43 | "system not bootstrapped" = "system not bootstrapped";
44 | "bootstrap server check successful" = "bootstrap server check successful";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "It seems that you have Filza installed, which may be detected as jailbroken. You can enable a Tweak for it to hide its presence.";
47 |
48 | "Status: Rebuilding Apps" = "Status: Rebuilding Apps";
49 | "Status: Reinstalling Sileo" = "Status: Reinstalling Sileo";
50 | "Status: Reinstalling Zebra" = "Status: Reinstalling Zebra";
51 | "Sileo and Zebra reinstalled!" = "Sileo and Zebra reinstalled!";
52 | "Status: Rebuilding Icon Cache" = "Status: Rebuilding Icon Cache";
53 |
54 | "openssh package is not installed" = "openssh package is not installed";
55 |
56 | "Reboot Device" = "Reboot Device";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "The current bootstrapped version is inconsistent with the Bootstrap app version. Please reboot your device to update it.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Your TrollStore version is too old, Bootstrap only supports TrollStore 2.0 and higher. Please update it and then reinstall the Bootstrap app.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine has been installed on this device, installing this bootstrap may break it!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap.";
66 |
67 | "openssh launch successful" = "openssh launch successful";
68 | "respring now..." = "respring now...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling.";
71 |
72 | "ios-version: %@" = "ios-version: %@";
73 | "device-model: %s" = "device-model: %s";
74 | "app-version: %@" = "app-version: %@";
75 | "boot-session: %@" = "boot-session: %@";
76 | "UI made with love by haxi0. ♡" = "UI made with love by haxi0. ♡";
77 |
--------------------------------------------------------------------------------
/Bootstrap/envbuf.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | int envbuf_len(const char *envp[])
5 | {
6 | if (envp == NULL) return 1;
7 |
8 | int k = 0;
9 | const char *env = envp[k++];
10 | while (env != NULL) {
11 | env = envp[k++];
12 | }
13 | return k;
14 | }
15 |
16 | char **envbuf_mutcopy(const char *envp[])
17 | {
18 | if (envp == NULL) return NULL; //opa said don't comment this
19 |
20 | int len = envbuf_len(envp);
21 | char **envcopy = malloc(len * sizeof(char *));
22 |
23 | for (int i = 0; i < len-1; i++) {
24 | envcopy[i] = strdup(envp[i]);
25 | }
26 | envcopy[len-1] = NULL;
27 |
28 | return envcopy;
29 | }
30 |
31 | void envbuf_free(char *envp[])
32 | {
33 | if (envp == NULL) return;
34 |
35 | int len = envbuf_len((const char**)envp);
36 | for (int i = 0; i < len-1; i++) {
37 | free(envp[i]);
38 | }
39 | free(envp);
40 | }
41 |
42 | int envbuf_find(const char *envp[], const char *name)
43 | {
44 | if (envp) {
45 | unsigned long nameLen = strlen(name);
46 | int k = 0;
47 | const char *env = envp[k++];
48 | while (env != NULL) {
49 | unsigned long envLen = strlen(env);
50 | if (envLen > nameLen) {
51 | if (!strncmp(env, name, nameLen)) {
52 | if (env[nameLen] == '=') {
53 | return k-1;
54 | }
55 | }
56 | }
57 | env = envp[k++];
58 | }
59 | }
60 | return -1;
61 | }
62 |
63 | const char *envbuf_getenv(const char *envp[], const char *name)
64 | {
65 | if (envp) {
66 | unsigned long nameLen = strlen(name);
67 | int envIndex = envbuf_find(envp, name);
68 | if (envIndex >= 0) {
69 | return &envp[envIndex][nameLen+1];
70 | }
71 | }
72 | return NULL;
73 | }
74 |
75 | void envbuf_setenv(char **envpp[], const char *name, const char *value, int override)
76 | {
77 | if (envpp) {
78 | char **envp = *envpp;
79 | if (!envp) {
80 | // treat NULL as [NULL]
81 | envp = malloc(sizeof(const char *));
82 | envp[0] = NULL;
83 | }
84 |
85 | char *envToSet = malloc(strlen(name)+strlen(value)+2);
86 | strcpy(envToSet, name);
87 | strcat(envToSet, "=");
88 | strcat(envToSet, value);
89 |
90 | int existingEnvIndex = envbuf_find((const char **)envp, name);
91 | if (existingEnvIndex >= 0) {
92 | if(!override) {
93 | free(envToSet);
94 | return;
95 | }
96 | // if already exists: deallocate old variable, then replace pointer
97 | free(envp[existingEnvIndex]);
98 | envp[existingEnvIndex] = envToSet;
99 | }
100 | else {
101 | // if doesn't exist yet: increase env buffer size, place at end
102 | int prevLen = envbuf_len((const char **)envp);
103 | *envpp = realloc(envp, (prevLen+1)*sizeof(const char *));
104 | envp = *envpp;
105 | envp[prevLen-1] = envToSet;
106 | envp[prevLen] = NULL;
107 | }
108 | }
109 | }
110 |
111 | void envbuf_unsetenv(char **envpp[], const char *name)
112 | {
113 | if (envpp) {
114 | char **envp = *envpp;
115 | if (!envp) return;
116 |
117 | int existingEnvIndex = envbuf_find((const char **)envp, name);
118 | if (existingEnvIndex >= 0) {
119 | free(envp[existingEnvIndex]);
120 | int prevLen = envbuf_len((const char **)envp);
121 | for (int i = existingEnvIndex; i < (prevLen-1); i++) {
122 | envp[i] = envp[i+1];
123 | }
124 | *envpp = realloc(envp, (prevLen-1)*sizeof(const char *));
125 | }
126 | }
127 | }
128 |
--------------------------------------------------------------------------------
/Bootstrap/envbuf.h:
--------------------------------------------------------------------------------
1 | int envbuf_len(const char *envp[]);
2 | char **envbuf_mutcopy(const char *envp[]);
3 | void envbuf_free(char *envp[]);
4 | int envbuf_find(const char *envp[], const char *name);
5 | const char *envbuf_getenv(const char *envp[], const char *name);
6 | void envbuf_setenv(char **envpp[], const char *name, const char *value, int overwrite);
7 | void envbuf_unsetenv(char **envpp[], const char *name);
--------------------------------------------------------------------------------
/Bootstrap/es.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Ajustes";
2 | "Tweak Enable" = "Activar Tweak";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Reconstruir Apps";
6 | "Rebuild Icon Cache" = "Reconstruir Icon Cache";
7 | "Reinstall Sileo & Zebra" = "Reinstalar Sileo & Zebra";
8 | "Uninstall" = "Desinstalar";
9 | "Credits" = "Creditos";
10 | "New Version Available" = "Nueva Version Disponible";
11 | "Bootstrapped" = "Bootstrapped";
12 | "Update" = "Actualizacion";
13 | "Install" = "Instalar";
14 | "Unsupported" = "No Soportado";
15 | "App List" = "Lista De Apps";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Error";
20 | "Warning" = "Advertencia";
21 | "Applying" = "Aplicando";
22 | "Cancel" = "Cancelar";
23 | "Bootstrapping" = "Bootstrapping";
24 | "Uninstalling" = "Desinstalando";
25 | "bootstrap uninstalled" = "bootstrap desinstalado";
26 |
27 | "Enable Tweak for App" = "Activar Tweak Para App";
28 | "name or identifier" = "nombre o identifier";
29 |
30 | "Server Not Running" = "El Servidor No Esta Funcionando";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "Por razones desconocidas el servidor bootstrap no esta funcionando, La unica solucion es reiniciarlo ahora.";
33 |
34 | "Restart Server" = "Reiniciar Servidor";
35 | "bootstrap server restart successful" = "el servidor bootstrap fue reiniciado exitosamente";
36 |
37 | "Rebuilding" = "Reconstruyendo";
38 | "Don't exit Bootstrap app until show the lock screen" = "No salgas de la app Bootstrap hasta que sea vea la pantalla de bloqueo";
39 |
40 | "bootstrap installed" = "bootstrap instalado";
41 | "bootstrap not installed" = "bootstrap no esta instalado";
42 | "system bootstrapped" = "Sistema con bootstrap";
43 | "system not bootstrapped" = "El sistema no tiene bootstrap";
44 | "bootstrap server check successful" = "El servidor bootstrap fue revisado exitosamente";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Parece que tienes la app de Filza instalada, La cual puede ser detectada como Jailbroken. Puedes activar el tweak para ocultarla.";
47 |
48 | "Status: Rebuilding Apps" = "Estado: Reconstruyendo Apps";
49 | "Status: Reinstalling Sileo" = "Estado: Reinstalando Sileo";
50 | "Status: Reinstalling Zebra" = "Estado: Reinstalando Zebra";
51 | "Sileo and Zebra reinstalled!" = "Sileo Y Zebra Reinstalados!";
52 | "Status: Rebuilding Icon Cache" = "Estado: Reconstruyendo Icon Cache";
53 |
54 | "openssh package is not installed" = "El paquete openssh no esta instalado";
55 |
56 | "Reboot Device" = "Reiniciar Dispositivo";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "La version bootstrap instalada actualmente es inconsistente con la app bootstrap, Necesitas reiniciar el dispositivo para actualizarla.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Tu version de Trollstore es muy antigua, Bootstrap solo soporta Trollstore>=2.0, Tienes que actualizar Trollstore y luego reinstalar la app Bootstrap.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Tu dispositivo no parece tener el modo desarrollador activado. \n\nPorfavor activa el modo desarrollador y reinicia tu dispositivo.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine fue instalado en tu dispositivo, instalando este bootstrap podria romperlo!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Has instalado una version beta antigua, porfavor desactiva todos los app tweaks y reinicia tu dispositivo para desinstalarlo y poder instalar la nueva version de bootstrap.";
66 |
67 | "openssh launch successful" = "openssh activacion exitosa";
68 | "respring now..." = "respring ahora...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Estas seguro que quieres desinstalar bootstrap?\n\nPorfavor asegurate que desactivaste todos los app tweaks antes de desinstalar.";
71 |
--------------------------------------------------------------------------------
/Bootstrap/fr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Paramètres";
2 | "Tweak Enable" = "Activer Tweak";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Reconstruire les Applications";
6 | "Rebuild Icon Cache" = "Reconstruire le cache des icônes";
7 | "Reinstall Sileo & Zebra" = "Réinstaller Sileo & Zebra";
8 | "Uninstall" = "Désintaller";
9 | "Credits" = "Crédits";
10 | "New Version Available" = "Nouvelle Version Disponible";
11 | "Bootstrapped" = "Bootstrappé";
12 | "Update" = "Mettre à jour";
13 | "Install" = "Installer";
14 |
15 | "Unsupported" = "Non supporté";
16 | "App List" = "Liste des applications";
17 |
18 |
19 | "OK" = "OK";
20 | "Error" = "Erreur";
21 | "Warning" = "Attention";
22 | "Applying" = "Application";
23 | "Cancel" = "Annuler";
24 | "Bootstrapping" = "Démarrage";
25 | "Uninstalling" = "Désinstallation";
26 | "bootstrap uninstalled" = "bootstrap désinstallé";
27 |
28 | "Enable Tweak for App" = "Activer les tweaks pour une app";
29 | "name or identifier" = "nom ou identifieur";
30 |
31 | "Server Not Running" = "Serveur non démarré";
32 |
33 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "pour des raisons inconnues, le serveur de boostrap n'est pas en cours d'exécution, la seule chose que vous pouvez faire est de le redémarrer maintenant.";
34 |
35 | "Restart Server" = "Redémarrer le serveur";
36 | "bootstrap server restart successful" = "Le serveur du boostrap a bien redémarré";
37 |
38 | "Rebuilding" = "Reconstruire";
39 | "Don't exit Bootstrap app until show the lock screen" = "Ne quittez pas l'application Bootstrap tant que l'écran de verrouillage n'est pas affiché";
40 |
41 | "bootstrap installed" = "bootstrap installé";
42 | "bootstrap not installed" = "bootstrap non installé";
43 | "system bootstrapped" = "système bootstrappé";
44 | "system not bootstrapped" = "système non bootstrappé";
45 | "bootstrap server check successful" = "vérification du serveur bootstrap réussi";
46 |
47 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Il semble que vous ayez l'application Filza installée, ce qui peut rendre votre appareil détecté comme étant jailbreak. Vous pouvez activer les tweaks sur l'app pour le cacher.";
48 |
49 | "Status: Rebuilding Apps" = "Statut: Reconstruction des Apps";
50 | "Status: Reinstalling Sileo" = "Statut: Réinstallation de Sileo";
51 | "Status: Reinstalling Zebra" = "Statut: Réinstallation de Zebra";
52 | "Sileo and Zebra reinstalled!" = "Sileo et Zebra réinstallés !";
53 | "Status: Rebuilding Icon Cache" = "Statut: Reconstruction du cache des icônes";
54 |
55 | "openssh package is not installed" = "Le paquet openssh n'est pas installé";
56 |
57 | "Reboot Device" = "Redémarrer l'appareil";
58 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "La version actuelle du bootstrap est incohérente avec la version de l'application Bootstrap, vous devez redémarrer l'appareil pour la mettre à jour.";
59 |
60 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Votre version de TrollStore est trop ancienne, Bootstrap ne supporte que TrollStore >= 2.0, vous devez mettre à jour TrollStore puis réinstaller l'application Bootstrap.";
61 |
62 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Votre appareil ne semble pas avoir le mode développeur activé.\n\nVeuillez activer le mode développeur et redémarrer votre appareil.";
63 |
64 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine a été installé sur cet appareil, installer ce bootstrap maintenant risque de le casser !";
65 |
66 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Vous avez installé une ancienne version bêta, veuillez désactiver tous les tweaks d'application et redémarrer l'appareil pour le désinstaller afin de pouvoir installer la nouvelle version du bootstrap.";
67 |
68 | "openssh launch successful" = "openssh démarré correctement";
69 | "respring now..." = "respring maintenant...";
70 |
71 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Êtes-vous sûr de vouloir désinstaller bootstrap ?\n\nAssurez-vous d'avoir désactivé les tweaks pour toutes les applications avant de le désinstaller.";
72 |
--------------------------------------------------------------------------------
/Bootstrap/id.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Pengaturan";
2 | "Tweak Enable" = "Aktifkan Tweak";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Rebuild Aplikasi";
6 | "Rebuild Icon Cache" = "Rebuild Icon Cache";
7 | "Reinstall Sileo & Zebra" = "Pasang Ulang Sileo & Zebra";
8 | "Uninstall" = "Hapus";
9 | "Credits" = "Kredit";
10 | "New Version Available" = "Versi Baru Tersedia";
11 | "Bootstrapped" = "Bootstrapped";
12 | "Update" = "Perbarui";
13 | "Install" = "Pasang";
14 | "Unsupported" = "Tidak Didukung";
15 | "App List" = "Daftar Aplikasi";
16 |
17 | "OK" = "OK";
18 | "Error" = "Kesalahan";
19 | "Warning" = "Peringatan";
20 | "Applying" = "Menerapkan";
21 | "Cancel" = "Batal";
22 | "Bootstrapping" = "Bootstrapping";
23 | "Uninstalling" = "Menghapus";
24 | "bootstrap uninstalled" = "bootstrap dihapus";
25 |
26 | "Enable Tweak for App" = "Aktifkan Tweak untuk Aplikasi";
27 | "name or identifier" = "nama atau pengenal";
28 |
29 | "Server Not Running" = "Server Tidak Berjalan";
30 |
31 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "dengan alasan yang tidak diketahui server bootstrap tidak berjalan, satu-satunya yang dapat kita lakukan adalah me-mulai ulang sekarang.";
32 |
33 | "Restart Server" = "Mulai Ulang Server";
34 | "bootstrap server restart successful" = "mulai ulang server bootstrap berhasil";
35 |
36 | "Rebuilding" = "Membangun Kembali";
37 | "Don't exit Bootstrap app until show the lock screen" = "Jangan keluar dari aplikasi Bootstrap sampai muncul layar kunci";
38 |
39 | "bootstrap installed" = "bootstrap terpasang";
40 | "bootstrap not installed" = "bootstrap tidak terpasang";
41 | "system bootstrapped" = "sistem terbootstrap";
42 | "system not bootstrapped" = "sistem tidak terbootstrap";
43 | "bootstrap server check successful" = "cek server bootstrap berhasil";
44 |
45 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Sepertinya Anda telah menginstal aplikasi Filza, yang mungkin terdeteksi sebagai perangkat jailbroken. Anda dapat mengaktifkan Tweak untuk menyembunyikannya.";
46 |
47 | "Status: Rebuilding Apps" = "Status: Membangun Ulang Aplikasi";
48 | "Status: Reinstalling Sileo" = "Status: Pasang Ulang Sileo";
49 | "Status: Reinstalling Zebra" = "Status: Pasang Ulang Zebra";
50 | "Sileo and Zebra reinstalled!" = "Sileo dan Zebra dipasang ulang!";
51 | "Status: Rebuilding Icon Cache" = "Status: Membangun Ulang Icon Cache";
52 |
53 | "openssh package is not installed" = "paket openssh tidak terpasang";
54 |
55 | "Reboot Device" = "Reboot Perangkat";
56 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "Versi bootstrap saat ini tidak konsisten dengan versi aplikasi Bootstrap, dan Anda perlu me-reboot perangkat untuk memperbarui.";
57 |
58 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Versi trollstore Anda terlalu usang, Bootstrap hanya mendukung trollstore>=2.0, Anda harus memperbarui trollstore Anda kemudian menginstal ulang aplikasi Bootstrap.";
59 |
60 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Perangkat Anda sepertinya tidak memiliki mode pengembang yang diaktifkan.\n\nAktifkan mode pengembang dan reboot perangkat Anda.";
61 |
62 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine telah terinstal di perangkat ini, sekarang menginstal bootstrap ini mungkin merusaknya!";
63 |
64 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Anda telah menginstal versi beta lama, harap nonaktifkan semua tweak aplikasi dan reboot perangkat untuk menghapusnya sehingga Anda dapat menginstal bootstrap versi baru.";
65 |
66 | "openssh launch successful" = "peluncuran openssh berhasil";
67 | "respring now..." = "respring sekarang...";
68 |
69 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Apakah Anda yakin ingin menghapus bootstrap?\n\nPastikan Anda telah menonaktifkan tweak untuk semua aplikasi sebelum menghapusnya.";
70 |
--------------------------------------------------------------------------------
/Bootstrap/it.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Impostazioni";
2 | "Tweak Enable" = "Abilita Tweak";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Ricostruisci le App";
6 | "Rebuild Icon Cache" = "Ricostruisci la Cache delle Icone";
7 | "Reinstall Sileo & Zebra" = "Reinstalla Sileo e Zebra";
8 | "Uninstall" = "Disinstalla";
9 | "Credits" = "Riconoscimenti";
10 | "New Version Available" = "Nuova Versione Disponibile";
11 | "Bootstrapped" = "Bootstrap Abilitato";
12 | "Update" = "Aggiorna";
13 | "Install" = "Installa";
14 | "Unsupported" = "Non Supportato";
15 | "App List" = "Lista delle App";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Errore";
20 | "Warning" = "Attenzione";
21 | "Applying" = "Applicazione in corso";
22 | "Cancel" = "Annulla";
23 | "Bootstrapping" = "Eseguendo il Bootstrap";
24 | "Uninstalling" = "Disinstallazione in corso";
25 | "bootstrap uninstalled" = "bootstrap disinstallato";
26 |
27 | "Enable Tweak for App" = "Abilita Tweak per le App";
28 | "name or identifier" = "name or ID";
29 |
30 | "Server Not Running" = "Server Non in Esecuzione";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "per ragioni sconosciute il server di bootstrap non è in esecuzione, l’unica cosa che possiamo fare è riavviarlo adesso.";
33 |
34 | "Restart Server" = "Riavvia il Server";
35 | "bootstrap server restart successful" = "il server di bootstrap è stato riavviato con successo";
36 |
37 | "Rebuilding" = "Ricostruzione in corso";
38 | "Don't exit Bootstrap app until show the lock screen" = "Non uscire dall’app di Bootstrap fino a quando non compare la schermata di blocco";
39 |
40 | "bootstrap installed" = "bootstrap installato";
41 | "bootstrap not installed" = "bootstrap non installato";
42 | "system bootstrapped" = "il sistema è bootstrappato";
43 | "system not bootstrapped" = "il sistema non è bootstrappato";
44 | "bootstrap server check successful" = "controllo del server di bootstrap riuscito";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = " Sembra che tu abbia l’app di Filza installata, che potrebbe risultare in un rilevamento del Jailbreak. Puoi abilitare un Tweak per nasconderla.";
47 |
48 | "Status: Rebuilding Apps" = "Status: Ricostruzione delle App in corso";
49 | "Status: Reinstalling Sileo" = "Status: Reinstallazione di Sileo in corso";
50 | "Status: Reinstalling Zebra" = "Status: Reinstallazione di Zebra in corso";
51 | "Sileo and Zebra reinstalled!" = "Sileo e Zebra sono stati reinstallati!";
52 | "Status: Rebuilding Icon Cache" = "Status: Ricostruzione della Cache delle Icone in corso";
53 |
54 | "openssh package is not installed" = "il pacchetto di openssh non è installato";
55 |
56 | "Reboot Device" = "Riavvia Dispositivo";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "La versione di bootstrap installata nel sistema è inconsistente con la versione dell’app di Bootstrap, e devi riavviare il dispositivo per aggiornarla.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "La versione di trollstore installata è troppo vecchia, Bootstrap supporta solo trollstore>=2.0, devi aggiornare trollstore e poi reinstallare l’app di Bootstrap.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Il dispositivo non sembra avere la modalità sviluppatore abilitata.\n\nPerfavore abilita la modalità sviluppatore e riavvia il dispositivo .";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "dopamine roothide è stato installato su questo dispositivo, installare adesso questo bootstrap potrebbe corrompere l’installazione!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "È installata una versione beta vecchia, perfavore disabilita i tweak per tutte le app e riavvia il dispositivo per disinstallare la versione vecchia e installare il bootstrap della nuova versione.";
66 |
67 | "openssh launch successful" = "avvio di openssh riuscito";
68 | "respring now..." = "respring in corso...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Sei sicuro di voler disinstallare il bootstrap?\n\nPerfavore assicurati di aver disabilitato i tweak per tutte le app prima di procedere.";
71 |
72 |
--------------------------------------------------------------------------------
/Bootstrap/ja.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "設定";
2 | "Tweak Enable" = "Tweakを有効にする";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "アプリの再構築";
6 | "Rebuild Icon Cache" = "アイコンキャッシュの再構築";
7 | "Reinstall Sileo & Zebra" = "Sileo と Zebra を再インストールする";
8 | "Uninstall" = "アンインストール";
9 | "Credits" = "クレジット";
10 | "New Version Available" = "新しいバージョンが利用可能です";
11 | "Bootstrapped" = "Bootstrapped";
12 | "Update" = "アップデート";
13 | "Install" = "インストール";
14 | "Unsupported" = "サポートされていません";
15 | "App List" = "アプリ一覧";
16 |
17 |
18 | "OK" = "はい";
19 | "Error" = "エラー";
20 | "Warning" = "警告";
21 | "Applying" = "適用中";
22 | "Cancel" = "キャンセル";
23 | "Bootstrapping" = "Bootstrapping";
24 | "Uninstalling" = "アンインストール中";
25 | "bootstrap uninstalled" = "bootstrapはアンインストールされました";
26 |
27 | "Enable Tweak for App" = "アプリのtweakを有効にする";
28 | "name or identifier" = "名前またはidentifier";
29 |
30 | "Server Not Running" = "サーバーが動作していません";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "bootstrapサーバーの実行に失敗しました。再起動後にもう一度お試しください。";
33 |
34 | "Restart Server" = "サーバーを再起動";
35 | "bootstrap server restart successful" = "bootstrapサーバーの再起動に成功しました";
36 |
37 | "Rebuilding" = "再構築中";
38 | "Don't exit Bootstrap app until show the lock screen" = "ロック画面が表示されるまで、Bootstrapアプリを終了しないでください。";
39 |
40 | "bootstrap installed" = "bootstrapがインストールされました";
41 | "bootstrap not installed" = "bootstrapはインストールされていません";
42 | "system bootstrapped" = "システムはbootstrapされました";
43 | "system not bootstrapped" = "システムはbootstrapされていません";
44 | "bootstrap server check successful" = "bootstrapサーバーのチェックに成功しました";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Filzaがインストールされているため、脱獄として検知される可能性があります。Tweakを有効にすると、隠すことができます。";
47 |
48 | "Status: Rebuilding Apps" = "ステータス: アプリを再構築中";
49 | "Status: Reinstalling Sileo" = "ステータス: Sileoを再インストール中";
50 | "Status: Reinstalling Zebra" = "ステータス: Zebraを再インストール中";
51 | "Sileo and Zebra reinstalled!" = "SileoとZebraが再インストールされました!";
52 | "Status: Rebuilding Icon Cache" = "ステータス: アイコンキャッシュを再構築中";
53 |
54 | "openssh package is not installed" = "opensshパッケージがインストールされていません";
55 |
56 | "Reboot Device" = "デバイスを再起動";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "現在インストール済みのbootstrapのバージョンは、このアプリのbootstrapのバージョンと一致しないため、更新するにはデバイスを再起動する必要があります。";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "trollstoreのバージョンが古すぎます。Bootstrapはtrollstore>=2.0のみをサポートしています。trollstoreを更新してから、Bootstrapアプリを再インストールする必要があります。";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "お使いのデバイスでは開発者モードが有効になっていないようです。\n\n開発者モードを有効にしてデバイスを再起動してください。";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "競合する可能性のあるdopamineのroothideがこのデバイスに既にインストールされています。このbootstrapをインストールするとデバイスが壊れる可能性があります。";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "古いベータバージョンがインストールされています。新しいバージョンのブートストラップをインストールできるように、すべてのアプリのtweakを無効にし、デバイスを再起動してアンインストールしてください。";
66 |
67 | "openssh launch successful" = "opensshの起動に成功しました";
68 | "respring now..." = "デバイスはまもなくRespringされます...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "bootstrapをアンインストールしてもよろしいですか?\n\nアンインストールする前に、すべてのアプリのtweakが無効になっていることを確認してください。";
71 |
72 |
--------------------------------------------------------------------------------
/Bootstrap/jv-ID.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Setelan";
2 | "Tweak Enable" = "Tweak Aktif";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Mulihake Aplikasi";
6 | "Rebuild Icon Cache" = "Mulihake Icon Cache";
7 | "Reinstall Sileo & Zebra" = "Pasang Ulang Sileo & Zebra";
8 | "Uninstall" = "Busek";
9 | "Credits" = "Kridit";
10 | "New Version Available" = "Enek Versi Anyar";
11 | "Bootstrapped" = "Bootstrapped";
12 | "Update" = "Perbarui";
13 | "Install" = "Pasang";
14 | "Unsupported" = "Ora Didukung";
15 | "App List" = "Daftar Aplikasi";
16 |
17 | "OK" = "OK";
18 | "Error" = "Kesalahan";
19 | "Warning" = "Peringatan";
20 | "Applying" = "Ngelakoni";
21 | "Cancel" = "Batal";
22 | "Bootstrapping" = "Bootstrapping";
23 | "Uninstalling" = "Ngebusek";
24 | "bootstrap uninstalled" = "ngebusek bootstrap";
25 |
26 | "Enable Tweak for App" = "Aktifake Tweak kanggo Aplikasi";
27 | "name or identifier" = "jeneng utawa pengenal";
28 |
29 | "Server Not Running" = "Server Ora Mlaku";
30 |
31 | "For unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "Kanggo alasan sing ora dikenal, server bootstrap ora mlaku, sing iso awake dewe ya ngrestart saiki.";
32 |
33 | "Restart Server" = "Restart Server";
34 | "bootstrap server restart successful" = "restarting server bootstrap sukses";
35 |
36 | "Rebuilding" = "Mulihake";
37 | "Don't exit Bootstrap app until show the lock screen" = "Ojo metu saka aplikasi Bootstrap sampek muncul lock screen";
38 |
39 | "bootstrap installed" = "bootstrap wis dipasang";
40 | "bootstrap not installed" = "bootstrap durung dipasang";
41 | "system bootstrapped" = "sistem wis dibootstrapped";
42 | "system not bootstrapped" = "sistem durung dibootstrapped";
43 | "bootstrap server check successful" = "ngecek server bootstrap sukses";
44 |
45 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Koyok e sampeyan ngepasang aplikasi Filza, sing mungkin iso ngedeteksi lak perangkatmu nang kondisi Jailbreak. Sampeyan iso ngaktifane Tweak kanggo ndelikne.";
46 |
47 | "Status: Rebuilding Apps" = "Status: Mulihake Aplikasi";
48 | "Status: Reinstalling Sileo" = "Status: Pasang Ulang Sileo";
49 | "Status: Reinstalling Zebra" = "Status: Pasang Ulang Zebra";
50 | "Sileo and Zebra reinstalled!" = "Sileo karo Zebra dipasang ulang!";
51 | "Status: Rebuilding Icon Cache" = "Status: Mulihake Icon Cache";
52 |
53 | "openssh package is not installed" = "paket openssh ora dipasang";
54 |
55 | "Reboot Device" = "Reboot Perangkat";
56 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "Versi bootstrapped saiki ora konsisten karo versi aplikasi Bootstrap, lan sampeyan perlu reboot perangkat kanggo nganyari iki.";
57 |
58 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Versi trollstore sampeyan terlalu lawas, Bootstrap mung ngedukung trollstore>=2.0, sampeyan kudu nge update versi trolstore mari ngono ngepasang ulang Bootstrap app maneh.";
59 |
60 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Mode pengembang neng perangkat e sampeyan mungkin durung aktif.\n\nAktifake mode pengembang lan reboot perangkat e sampeyan.";
61 |
62 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine wis dipasang neng perangkat iki, masang bootstrap saiki iso ngerusak!";
63 |
64 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Sampeyan wis nginstal versi beta lawas, mangga nonaktifne kabeh tweak aplikasi lan reboot perangkat kanggo nginstal e supaya sampeyan bisa nginstal bootstrap versi anyar.";
65 |
66 | "openssh launch successful" = "peluncuran openssh sukses";
67 | "respring now..." = "respring saiki...";
68 |
69 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Sampeyan yakin pengen uninstall bootstrap?\n\nMangga pastekno sampeyan wis nonaktifne tweak kanggo kabeh aplikasi sakdurunge nguninstall.";
70 |
71 |
--------------------------------------------------------------------------------
/Bootstrap/ko.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "설정";
2 | "Tweak Enable" = "트윅 활성화";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "SpringBoard 재시작";
5 | "Rebuild Apps" = "앱 재구축";
6 | "Rebuild Icon Cache" = "아이콘 캐시 재구축";
7 | "Reinstall Sileo & Zebra" = "Sileo & Zebra 재설치";
8 | "Uninstall" = "제거";
9 | "Credits" = "크레딧";
10 | "New Version Available" = "새 버전을 사용할 수 있습니다";
11 | "Bootstrapped" = "부트스트랩됨";
12 | "Update" = "업데이트";
13 | "Install" = "설치";
14 | "Unsupported" = "미지원";
15 | "App List" = "앱 리스트";
16 |
17 |
18 | "OK" = "확인";
19 | "Error" = "에러";
20 | "Warning" = "주의";
21 | "Applying" = "적용중";
22 | "Cancel" = "취소";
23 | "Bootstrapping" = "부트스트랩중";
24 | "Uninstalling" = "제거중";
25 | "bootstrap uninstalled" = "부트스트랩 제거됨";
26 |
27 | "Enable Tweak for App" = "앱 트윅 활성화";
28 | "name or identifier" = "이름 또는 식별자";
29 |
30 | "Server Not Running" = "서버가 활성화되지 않았습니다";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "부트스트랩 서버가 실행되고 있지 않습니다. 우리가 할 수 있는 것은 재시작 하는 것입니다..";
33 |
34 | "Restart Server" = "서버 재시작";
35 | "bootstrap server restart successful" = "부트스트랩 서버 재시작 성공";
36 |
37 | "Rebuilding" = "재구축 중";
38 | "Don't exit Bootstrap app until show the lock screen" = "잠금 화면이 표시될 때까지 부트스트랩 앱을 종료하지 마세요.";
39 |
40 | "bootstrap installed" = "부트스트랩 설치됨";
41 | "bootstrap not installed" = "부트스트랩 설치 안됨";
42 | "system bootstrapped" = "부트스트랩됨";
43 | "system not bootstrapped" = "부트스트랩 되지 않음";
44 | "bootstrap server check successful" = "부트스트랩 서버 확인 됨";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Filza 앱이 설치된 것 같습니다. 이는 탈옥 감지로 이어질 수 있고 숨기기 위해 Tweak을 활성화할 수 있습니다.";
47 |
48 | "Status: Rebuilding Apps" = "상태: 앱 재구축 중";
49 | "Status: Reinstalling Sileo" = "상태 : Sileo 재설치 중";
50 | "Status: Reinstalling Zebra" = "상태 : Zebra 재설치 중";
51 | "Sileo and Zebra reinstalled!" = "Sileo와 Zebra 재설치됨!";
52 | "Status: Rebuilding Icon Cache" = "상태 : 아이콘 캐시 재구축 중";
53 |
54 | "openssh package is not installed" = "openssh 패키지가 설치되지 않았습니다";
55 |
56 | "Reboot Device" = "장치 재부팅";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "현재 부트스트랩 버전은 부트스트랩 앱 버전과 일치하지 않으며, 업데이트하려면 장치를 재부팅해야 합니다.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "TrollStore 버전이 너무 오래되었고, 부트스트랩은 TrollStore 2.0 이상만 지원하며, TrollStore를 업데이트한 다음 부트스트랩 앱을 다시 설치해야 합니다.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "장치에 개발자 모드가 활성화되어 있지 않은 것 같습니다.\n\n개발자 모드를 활성화하고 장치를 재부팅하십시오.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "Roothide Dopamine이 이 장치에 설치되어있습니다. 부트스트랩을 설치하면 망가질 수 있습니다!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "이전 베타 버전을 설치되었습니다. 모든 앱 트윅을 비활성화하고 장치를 재부팅하여 제거하여 새 버전 부트스트랩을 설치할 수 있습니다.";
66 |
67 | "openssh launch successful" = "OpenSSH 작동 성공";
68 | "respring now..." = "SpringBoard 재시작 중...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "부트스트랩을 제거하시겠습니까? \n\n제거하기 전에 모든 앱 트윅을 비활성화했는지 확인하세요.";
71 |
72 |
--------------------------------------------------------------------------------
/Bootstrap/main.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import "AppDelegate.h"
3 | #include "NSUserDefaults+appDefaults.h"
4 | #include "common.h"
5 |
6 | int main(int argc, char * argv[]) {
7 |
8 | if(argc >= 2)
9 | {
10 | @try {
11 | SYSLOG("Bootstrap cmd %s", argv[1]);
12 | ASSERT(getuid() == 0);
13 |
14 | if(strcmp(argv[1], "bootstrap")==0) {
15 | int bootstrap();
16 | exit(bootstrap());
17 | } else if(strcmp(argv[1], "unbootstrap")==0) {
18 | int unbootstrap();
19 | exit(unbootstrap());
20 | } else if(strcmp(argv[1], "enableapp")==0) {
21 | int enableForApp(NSString* bundlePath);
22 | exit(enableForApp(@(argv[2])));
23 | } else if(strcmp(argv[1], "disableapp")==0) {
24 | int disableForApp(NSString* bundlePath);
25 | exit(disableForApp(@(argv[2])));
26 | } else if(strcmp(argv[1], "rebuildiconcache")==0) {
27 | int rebuildIconCache();
28 | exit(rebuildIconCache());
29 | } else if(strcmp(argv[1], "reboot")==0) {
30 | sync();
31 | sleep(1);
32 | reboot(0);
33 | sleep(5);
34 | exit(-1);
35 | } else if(strcmp(argv[1], "testprefs")==0) {
36 | SYSLOG("locale=%@", [NSUserDefaults.appDefaults valueForKey:@"locale"]);
37 | [NSUserDefaults.appDefaults setValue:@"CA" forKey:@"locale"];
38 | [NSUserDefaults.appDefaults synchronize];
39 | SYSLOG("locale=%@", [NSUserDefaults.appDefaults valueForKey:@"locale"]);
40 | exit(0);
41 | }
42 |
43 | SYSLOG("unknown cmd: %s", argv[1]);
44 | ABORT();
45 | }
46 | @catch (NSException *exception)
47 | {
48 | STRAPLOG("***exception: %@", exception);
49 | exit(-1);
50 | }
51 | }
52 |
53 | NSString * appDelegateClassName;
54 | @autoreleasepool {
55 | // Setup code that might create autoreleased objects goes here.
56 | appDelegateClassName = NSStringFromClass([AppDelegate class]);
57 | }
58 | return UIApplicationMain(argc, argv, nil, appDelegateClassName);
59 | }
60 |
--------------------------------------------------------------------------------
/Bootstrap/nl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Instellingen";
2 | "Tweak Enable" = "Tweak Aanzetten";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Apps Herbouwen";
6 | "Rebuild Icon Cache" = "Icon Cache Herbouwen";
7 | "Reinstall Sileo & Zebra" = "Sileo & Zebra Herinstalleren";
8 | "Uninstall" = "Deïnstalleren";
9 | "Credits" = "Credits";
10 | "New Version Available" = "Nieuwe Versie Beschikbaar";
11 | "Bootstrapped" = "Gebootstrapt";
12 | "Update" = "Update";
13 | "Install" = "Installeren";
14 | "Unsupported" = "Niet Ondersteund";
15 | "App List" = "App-lijst";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Fout";
20 | "Warning" = "Waarschuwing";
21 | "Applying" = "Toepassen";
22 | "Cancel" = "Annuleren";
23 | "Bootstrapping" = "Bootstrappen";
24 | "Uninstalling" = "Deïnstalleren";
25 | "bootstrap uninstalled" = "bootstrap gedeïnstalleerd";
26 |
27 | "Enable Tweak for App" = "Tweak inschakelen voor App";
28 | "name or identifier" = "naam of identifier";
29 |
30 | "Server Not Running" = "Server Niet Actief";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "om onbekende is de bootstrap-server niet actief; het enige wat we kunnen doen, is het nu herstarten.";
33 |
34 | "Restart Server" = "Server Herstarten";
35 | "bootstrap server restart successful" = "bootstrap server herstarten succesvol";
36 |
37 | "Rebuilding" = "Herbouwen";
38 | "Don't exit Bootstrap app until show the lock screen" = "Verlaat de Bootstrap-app niet totdat het vergrendelingsscherm wordt weergegeven";
39 |
40 | "bootstrap installed" = "bootstrap geïnstalleerd";
41 | "bootstrap not installed" = "bootstrap niet geïnstalleerd";
42 | "system bootstrapped" = "systeem gebootstrapt";
43 | "system not bootstrapped" = "systeem niet gebootstrapt";
44 | "bootstrap server check successful" = "bootstrap server controle succesvol";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Het lijkt erop dat je de Filza-app hebt geïnstalleerd, deze wordt mogelijk gedetecteerd als jailbreak. Je kunt Tweaks ervoor inschakelen om het te verbergen.";
47 |
48 | "Status: Rebuilding Apps" = "Status: Apps Herbouwen";
49 | "Status: Reinstalling Sileo" = "Status: Sileo Herinstalleren";
50 | "Status: Reinstalling Zebra" = "Status: Zebra Herinstalleren";
51 | "Sileo and Zebra reinstalled!" = "Sileo en Zebra opnieuw geïnstalleerd!";
52 | "Status: Rebuilding Icon Cache" = "Status: Icon Cache Herbouwen";
53 |
54 | "openssh package is not installed" = "openssh-pakket is niet geïnstalleerd";
55 |
56 | "Reboot Device" = "Apparaat Herstarten";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "De huidige gebootstrappede versie is niet in overeenstemming met de Bootstrap-app-versie, je moet het apparaat herstarten om het bij te werken.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Je trollstore-versie is te oud, Bootstrap ondersteunt alleen trollstore>=2.0, je moet je trollstore bijwerken en vervolgens de Bootstrap-app opnieuw installeren.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Je apparaat lijkt geen ontwikkelaarsmodus ingeschakeld te hebben.\n\nSchakel ontwikkelaarsmodus in en herstart je apparaat.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine is geïnstalleerd op dit apparaat, het installeren van deze bootstrap kan het mogelijk breken!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Je hebt een oude bètaversie geïnstalleerd, schakel alsjeblieft alle app-tweaks uit en herstart het apparaat om het te deïnstalleren, zodat je de nieuwe bootstrap versie kunt installeren.";
66 |
67 | "openssh launch successful" = "openssh-lancering succesvol";
68 | "respring now..." = "respring nu...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Weet je zeker dat je bootstrap wilt deïnstalleren?\n\nZorg ervoor dat je tweak injectie hebt uitgeschakeld voor alle apps voordat je deïnstalleert.";
71 |
72 |
--------------------------------------------------------------------------------
/Bootstrap/pl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Ustawienia";
2 | "Tweak Enable" = "Włącz Tweak'i";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Odbuduj aplikacje";
6 | "Rebuild Icon Cache" = "Odbuduj Icon Cache";
7 | "Reinstall Sileo & Zebra" = "Reinstaluj Sileo & Zebra";
8 | "Uninstall" = "Odinstaluj";
9 | "Credits" = "Podziękowania";
10 | "New Version Available" = "Nowa wersja dostępna";
11 | "Bootstrapped" = "Bootstrapped";
12 | "Update" = "Aktualizuj";
13 | "Install" = "Instaluj";
14 | "Unsupported" = "Niewspierane";
15 | "App List" = "Lista aplikacji";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Błąd";
20 | "Warning" = "Ostrzeżenie";
21 | "Applying" = "Aplikowanie";
22 | "Cancel" = "Anuluj";
23 | "Bootstrapping" = "Bootstrapping";
24 | "Uninstalling" = "Odinstalowywyanie";
25 | "bootstrap uninstalled" = "Odinstalowano bootstrap";
26 |
27 | "Enable Tweak for App" = "Włącz Tweak dla aplikacji";
28 | "name or identifier" = "Szukaj po nazwie lub identyfikatorze";
29 |
30 | "Server Not Running" = "Serwer nie działa";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "Z nieznanych przyczyn serwer bootstrap nie działa, jedyną rzeczą, którą można zrobić, jest jego ponowne uruchomienie.";
33 |
34 | "Restart Server" = "Zrestatuj serwer";
35 | "bootstrap server restart successful" = "Restart serwera bootstrap się powiódł";
36 |
37 | "Rebuilding" = "Odbudowywanie";
38 | "Don't exit Bootstrap app until show the lock screen" = "Nie wychodź z aplikacji, dopóki urządzenie samoistnie nie wróci do ekranu blokady.";
39 |
40 | "bootstrap installed" = "bootstrap zainstalowany";
41 | "bootstrap not installed" = "bootstrap nie zainstalowany";
42 | "system bootstrapped" = "system jest zbootstrappowany";
43 | "system not bootstrapped" = "system nie jest zbootstrappowany";
44 | "bootstrap server check successful" = "Sprawdzenie serwera bootstrap powiodło się";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Wygląda na to, że masz zainstalowane Filza, co może spowodować omylne wykrycie Jailbreak'u. Możesz użyć Tweak'u, aby ją ukryć.";
47 |
48 | "Status: Rebuilding Apps" = "Status: Odbudowywanie aplikacji";
49 | "Status: Reinstalling Sileo" = "Status: Reinstalowanie Sileo";
50 | "Status: Reinstalling Zebra" = "Status: Reinstalowanie Zebra";
51 | "Sileo and Zebra reinstalled!" = "Sileo i Zebra zostały zainstalowane ponownie!";
52 | "Status: Rebuilding Icon Cache" = "Status: Odbudowywanie Icon Cache";
53 |
54 | "openssh package is not installed" = "Pakiet openssh nie jest zainstalowany";
55 |
56 | "Reboot Device" = "Uruchom ponownie urządzenie";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "Twoja wersja Bootstrapped jest niezgodna z wersją aplikacji i aby ją zaktualizować, musisz ponownie uruchomić urządzenie.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Twoja wersja TrollStore jest za stara, Boostrap wspiera tylko ≥ 2.0, musisz zaktualizować TrollStore i ponownie zainstalować aplikację Bootstrap.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Wygląda na to, że to urządzenie nie ma włączonego trybu dewelopera.\n\nWłącz go i uruchom ponownie urządzenie.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "Roothide dopamine został zainstalowany na tym urządzeniu, teraz zainstalowanie tego bootstrap'a może go zepsuć!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Zainstalowałeś starą wersję beta, wyłącz wszystkie Tweak'i aplikacji i uruchom ponownie urządzenie, aby ją odinstalować i zainstalować nową wersję bootstrap.";
66 |
67 | "openssh launch successful" = "Uruchomienie OpenSSH powiodło się";
68 | "respring now..." = "Respring...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Czy na pewno chcesz odinstalować bootstrap?\n\nPrzed odinstalowaniem upewnij się, że Tweak'i dla wszystkich aplikacji zostały wyłączone.";
71 |
72 |
--------------------------------------------------------------------------------
/Bootstrap/pt-BR.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Configurações";
2 | "Tweak Enable" = "Habilitar Tweaks";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Reconstruir Aplicativos";
6 | "Rebuild Icon Cache" = "Reconstruir Cachê de Ícones";
7 | "Reinstall Sileo & Zebra" = "Reinstalar Sileo & Zebra";
8 | "Uninstall" = "Desinstalar";
9 | "Credits" = "Créditos";
10 | "New Version Available" = "Nova Versão Disponível";
11 | "Bootstrapped" = "Bootstrapped";
12 | "Update" = "Atualizar";
13 | "Install" = "Instalar";
14 | "Unsupported" = "Não suportado";
15 | "App List" = "Lista de Aplicativos";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Erro";
20 | "Warning" = "Aviso";
21 | "Applying" = "Aplicando";
22 | "Cancel" = "Cancelar";
23 | "Bootstrapping" = "Instalando Bootstrap";
24 | "Uninstalling" = "Desinstalando";
25 | "bootstrap uninstalled" = "bootstrap desinstalado";
26 |
27 | "Enable Tweak for App" = "Habilitar Tweak para os aplicativos";
28 | "name or identifier" = "nome ou identificador";
29 |
30 | "Server Not Running" = "O servidor não está rodando";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "por razões desconhecidas o servidor do bootstrap não está rodando, a única coisa que podemos fazer agora é reiniciá-lo.";
33 |
34 | "Restart Server" = "Reiniciar servidor";
35 | "bootstrap server restart successful" = "servidor do bootstrap reiniciado com sucesso";
36 |
37 | "Rebuilding" = "Reconstruindo";
38 | "Don't exit Bootstrap app until show the lock screen" = "Não saia do aplicativo do Bootstrap até que mostre a tela de bloqueio";
39 |
40 | "bootstrap installed" = "bootstrap instalado";
41 | "bootstrap not installed" = "bootstrap não instalado";
42 | "system bootstrapped" = "sistema com bootstrap";
43 | "system not bootstrapped" = "sistema sem bootstrap";
44 | "bootstrap server check successful" = "servidor do bootstrap verificado com sucesso";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Parece que você tem o aplicativo Filza instalado, que pode ser detectado como jailbroken. Você pode ativar um Tweak para ocultá-lo.";
47 |
48 | "Status: Rebuilding Apps" = "Status: Reconstruindo Aplicativos";
49 | "Status: Reinstalling Sileo" = "Status: Reinstalando Sileo";
50 | "Status: Reinstalling Zebra" = "Status: Reinstalando Zebra";
51 | "Sileo and Zebra reinstalled!" = "Sileo e Zebra reinstalados!";
52 | "Status: Rebuilding Icon Cache" = "Status: Reconstruindo Cachê de Ícones";
53 |
54 | "openssh package is not installed" = "pacote openssh não está instalado";
55 |
56 | "Reboot Device" = "Reboot Device";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "A versão do bootstrap atual instalada é inconsistente com a versão do aplicativo Bootstrap, e você precisa reinicializar o dispositivo para atualizá-lo.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Sua versão do trollstore é muito antiga, o Bootstrap só suporta trollstore>=2.0, você precisa atualizar sua trollstore e reinstalar o aplicativo Bootstrap.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Parece que seu dispositivo não está com o modo de desenvolvedor ativado.\n\nPor favor ative o modo de desenvolvedor e reinicie seu dispositivo.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine foi instalado neste dispositivo, instalar este bootstrap agora pode quebrá-lo!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Você instalou uma versão beta antiga, por favor desative todos os tweaks dos aplicativos e reinicie o dispositivo para desinstalá-lo para que você possa instalar a nova versão do bootstrap.";
66 |
67 | "openssh launch successful" = "openssh iniciado com sucesso";
68 | "respring now..." = "respring agora...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Tem certeza de que deseja desinstalar o bootstrap?\n\nPor favor certifique-se de ter desativado os tweaks de todos os aplicativos antes de desinstalar.";
71 |
72 |
--------------------------------------------------------------------------------
/Bootstrap/ru.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Настройки";
2 | "Tweak Enable" = "Включение твиков";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Респринг";
5 | "Rebuild Apps" = "Перестроить приложения";
6 | "Rebuild Icon Cache" = "Перестроить кэш иконок";
7 | "Reinstall Sileo & Zebra" = "Переустановка Sileo & Zebra";
8 | "Uninstall" = "Удалить";
9 | "Credits" = "Титры";
10 | "New Version Available" = "Доступна новая версия";
11 | "Bootstrapped" = "Установлено";
12 | "Update" = "Обновить";
13 | "Install" = "Установить";
14 | "Unsupported" = "Не поддерживается";
15 | "App List" = "Список приложений";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Ошибка";
20 | "Warning" = "Внимание";
21 | "Applying" = " Применение";
22 | "Cancel" = "Отмена";
23 | "Bootstrapping" = "Установка";
24 | "Uninstalling" = "Удаление";
25 | "bootstrap uninstalled" = "bootstrap удален";
26 |
27 | "Enable Tweak for App" = "Включение твиков для приложения";
28 | "name or identifier" = "имя или идентификатор";
29 |
30 | "Server Not Running" = "Сервер не запущен";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "по неизвестным причинам сервер bootstrap не запущен, единственное, что мы можем сделать, это перезагрузить его";
33 |
34 | "Restart Server" = "Перезапустить сервер";
35 | "bootstrap server restart successful" = "сервер bootstrap успешно перезагружен";
36 |
37 | "Rebuilding" = "Перестроение";
38 | "Don't exit Bootstrap app until show the lock screen" = "Не выходите из приложения Bootstrap пока не увидите экран блокировки";
39 |
40 | "bootstrap installed" = "bootstrap установлен";
41 | "bootstrap not installed" = "bootstrap не установлен";
42 | "system bootstrapped" = "система уже имеет bootstrap";
43 | "system not bootstrapped" = "система не имеет установленного bootstrap";
44 | "bootstrap server check successful" = "проверка сервера bootstrap прошла успешно";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "По всей видимости у вас установлена Filza, что может привести к определению как jailbroken. Вы можете включить твик, чтобы спрятать ее.";
47 |
48 | "Status: Rebuilding Apps" = "Статус: Перестроение приложений";
49 | "Status: Reinstalling Sileo" = "Статус: Переустановка Sileo";
50 | "Status: Reinstalling Zebra" = "Статус: Переустановка Zebra";
51 | "Sileo and Zebra reinstalled!" = "Sileo и Zebra успешно переустановлены!";
52 | "Status: Rebuilding Icon Cache" = "Статус: Перестроение кэша иконок";
53 |
54 | "openssh package is not installed" = "пакет openssh не установлен";
55 |
56 | "Reboot Device" = "Перезагрузить устройство";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "Текущая bootstrapped версия несовместима с текущей версией приложения Bootstrap, вам понадобится перезагрузить устройство, чтобы обновить его.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Ваша версия TrollStore устарела, Bootstrap поддерживает только TrollStore>=2.0, вам нужно обновить TrollStore, а затем переустановить приложение Bootstrap";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Видимо, на вашем устройстве не включен режим разработчика.\n\nПожалуйста, включите режим разработчика и перезагрузите устройство.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine установлен на вашем устройстве, установка bootstrap может сломать это!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "У вас установлена старая бета-версия, пожалуйста, отключите все твики приложений и перезагрузите устройство, чтобы установить новую версию bootstrap.";
66 |
67 | "openssh launch successful" = "запуск openssh прошел успешно";
68 | "respring now..." = "респринг...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Вы уверены, что хотите удалить bootstrap?\n\nПожалуйста, убедитесь, что вы отключили твики для всех приложений перед удалением.";
71 |
--------------------------------------------------------------------------------
/Bootstrap/seh.h:
--------------------------------------------------------------------------------
1 | #ifndef seh_h
2 | #define seh_h
3 |
4 | #undef abort
5 | #define abort #error#
6 |
7 | #define ABORT() do {\
8 | @throw [NSException\
9 | exceptionWithName:@"ABORT"\
10 | reason:[NSString stringWithFormat:@"%s (%d)", __FILE_NAME__, __LINE__]\
11 | userInfo:nil];\
12 | } while(0)
13 |
14 | #undef assert
15 | #define assert #error#
16 |
17 | #define ASSERT(...) do{if(!(__VA_ARGS__)) {\
18 | @throw [NSException\
19 | exceptionWithName:@"ASSERT"\
20 | reason:[NSString stringWithFormat:@"%s (%d): %s", __FILE_NAME__, __LINE__, #__VA_ARGS__]\
21 | userInfo:nil];\
22 | }} while(0)
23 |
24 | #endif /* seh_h */
25 |
--------------------------------------------------------------------------------
/Bootstrap/sources.h:
--------------------------------------------------------------------------------
1 | #ifndef sources_h
2 | #define sources_h
3 |
4 | #define DEFAULT_SOURCES "\
5 | Types: deb\n\
6 | URIs: https://yourepo.com/\n\
7 | Suites: ./\n\
8 | Components:\n\
9 | \n\
10 | Types: deb\n\
11 | URIs: https://repo.chariz.com/\n\
12 | Suites: ./\n\
13 | Components:\n\
14 | \n\
15 | Types: deb\n\
16 | URIs: https://havoc.app/\n\
17 | Suites: ./\n\
18 | Components:\n\
19 | \n\
20 | Types: deb\n\
21 | URIs: http://apt.thebigboss.org/repofiles/cydia/\n\
22 | Suites: stable\n\
23 | Components: main\n\
24 | \n\
25 | Types: deb\n\
26 | URIs: https://roothide.github.io/\n\
27 | Suites: ./\n\
28 | Components:\n\
29 | \n\
30 | Types: deb\n\
31 | URIs: https://roothide.github.io/procursus\n\
32 | Suites: iphoneos-arm64e/%d\n\
33 | Components: main\n\
34 | "
35 |
36 | #define ALT_SOURCES "\
37 | Types: deb\n\
38 | URIs: https://iosjb.top/\n\
39 | Suites: ./\n\
40 | Components:\n\
41 | \n\
42 | Types: deb\n\
43 | URIs: https://iosjb.top/procursus\n\
44 | Suites: iphoneos-arm64e/%d\n\
45 | Components: main\n\
46 | "
47 |
48 | #define ZEBRA_SOURCES "\
49 | # Zebra Sources List\n\
50 | deb https://getzbra.com/repo/ ./\n\
51 | deb https://repo.chariz.com/ ./\n\
52 | deb https://yourepo.com/ ./\n\
53 | deb https://havoc.app/ ./\n\
54 | deb https://roothide.github.io/ ./\n\
55 | deb https://roothide.github.io/procursus iphoneos-arm64e/%d main\n\
56 | \n\
57 | "
58 |
59 | #endif /* sources_h */
60 |
--------------------------------------------------------------------------------
/Bootstrap/sv.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Inställningar";
2 | "Tweak Enable" = "Tweak Aktivera";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Bygg om Appar";
6 | "Rebuild Icon Cache" = "Bygg om Ikon-Cache";
7 | "Reinstall Sileo & Zebra" = "Återinstallera Sileo & Zebra";
8 | "Uninstall" = "Avinstallera";
9 | "Credits" = " Medverkande";
10 | "New Version Available" = "Ny Version Tillgänglig";
11 | "Bootstrapped" = "Bootstrappad";
12 | "Update" = "Uppdatera";
13 | "Install" = "Installera";
14 | "Unsupported" = "Stöds ej";
15 | "App List" = "Applista";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Fel";
20 | "Warning" = "Varning";
21 | "Applying" = "Tillämpar";
22 | "Cancel" = "Avbryt";
23 | "Bootstrapping" = "Bootstrappar";
24 | "Uninstalling" = "Avinstallerar";
25 | "bootstrap uninstalled" = "bootstrap avinstallerad";
26 |
27 | "Enable Tweak for App" = "Aktivera Tweak för App";
28 | "name or identifier" = "namn eller identifierare";
29 |
30 | "Server Not Running" = "Server Ej i Drift";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "av okända anledningar är bootstrap-servern ej i drift, det enda som vi kan göra är att omstarta den.";
33 |
34 | "Restart Server" = "Omstarta Server";
35 | "bootstrap server restart successful" = "bootstrap-server lyckades omstarta";
36 |
37 | "Rebuilding" = "Bygger om";
38 | "Don't exit Bootstrap app until show the lock screen" = "Lämna inte Bootstrap-appen tills låsskärmen visas";
39 |
40 | "bootstrap installed" = "bootstrap installerad";
41 | "bootstrap not installed" = "bootstrap ej installerad";
42 | "system bootstrapped" = "system bootstrappat";
43 | "system not bootstrapped" = "system ej bootstrappat";
44 | "bootstrap server check successful" = "bootstrap-serverkontroll lyckad";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Det verkar som att du har installerat Filza-appen, vilket kan upptäckas som jailbreakad. Du kan aktivera Tweak för att dölja det.";
47 |
48 | "Status: Rebuilding Apps" = " Status: Bygger om Appar";
49 | "Status: Reinstalling Sileo" = " Status: Återinstallerar Sileo";
50 | "Status: Reinstalling Zebra" = " Status: Återinstallerar Zebra";
51 | "Sileo and Zebra reinstalled!" = "Sileo och Zebra återinstallerade!";
52 | "Status: Rebuilding Icon Cache" = "Status: Bygger om Ikon-Cache";
53 |
54 | "openssh package is not installed" = "openssh-paket ej installerad";
55 |
56 | "Reboot Device" = "Omstarta Enhet";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "Den nuvarande bootstrappade versionen skiljer från Bootstrap-appversionen och du behöver omstarta enheten för att uppdatera den.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Din trollstore-version är för gammal, Bootstrap stödjer endast trollstore>=2.0, du behöver uppdatera din trollstore och sedan återinstallera Bootstrap-appen.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Din enhet verkar inte ha utvecklarläge aktiverat.\n\nSnälla aktivera utvecklarläge och omstarta din enhet.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine har installerats på denna enhet, installation av denna bootstrap kan bryta det!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Du har installerat en gammal betaversion, snälla avaktivera alla app-tweaks och omstarta enheten för att avinstallera det så att du kan installera den nya bootstrap-versionen.";
66 |
67 | "openssh launch successful" = "start av openssh lyckad";
68 | "respring now..." = "respring nu…";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Är du säker på att avinstallera bootstrap? \n\nSnälla se till att du har avaktiverat tweak för alla appar innan avinstallation.";
71 |
--------------------------------------------------------------------------------
/Bootstrap/syslog.h:
--------------------------------------------------------------------------------
1 |
2 | //oh shit why NSLog also output to stderr
3 | //luckly syslog also accept NSObject
4 |
5 | #include
6 |
7 | #define NSLog #error#
8 |
9 | #define SYSLOG(fmt, ...) do { fmt[0];\
10 | openlog("bootstrap",LOG_PID,LOG_AUTH);\
11 | syslog(LOG_DEBUG, fmt, ## __VA_ARGS__);\
12 | closelog();\
13 | } while(0)
14 |
15 | #define STRAPLOG(fmt, ...) do { fmt[0];\
16 | SYSLOG(fmt, ## __VA_ARGS__);\
17 | fprintf(stdout, [NSString stringWithFormat:@fmt, ## __VA_ARGS__].UTF8String);\
18 | fprintf(stdout, "\n");\
19 | fflush(stdout);\
20 | } while(0)
21 |
--------------------------------------------------------------------------------
/Bootstrap/th.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "ตั้งค่า";
2 | "Tweak Enable" = "เปิดการใช้ Tweak";
3 | "OpenSSH" = "เปิดการใช้ OpenSSH";
4 | "Respring" = "รีสปริง";
5 | "Rebuild Apps" = "รีบิ๊วแอปใหม่";
6 | "Rebuild Icon Cache" = "รีบิ๊วแคชไอคอนใหม่";
7 | "Reinstall Sileo & Zebra" = "ติดตั้ง Sileo & Zebra ใหม่";
8 | "Uninstall" = "ถอนการติดตั้ง";
9 | "Credits" = "เครดิต";
10 | "New Version Available" = "มีเวอร์ชั่นใหม่";
11 | "Bootstrapped" = "Bootstrap พร้อมแล้ว";
12 | "Update" = "อัพเดท";
13 | "Install" = "ติดตั้ง";
14 | "Unsupported" = "ไม่รองรับ";
15 | "App List" = "รายการแอป";
16 |
17 |
18 | "OK" = "โอเค";
19 | "Error" = "ผิดพลาด";
20 | "Warning" = "คำเตือน";
21 | "Applying" = "กำลังนำไปใช้";
22 | "Cancel" = "ยกเลิก";
23 | "Bootstrapping" = "กำลังทำ Bootstrap";
24 | "Uninstalling" = "กำลังถอนการติดตั้ง";
25 | "bootstrap uninstalled" = "ถอน Bootstrap แล้ว";
26 |
27 | "Enable Tweak for App" = "เปิดการใช้งาน Tweak บนแอป";
28 | "name or identifier" = "ชื่อ หรือ id ของแอป";
29 |
30 | "Server Not Running" = "เซิร์ฟเวอร์ไม่ได้ทำงานอยู่";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "ไม่ทราบสาเหตุที่เซิร์ฟเวอร์ bootstrap หยุดทำงาน, สิ่งเดียวที่เราทําได้คือรีสตาร์ทมันตอนนี้.";
33 |
34 | "Restart Server" = "รีสตาร์ทเซิร์ฟเวอร์";
35 | "bootstrap server restart successful" = "รีสตาร์ทเซิร์ฟเวอร์ bootstrap สำเร็จ";
36 |
37 | "Rebuilding" = "กำลังรีบิ๊ว";
38 | "Don't exit Bootstrap app until show the lock screen" = "อย่าออกจากแอป Bootstrap จนกว่าจะแสดงหน้าล็อกสกรีน";
39 |
40 | "bootstrap installed" = "ติดตั้ง bootstrap แล้ว";
41 | "bootstrap not installed" = "ยังไม่ได้ติดตั้ง bootstrap !";
42 | "system bootstrapped" = "ระบบรัน bootstrap แล้ว";
43 | "system not bootstrapped" = "ระบบไม่ได้รัน bootstrap";
44 | "bootstrap server check successful" = "เช็คเซิร์ฟเวอร์ bootstrap สำเร็จ";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "ดูเหมือนว่าคุณได้ติดตั้งแอป Filza ไว้, ซึ่งอาจจะโดนการตรวจจับเจลเบรค. คุณสามารถเปิดใช้งาน Tweak เพื่อซ่อนมัน.";
47 |
48 | "Status: Rebuilding Apps" = "สถานะ: กำลังรีบิ๊วแอปใหม่";
49 | "Status: Reinstalling Sileo" = "สถานะ: กำลังติดตั้ง Sileo";
50 | "Status: Reinstalling Zebra" = "สถานะ: กำลังติดตั้ง Zebra";
51 | "Sileo and Zebra reinstalled!" = "Sileo และ Zebra ติดตั้งใหม่แล้ว!";
52 | "Status: Rebuilding Icon Cache" = "สถานะ: กำลังรีบิ๊วแคชไอคอน";
53 |
54 | "openssh package is not installed" = "แพ็คเกจ openssh ยังไม่ได้ถูกติดตั้ง";
55 |
56 | "Reboot Device" = "รีบูตเครื่อง";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "เวอร์ชั่นของ bootstrap ที่ลงอยู่ไม่สอดคล้องกับแอป Bootstrap, คุณจะต้องรีบูตเครื่องเพื่ออัพเดทมัน.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "TrollStore ของคุณเก่าเกินไป, Bootstrap รองรับเฉพาะ trollstore>=2.0, คุณจะต้องอัพเดท TrollStore แล้วค่อยติดตั้ง Bootstrap.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "เครื่องของคุณดูเหมือนจะยังไม้ได้เปิดโหมดนักพัฒนา.\n\nโปรดเปิดโหมดนักพัฒนาและรีบูตเครื่องของคุณ.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine ถูกติดตั้งไว้บนเครื่องนี้, การติดตั้ง bootstrap นี้อาจจะทำมันพัง!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "คุณมีเบต้าเวอร์ชั่นเก่าติดตั้งอยู่, โปรดปิดการใช้งาน tweak ในทุกแอปและรีบูตเครื่องเพื่อถอนการติดตั้ง เพื่อจะสามารถติดตั้ง bootstrap เวอร์ชั่นใหม่.";
66 |
67 | "openssh launch successful" = "openssh ทำงานสำเร็จ";
68 | "respring now..." = "กำลังรีสปริง...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "คุณมั่นใจแล้วใช่ไหมที่จะถอน bootstrap?\n\nโปรดเช็คให้แน่ใจว่าได้ปิดการใช้งาน tweak ในทุกแอปก่อนที่จะถอนมัน.";
71 |
72 | "ios-version: %@" = "เวอร์ชั่น iOS: %@";
73 | "device-model: %s" = "รุ่นโมเดล: %s";
74 | "app-version: %@" = "เวอร์ชั่นของแอป: %@";
75 | "boot-session: %@" = "เซสชั่นการบูต: %@";
76 | "UI made with love by haxi0. ♡" = "UI ที่สร้างด้วยความรักโดย haxi0. ♡";
77 |
--------------------------------------------------------------------------------
/Bootstrap/uk.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Налаштування";
2 | "Tweak Enable" = "Увімкнення твіків";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Респринг";
5 | "Rebuild Apps" = "Перебудувати додатки";
6 | "Rebuild Icon Cache" = "Перебудувати кеш іконок";
7 | "Reinstall Sileo & Zebra" = "Перевстановлення Sileo & Zebra";
8 | "Uninstall" = "Видалити";
9 | "Credits" = "Подяки";
10 | "New Version Available" = "Доступна нова версія";
11 | "Bootstrapped" = "Встановлено";
12 | "Update" = "Оновити";
13 | "Install" = "Встановити";
14 | "Unsupported" = "Не підтримується";
15 | "App List" = "Список додатків";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Помилка";
20 | "Warning" = "Увага";
21 | "Applying" = "Применить";
22 | "Cancel" = "Скасування";
23 | "Bootstrapping" = "Встановлення";
24 | "Uninstalling" = "Видалення";
25 | "bootstrap uninstalled" = "Bootstrap видалено";
26 |
27 | "Eanble Tweak for App" = "Увімкнути Твік для додатка";
28 | "name or identifier" = "Iм'я або ідентифікатор";
29 |
30 | "Server Not Running" = "Сервер не запущено";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "З невідомих причин сервер bootstrap не запущений, єдине, що ми можемо зробити, це перезавантажити його";
33 |
34 | "Restart Server" = "Перезапустити сервер";
35 | "bootstrap server restart successful" = "Сервер bootstrap успішно перезавантажений";
36 |
37 | "Rebuilding" = "Перестроювання";
38 | "Don't exit Bootstrap app until show the lock screen" = "Не виходьте з програми Bootstrap поки не побачите екран блокування";
39 |
40 | "bootstrap installed" = "Bootstrap встановлений";
41 | "bootstrap not installed" = "Bootstrap не встановлено";
42 | "system bootstrapped" = "Система вже має bootstrap";
43 | "system not bootstrapped" = "Система не має встановленого bootstrap";
44 | "bootstrap server check successful" = "Перевірка сервера bootstrap пройшла успішно";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Мабуть у вас встановлена Filza, що може привести до визначення як jailbroken. Ви можете включити твік, щоб заховати її.";
47 |
48 | "Status: Rebuilding Apps" = "Статус: Перебудова додатків";
49 | "Status: Reinstalling Sileo" = "Статус: Перевстановлення Sileo";
50 | "Status: Reinstalling Zebra" = "Статус: Перевстановлення Zebra";
51 | "Sileo and Zebra reinstalled!" = "Sileo і Zebra успішно перевстановлені!";
52 | "Status: Rebuilding Icon Cache" = "Статус: Перебудова кеша іконок";
53 |
54 | "openssh package is not installed" = "Пакет openssh не встановлено";
55 |
56 | "Reboot Device" = "Перезавантажити пристрій";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "Поточна bootstrapped версія несумісна з поточною версією програми Bootstrap, вам знадобиться перезавантажити пристрій, щоб оновити його.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Ваша версія TrollStore застаріла, Bootstrap підтримує тільки TrollStore > = 2.0, вам потрібно оновити TrollStore, а потім перевстановити додаток Bootstrap";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Мабуть, на вашому пристрої не включений режим розробника.\n\nБудь ласка, увімкніть режим розробника і перезавантажте пристрій.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "roothide dopamine встановлений на вашому пристрої, установка bootstrap може зламати це!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "У вас встановлена стара бета-версія, будь ласка, вимкніть всі твіки додатків і перезавантажте пристрій, щоб встановити нову версію bootstrap.";
66 |
67 | "openssh launch successful" = "Запуск openssh пройшов успішно";
68 | "respring now..." = "Респринг...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Ви впевнені, що хочете видалити bootstrap?\n\nБудь ласка, переконайтеся, що ви відключили твіки для всіх додатків перед видаленням.";
71 |
--------------------------------------------------------------------------------
/Bootstrap/utils.h:
--------------------------------------------------------------------------------
1 | #ifndef utils_h
2 | #define utils_h
3 |
4 | #import
5 |
6 | extern const char** environ;
7 |
8 | uint64_t jbrand();
9 |
10 | uint64_t jbrand_new();
11 |
12 | NSString* find_jbroot(BOOL force);
13 |
14 | NSString* jbroot(NSString *path);
15 |
16 | int is_jbroot_name(const char* name);
17 |
18 | NSString* rootfsPrefix(NSString* path);
19 |
20 | NSString* getBootSession();
21 |
22 | int spawn(const char* path, const char** argv, const char** envp, void(^std_out)(char*,int), void(^std_err)(char*,int));
23 |
24 | int spawnBootstrap(const char** argv, NSString** stdOut, NSString** stdErr);
25 |
26 | int spawnRoot(NSString* path, NSArray* args, NSString** stdOut, NSString** stdErr);
27 |
28 | void machoGetInfo(FILE* candidateFile, bool *isMachoOut, bool *isLibraryOut);
29 |
30 | BOOL isDefaultInstallationPath(NSString* _path);
31 |
32 | void killAllForBundle(const char* bundlePath);
33 | void killAllForExecutable(const char* path);
34 |
35 | @interface _LSApplicationState : NSObject
36 | - (BOOL)isValid;
37 | @end
38 |
39 | @interface LSBundleProxy : NSObject
40 | -(BOOL)isContainerized;
41 | - (NSURL *)bundleURL;
42 | - (NSURL *)containerURL;
43 | - (NSURL *)dataContainerURL;
44 | - (NSString *)bundleExecutable;
45 | - (NSString *)bundleIdentifier;
46 | @end
47 |
48 | @interface LSPlugInKitProxy : LSBundleProxy
49 | +(id)pluginKitProxyForIdentifier:(id)arg1 ;
50 | - (NSString *)bundleIdentifier;
51 | @property (nonatomic,readonly) NSURL *dataContainerURL;
52 | @end
53 |
54 | @interface LSApplicationProxy : LSBundleProxy
55 | + (id)applicationProxyForIdentifier:(id)arg1;
56 | - (id)localizedNameForContext:(id)arg1;
57 | - (_LSApplicationState *)appState;
58 | - (NSString *)vendorName;
59 | - (NSString *)teamID;
60 | - (NSString *)applicationType;
61 | - (NSSet *)claimedURLSchemes;
62 | - (BOOL)isDeletable;
63 | - (NSDictionary*)environmentVariables;
64 | @property (nonatomic,readonly) NSDictionary *groupContainerURLs;
65 | @property (nonatomic,readonly) NSArray *plugInKitPlugins;
66 | @end
67 |
68 | @interface LSApplicationWorkspace : NSObject
69 | + (id)defaultWorkspace;
70 | - (BOOL)openApplicationWithBundleID:(id)arg1;
71 | - (NSArray*)allApplications;
72 | - (NSArray*)allInstalledApplications;
73 | - (BOOL)_LSPrivateRebuildApplicationDatabasesForSystemApps:(BOOL)arg1
74 | internal:(BOOL)arg2
75 | user:(BOOL)arg3;
76 | @end
77 |
78 | #endif /* utils_h */
79 |
--------------------------------------------------------------------------------
/Bootstrap/vi.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "Cài đặt";
2 | "Tweak Enable" = "Kích hoạt tweak";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "Respring";
5 | "Rebuild Apps" = "Xây dựng lại Apps";
6 | "Rebuild Icon Cache" = "Xây dựng lại Icon Cache";
7 | "Reinstall Sileo & Zebra" = "Cài lại Sileo và Zebra";
8 | "Uninstall" = "Gỡ cài đặt";
9 | "Credits" = "Cảm ơn tới";
10 | "New Version Available" = "Có phiên bản mới";
11 | "Bootstrapped" = "Đã có Bootstrap";
12 | "Update" = "Cập nhật";
13 | "Install" = "Cài đặt";
14 | "Unsupported" = "Không được hỗ trợ";
15 | "App List" = "Danh sách ứng dụng";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "Lỗi";
20 | "Warning" = "Cảnh báo";
21 | "Applying" = "Đang áp dụng";
22 | "Cancel" = "Huỷ";
23 | "Bootstrapping" = "Đang cài Bootstrap";
24 | "Uninstalling" = "Đang gỡ cài đặt";
25 | "bootstrap uninstalled" = "bootstrap đã bị gỡ";
26 |
27 | "Enable Tweak for App" = "Bật tweak cho ứng dụng";
28 | "name or identifier" = "tên hoặc định danh";
29 |
30 | "Server Not Running" = "Dịch vụ đang tắt";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "vì lý do không rõ nên dịch vụ của bootstrap đang không hoạt động, việc duy nhất chúng ta có thể làm bây giờ là khởi động lại nó.";
33 |
34 | "Restart Server" = "Khởi động lại dịch vụ";
35 | "bootstrap server restart successful" = "dịch vụ bootstrap được khởi động lại thành công";
36 |
37 | "Rebuilding" = "Đang xây dựng lại";
38 | "Don't exit Bootstrap app until show the lock screen" = "Không thoát Bootstrap cho đến khi hiện màn hình khoá";
39 |
40 | "bootstrap installed" = "bootstrap đã được cài đặt";
41 | "bootstrap not installed" = "bootstrap chưa được cài đặt";
42 | "system bootstrapped" = "hệ thống đã được gắn bootstrap";
43 | "system not bootstrapped" = "hệ thống chưa có bootstrap";
44 | "bootstrap server check successful" = "kiểm tra máy chủ bootstrap thành công";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "Có vẻ như bạn có Filza, việc này có thể làm phát hiện máy đã jailbreak. Bạn có thể bật Tweak cho nó để ẩn.";
47 |
48 | "Status: Rebuilding Apps" = "Trạng thái: Đang xây dựng lại Apps";
49 | "Status: Reinstalling Sileo" = "Trạng thái: Đang cài lại Sileo";
50 | "Status: Reinstalling Zebra" = "Trạng thài: Đang cài lại Zebra";
51 | "Sileo and Zebra reinstalled!" = "Sileo và Zebra đã được cài đặt lại!";
52 | "Status: Rebuilding Icon Cache" = "Trạng thái: Đang xây dựng lại Icon Cache";
53 |
54 | "openssh package is not installed" = "openssh chưa được cài đặt";
55 |
56 | "Reboot Device" = "Khởi động lại thiết bị";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "Dịch vụ bootstrap đang được cài hiện tại khác với phiên bản ứng dụng Bootstrap, hãy khởi động lại máy để cập nhật nó.";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "Phiên bản TrollStore của bạn đã lỗi thời : dưới bản 2.0, bạn phải cập nhật TrollStore và cài đặt lại ứng dụng Bootstrap.";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "Thiết bị của bạn có vẻ như không bật chế độ Nhà phát triển. Hãy bật nó lên và khởi động lại thiết bị.";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "phát hiện RootHide Dopamine đã được cài đặt trên thiết bị này, việc cài đặt bootstrap có thể gây xung đột !";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "Bạn đang sử dụng một bản beta cũ, hãy tắt tiêm tweak cho mọi ứng dụng, sau đó khởi động lại thiết bị để gỡ nó và cài bản bootstrap mới hơn.";
66 |
67 | "openssh launch successful" = "khởi động openssh thành công";
68 | "respring now..." = "đang respring bây giờ...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "Bạn có chắc muốn gỡ bootstrap?\n\nChắc chắn rằng bạn đã tắt tiêm tweak cho tất cả các ứng dụng trước khi gỡ bootstrap.";
71 |
72 |
73 |
--------------------------------------------------------------------------------
/Bootstrap/zh-CN.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "设置";
2 | "Tweak Enable" = "启用插件";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "注销";
5 | "Rebuild Apps" = "重建应用程序";
6 | "Rebuild Icon Cache" = "重建图标缓存";
7 | "Reinstall Sileo & Zebra" = "重新安装 Sileo & Zebra";
8 | "Fix App Notification" = "修复应用通知";
9 | "Uninstall" = "卸载";
10 | "Credits" = "鸣谢";
11 | "New Version Available" = "新版本已推出";
12 | "Bootstrapped" = "已引导";
13 | "Update" = "更新";
14 | "Install" = "安装";
15 | "Unsupported" = "不支持";
16 | "App List" = "应用列表";
17 | "Developer" = "开发人员";
18 | "UI made with love by haxi0. ♡" = "UI 界面由 haxi0 用爱打造。 ♡";
19 |
20 |
21 | "OK" = "好";
22 | "Error" = "错误";
23 | "Warning" = "警告";
24 | "Applying" = "正在应用";
25 | "Cancel" = "取消";
26 | "Bootstrapping" = "正在引导";
27 | "Uninstalling" = "正在卸载";
28 | "Bootstrap Uninstalled" = "Bootstrap 已卸载";
29 |
30 | "Enable Tweak for App" = "为应用启用插件";
31 | "name or identifier" = "请输入应用名称或标识符";
32 |
33 | "Server Not Running" = "服务未运行";
34 |
35 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "由于未知原因,Bootstrap 服务未运行,我们现在唯一能做的就是重新启动它。";
36 |
37 | "Restart Server" = "重启 Bootstrap 服务";
38 | "bootstrap server restart successful" = "Bootstrap 服务重启完成";
39 |
40 | "Rebuilding" = "正在重建";
41 | "Don't exit Bootstrap app until show the lock screen" = "请在出现锁屏界面之前不要退出 Bootstrap";
42 |
43 | "bootstrap installed" = "引导已安装";
44 | "bootstrap not installed" = "引导未安装";
45 | "system bootstrapped" = "系统已引导";
46 | "system not bootstrapped" = "系统未引导";
47 | "bootstrap server check successful" = "Bootstrap 服务检查完成";
48 |
49 |
50 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "看起来你安装了 Fliza,这可能会导致被某些应用检测为越狱,你可以通过启用插件来隐藏它。";
51 |
52 | "Status: Rebuilding Apps" = "状态:正在重建应用程序";
53 | "Status: Reinstalling Sileo" = "状态:正在重装 Sileo";
54 | "Status: Reinstalling Zebra" = "状态:正在重装 Zebra";
55 | "Sileo and Zebra reinstalled!" = "已重新安装 Sileo 和 Zebra";
56 | "Status: Rebuilding Icon Cache" = "状态:正在重建图标缓存";
57 |
58 | "openssh package is not installed" = "OpenSSH 尚未安装";
59 |
60 | "Reboot Device" = "重启设备";
61 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "当前 Bootstrap 环境和 Bootstrap 应用程序不一致,你需要重启设备后更新环境。";
62 |
63 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "你的 TrollStore 版本太低,Bootstrap 需要 TrollStore 2.0 或更高版本,请更新 TrollStore 后再次尝试安装 Bootstrap。";
64 |
65 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "你的设备貌似没有开启开发者模式\n\n请启用开发者模式并重启设备";
66 |
67 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "RootHide Dopamine 已在此设备上安装,现在安装 Bootstrap 可能会破坏已安装的环境!";
68 |
69 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "检测到安装了早期的测试版,请在“应用列表”中关闭所有应用程序注入,重启设备并卸载环境后安装新版本的 Bootstrap。";
70 |
71 | "openssh launch successful" = "OpenSSH 启动完成";
72 | "respring now..." = "正在注销";
73 |
74 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "你确定要卸载 Bootstrap 吗?\n\n请在卸载之前确保已经在“应用列表”中关闭了所有应用的注入。";
75 |
--------------------------------------------------------------------------------
/Bootstrap/zh-TW.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "Settings" = "設定";
2 | "Tweak Enable" = "啟用插件";
3 | "OpenSSH" = "OpenSSH";
4 | "Respring" = "重新啟動主畫面";
5 | "Rebuild Apps" = "重建應用程式";
6 | "Rebuild Icon Cache" = "重建圖示快取";
7 | "Reinstall Sileo & Zebra" = "重新安裝 Sileo、Zebra";
8 | "Uninstall" = "解除安裝";
9 | "Credits" = "鳴謝";
10 | "New Version Available" = "有新版本可供更新";
11 | "Bootstrapped" = "已完成 Bootstrap";
12 | "Update" = "更新";
13 | "Install" = "安裝";
14 | "Unsupported" = "不支援";
15 | "App List" = "應用程式";
16 |
17 |
18 | "OK" = "OK";
19 | "Error" = "錯誤";
20 | "Warning" = "警告";
21 | "Applying" = "套用中";
22 | "Cancel" = "取消";
23 | "Bootstrapping" = "正在 Bootstrap";
24 | "Uninstalling" = "正在解除安裝";
25 | "bootstrap uninstalled" = "已解除安裝 Bootstrap";
26 |
27 | "Enable Tweak for App" = "應用程式插件設定";
28 | "name or identifier" = "搜尋";
29 |
30 | "Server Not Running" = "尚未啟用伺服器";
31 |
32 | "for unknown reasons the bootstrap server is not running, the only thing we can do is to restart it now." = "因未知原因而無法啟動 Bootstrap 伺服器,故此裝置將重新啟動。";
33 |
34 | "Restart Server" = "重新啟動伺服器";
35 | "bootstrap server restart successful" = "已成功重新啟動伺服器";
36 |
37 | "Rebuilding" = "重建中";
38 | "Don't exit Bootstrap app until show the lock screen" = "請勿在螢幕尚未顯示鎖定畫面前退出應用程式";
39 |
40 | "bootstrap installed" = "已安裝 Bootstrap";
41 | "bootstrap not installed" = "未安裝 Bootstrap";
42 | "system bootstrapped" = "已 Bootstrap 系統";
43 | "system not bootstrapped" = "尚未 Bootstrap 系統";
44 | "bootstrap server check successful" = "已完成 Bootstrap 伺服器檢查";
45 |
46 | "It seems that you have the Filza app installed, which may be detected as jailbroken. You can enable Tweak for it to hide it." = "若欲閃避越獄偵測可在 Fliza 內啟用插件";
47 |
48 | "Status: Rebuilding Apps" = "狀態:正在重建應用程式";
49 | "Status: Reinstalling Sileo" = "狀態:正在重新安裝 Sileo";
50 | "Status: Reinstalling Zebra" = "狀態: 正在重新安裝Zebra";
51 | "Sileo and Zebra reinstalled!" = "已重新安裝 Sileo 和 Zebra!";
52 | "Status: Rebuilding Icon Cache" = "狀態: 正在重建圖示快取";
53 |
54 | "openssh package is not installed" = "尚未安裝 OpenSSH";
55 |
56 | "Reboot Device" = "重新啟動設備";
57 | "The current bootstrapped version is inconsistent with the Bootstrap app version, and you need to reboot the device to update it." = "為了安裝 Bootstrap 更新此設備將重新啟動";
58 |
59 | "Your trollstore version is too old, Bootstrap only supports trollstore>=2.0, you have to update your trollstore then reinstall Bootstrap app." = "請更新 TrollStore 至 2.0 以上以繼續使用此 Bootstrap";
60 |
61 | "Your device does not seem to have developer mode enabled.\n\nPlease enable developer mode and reboot your device." = "未啟用開發者模式。\n\n請啟用開發者模式並重新啟動此設備";
62 |
63 | "roothide dopamine has been installed on this device, now install this bootstrap may break it!" = "Dopamine Roothide 與 Bootstrap 衝突,若將兩者同時安裝將破壞 iOS!";
64 |
65 | "You have installed an old beta version, please disable all app tweaks and reboot the device to uninstall it so that you can install the new version bootstrap." = "請停用所有應用程式內之插件並且重新開機。完成之後再解除安裝 Bootstrap。最後,請重新安裝最新版本的 Boostrap 以完成更新。";
66 |
67 | "openssh launch successful" = "已啟動 OpenSSH";
68 | "respring now..." = "正在重新啟動主畫面...";
69 |
70 | "Are you sure to uninstall bootstrap?\n\nPlease make sure you have disabled tweak for all apps before uninstalling." = "是否解除安裝 Bootstrap?\n\n請確認是否已停用所有應用程式內的插件";
71 |
--------------------------------------------------------------------------------
/Bootstrap/zstd_wrapper.m:
--------------------------------------------------------------------------------
1 | //
2 | // zstd_wrapper.m
3 | //
4 | //
5 | // Created by Lars Fröder on 23.04.23.
6 | //
7 |
8 | #import
9 | #import
10 | #include "common.h"
11 |
12 | #define BUFFER_SIZE 8192
13 |
14 | int decompress_tar_zstd(const char* src_file_path, const char* dst_file_path) {
15 | // Open the input file for reading
16 | FILE *input_file = fopen(src_file_path, "rb");
17 | if (input_file == NULL) {
18 | SYSLOG("Failed to open input file %s: %s", src_file_path, strerror(errno));
19 | return 40;
20 | }
21 |
22 | // Open the output file for writing
23 | FILE *output_file = fopen(dst_file_path, "wb");
24 | if (output_file == NULL) {
25 | SYSLOG("Failed to open output file %s: %s", dst_file_path, strerror(errno));
26 | fclose(input_file);
27 | return 41;
28 | }
29 |
30 | // Create a ZSTD decompression context
31 | ZSTD_DCtx *dctx = ZSTD_createDCtx();
32 | if (dctx == NULL) {
33 | SYSLOG("Failed to create ZSTD decompression context");
34 | fclose(input_file);
35 | fclose(output_file);
36 | return 42;
37 | }
38 |
39 | // Create a buffer for reading input data
40 | uint8_t *input_buffer = (uint8_t *) malloc(BUFFER_SIZE);
41 | if (input_buffer == NULL) {
42 | SYSLOG("Failed to allocate input buffer");
43 | ZSTD_freeDCtx(dctx);
44 | fclose(input_file);
45 | fclose(output_file);
46 | return 43;
47 | }
48 |
49 | // Create a buffer for writing output data
50 | uint8_t *output_buffer = (uint8_t *) malloc(BUFFER_SIZE);
51 | if (output_buffer == NULL) {
52 | SYSLOG("Failed to allocate output buffer");
53 | free(input_buffer);
54 | ZSTD_freeDCtx(dctx);
55 | fclose(input_file);
56 | fclose(output_file);
57 | return 44;
58 | }
59 |
60 | // Create a ZSTD decompression stream
61 | ZSTD_inBuffer in = {0};
62 | ZSTD_outBuffer out = {0};
63 | ZSTD_DStream *dstream = ZSTD_createDStream();
64 | if (dstream == NULL) {
65 | SYSLOG("Failed to create ZSTD decompression stream");
66 | free(output_buffer);
67 | free(input_buffer);
68 | ZSTD_freeDCtx(dctx);
69 | fclose(input_file);
70 | fclose(output_file);
71 | return 45;
72 | }
73 |
74 | // Initialize the ZSTD decompression stream
75 | size_t ret = ZSTD_initDStream(dstream);
76 | if (ZSTD_isError(ret)) {
77 | SYSLOG("Failed to initialize ZSTD decompression stream: %s", ZSTD_getErrorName(ret));
78 | ZSTD_freeDStream(dstream);
79 | free(output_buffer);
80 | free(input_buffer);
81 | ZSTD_freeDCtx(dctx);
82 | fclose(input_file);
83 | fclose(output_file);
84 | return 46;
85 | }
86 |
87 | // Read and decompress the input file
88 | size_t total_bytes_read = 0;
89 | size_t total_bytes_written = 0;
90 | size_t bytes_read;
91 | size_t bytes_written;
92 | while (1) {
93 | // Read input data into the input buffer
94 | bytes_read = fread(input_buffer, 1, BUFFER_SIZE, input_file);
95 | if (bytes_read == 0) {
96 | if (feof(input_file)) {
97 | // End of input file reached, break out of loop
98 | break;
99 | } else {
100 | SYSLOG("Failed to read input file: %s", strerror(errno));
101 | ZSTD_freeDStream(dstream);
102 | free(output_buffer);
103 | free(input_buffer);
104 | ZSTD_freeDCtx(dctx);
105 | fclose(input_file);
106 | fclose(output_file);
107 | return 47;
108 | }
109 | }
110 |
111 | in.src = input_buffer;
112 | in.size = bytes_read;
113 | in.pos = 0;
114 |
115 | while (in.pos < in.size) {
116 | // Initialize the output buffer
117 | out.dst = output_buffer;
118 | out.size = BUFFER_SIZE;
119 | out.pos = 0;
120 |
121 | // Decompress the input data
122 | ret = ZSTD_decompressStream(dstream, &out, &in);
123 | if (ZSTD_isError(ret)) {
124 | SYSLOG("Failed to decompress input data: %s", ZSTD_getErrorName(ret));
125 | ZSTD_freeDStream(dstream);
126 | free(output_buffer);
127 | free(input_buffer);
128 | ZSTD_freeDCtx(dctx);
129 | fclose(input_file);
130 | fclose(output_file);
131 | return 48;
132 | }
133 |
134 | // Write the decompressed data to the output file
135 | bytes_written = fwrite(output_buffer, 1, out.pos, output_file);
136 | if (bytes_written != out.pos) {
137 | SYSLOG("Failed to write output file: %s", strerror(errno));
138 | ZSTD_freeDStream(dstream);
139 | free(output_buffer);
140 | free(input_buffer);
141 | ZSTD_freeDCtx(dctx);
142 | fclose(input_file);
143 | fclose(output_file);
144 | return 49;
145 | }
146 |
147 | total_bytes_written += bytes_written;
148 | }
149 |
150 | total_bytes_read += bytes_read;
151 | }
152 |
153 | SYSLOG("Decompressed %lu bytes from %s to %lu bytes in %s", total_bytes_read, src_file_path, total_bytes_written, dst_file_path);
154 |
155 | // Clean up resources
156 | ZSTD_freeDStream(dstream);
157 | free(output_buffer);
158 | free(input_buffer);
159 | ZSTD_freeDCtx(dctx);
160 | fclose(input_file);
161 | fclose(output_file);
162 |
163 | return 0;
164 | }
165 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 RootHide
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | ARCHS = arm64
2 | TARGET = iphone:latest:15.0
3 | DEB_ARCH = iphoneos-arm64e
4 | IPHONEOS_DEPLOYMENT_TARGET = 15.0
5 |
6 | INSTALL_TARGET_PROCESSES = Bootstrap
7 |
8 | THEOS_PACKAGE_SCHEME = roothide
9 |
10 | #disable theos auto sign for all mach-o
11 | TARGET_CODESIGN = echo "don't sign"
12 |
13 | include $(THEOS)/makefiles/common.mk
14 |
15 | XCODE_SCHEME = Bootstrap
16 |
17 | XCODEPROJ_NAME = Bootstrap
18 |
19 | Bootstrap_XCODEFLAGS = \
20 | IPHONEOS_DEPLOYMENT_TARGET="$(IPHONEOS_DEPLOYMENT_TARGET)" \
21 | CODE_SIGN_IDENTITY="" \
22 | AD_HOC_CODE_SIGNING_ALLOWED=YES
23 | Bootstrap_XCODE_SCHEME = $(XCODE_SCHEME)
24 | #Bootstrap_CODESIGN_FLAGS = -Sentitlements.plist
25 | Bootstrap_INSTALL_PATH = /Applications
26 |
27 | include $(THEOS_MAKE_PATH)/xcodeproj.mk
28 |
29 | clean::
30 | rm -rf ./packages/*
31 |
32 | before-package::
33 | rm -rf ./packages
34 | cp -a ./strapfiles ./.theos/_/Applications/Bootstrap.app/
35 | ldid -Sentitlements.plist ./.theos/_/Applications/Bootstrap.app/Bootstrap
36 | mkdir -p ./packages/Payload
37 | cp -R ./.theos/_/Applications/Bootstrap.app ./packages/Payload
38 | cd ./packages && zip -mry ./Bootstrap.tipa ./Payload
39 | rm -rf ./.theos/_/Applications
40 | mkdir ./.theos/_/tmp
41 | cp ./packages/Bootstrap.tipa ./.theos/_/tmp/
42 |
43 | after-install::
44 | install.exec 'uiopen -b com.roothide.Bootstrap'
45 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # roothide Bootstrap
2 |
3 | [](https://github.com/roothide/Bootstrap/stargazers)
4 |
5 | A full featured bootstrap for iOS 15.0-17.0 A8-A17Pro & M1+M2 using roothide.
6 |
7 | ##### *WARNING:* By using this software, you take full responsibility for what you do with it. Any unofficial modifications to your device may cause irreparable damage. Refer to the FAQ linked in the `Usage` section for safe usage of this software.
8 |
9 | roothide Bootstrap is available to download on this repositories [Releases](https://github.com/roothide/Bootstrap/releases).
10 |
11 | ## Building
12 |
13 | If you do not have access to MacOS, refer to the FAQ in the `Usage` section to build with GitHub Actions instead.
14 |
15 | You'll need MacOS to build, as you require Xcode from the App Store. Simply having Xcode Command Line Tools is *insufficient*. Here's how to build the Bootstrap:
16 |
17 | 1. Update/Install Theos with roothide support
18 |
19 | ```
20 | bash -c "$(curl -fsSL https://raw.githubusercontent.com/roothide/theos/master/bin/install-theos)"
21 | ```
22 | *If you encounter errors from a previous Theos installation, remove Theos in its entirety before continuing.*
23 |
24 | 2. Clone the GitHub repository and enter directory
25 |
26 | ```
27 | git clone https://github.com/roothide/Bootstrap/ && cd Bootstrap
28 | ```
29 |
30 | 3. Build `Bootstrap.tipa`
31 |
32 | ```
33 | make package
34 | ```
35 |
36 | 4. Transfer `Bootstrap.tipa` from `./packages/` to your device and install it with TrollStore
37 |
38 | ## Usage
39 |
40 | The roothide Bootstrap application **must** be installed with [TrollStore](https://ios.cfw.guide/installing-trollstore/). Use version `2.0.9` or later for enabling developer mode on-device.
41 |
42 | Tweaks not compiled or converted to roothide will not work out-of-the-box with roothide Bootstrap. Refer to the FAQ below on how to use roothide Patcher.
43 |
44 | By design, roothide does not inject tweaks into any applications by default. To enable tweak injection into an application, press `App List` in the Bootstrap app, and enable the toggle of the application you want to inject into. Injection into `com.apple.springboard` or daemons is not possible with the roothide Bootstrap. Refer to the FAQ below on injection into `com.apple.springboard`.
45 |
46 | **A roothide Bootstrap FAQ** is available [here](https://github.com/dleovl/Bootstrap/blob/faq/README.md).
47 |
48 | **For installing Bootstrap**, refer to the guides at [https://onejailbreak.com/blog/bootstrap-roothide/](https://onejailbreak.com/blog/bootstrap-roothide/)
49 |
50 | ## Develop tweaks
51 |
52 | Both rootful and rootless tweaks aren't out-of-the-box compatible with roothide, so you'll need to develop them specifically to support it. You can refer to the developer documentation [here](https://github.com/roothide/Developer).
53 |
54 | ## Discord server
55 |
56 | You can join the roothide Discord server for support or general discussion [here](https://discord.gg/ZvY2Yjw8GA).
57 |
58 | ## The "Our Table" Icon
59 |
60 | The ProcursusTeam logo was originally made by [@TheAlphaStream](https://github.com/TheAlphaStream), and later edited by [@sourcelocation](https://github.com/sourcelocation).
61 |
62 | ## Credits
63 |
64 | Huge thanks to these people, we couldn't have completed this project without their help!
65 |
66 | - absidue: [https://github.com/absidue](https://github.com/absidue)
67 | - akusio: [https://twitter.com/akusio_rr](https://twitter.com/akusio_rr)
68 | - Alfie: [https://alfiecg.uk](https://alfiecg.uk)
69 | - Amy While: [http://github.com/elihwyma](http://github.com/elihwyma)
70 | - Barron: [https://tweaksdev22.github.io](https://tweaksdev22.github.io)
71 | - BomberFish: [https://twitter.com/bomberfish77](https://twitter.com/bomberfish77)
72 | - bswbw: [https://twitter.com/bswbw](https://twitter.com/bswbw)
73 | - Capt Inc: [http://github.com/captinc](http://github.com/captinc)
74 | - CKatri: [https://procursus.social/@cameron](https://procursus.social/@cameron)
75 | - Clarity: [http://github.com/TheRealClarity](http://github.com/TheRealClarity)
76 | - Cryptic: [http://github.com/Cryptiiiic](http://github.com/Cryptiiiic)
77 | - dxcool223x: [https://twitter.com/dxcool223x](https://twitter.com/dxcool223x)
78 | - Dhinakg: [http://github.com/dhinakg](http://github.com/dhinakg)
79 | - DuyKhanhTran: [https://twitter.com/TranKha50277352](https://twitter.com/TranKha50277352)
80 | - dleovl: [https://github.com/dleovl](https://github.com/dleovl)
81 | - Elias Sfeir: [https://twitter.com/eliassfeir1](https://twitter.com/eliassfeir1)
82 | - Ellie: [https://twitter.com/elliessurviving](https://twitter.com/elliessurviving)
83 | - EquationGroups: [https://twitter.com/equationgroups](https://twitter.com/equationgroups)
84 | - Évelyne: [http://github.com/evelyneee](http://github.com/evelyneee)
85 | - GeoSnOw: [https://twitter.com/fce365](https://twitter.com/fce365)
86 | - G3n3sis: [https://twitter.com/G3nNuk_e](https://twitter.com/G3nNuk_e)
87 | - hayden: [https://procursus.social/@hayden](https://procursus.social/@hayden)
88 | - Huy Nguyen: [https://twitter.com/little_34306](https://twitter.com/little_34306)
89 | - iAdam1n: [https://twitter.com/iAdam1n](https://twitter.com/iAdam1n)
90 | - iarrays: [https://iarrays.com](https://iarrays.com)
91 | - iDownloadBlog: [https://twitter.com/idownloadblog](https://twitter.com/idownloadblog)
92 | - iExmo: [https://twitter.com/iexmojailbreak](https://twitter.com/iexmojailbreak)
93 | - iRaMzi: [https://twitter.com/iramzi7](https://twitter.com/iramzi7)
94 | - Jonathan: [https://twitter.com/jontelang](https://twitter.com/jontelang)
95 | - Kevin: [https://github.com/iodes](https://github.com/iodes)
96 | - kirb: [http://github.com/kirb](http://github.com/kirb)
97 | - laileld: [https://twitter.com/h_h_x_t](https://twitter.com/h_h_x_t)
98 | - Leptos: [https://github.com/leptos-null](https://github.com/leptos-null)
99 | - limneos: [https://twitter.com/limneos](https://twitter.com/limneos)
100 | - Lightmann: [https://github.com/L1ghtmann](https://github.com/L1ghtmann)
101 | - Linus Henze: [http://github.com/LinusHenze](http://github.com/LinusHenze)
102 | - MasterMike: [https://ios.cfw.guide](https://ios.cfw.guide)
103 | - Misty: [https://twitter.com/miscmisty](https://twitter.com/miscmisty)
104 | - Muirey03: [https://twitter.com/Muirey03](https://twitter.com/Muirey03)
105 | - Nathan: [https://github.com/verygenericname](https://github.com/verygenericname)
106 | - Nebula: [https://itsnebula.net](https://itsnebula.net)
107 | - niceios: [https://twitter.com/niceios](https://twitter.com/niceios)
108 | - Nightwind: [https://twitter.com/NightwindDev](https://twitter.com/NightwindDev)
109 | - Nick Chan: [https://nickchan.lol](https://nickchan.lol)
110 | - nzhaonan: [https://twitter.com/nzhaonan](https://twitter.com/nzhaonan)
111 | - Oliver Tzeng: [https://github.com/olivertzeng](https://github.com/olivertzeng)
112 | - omrkujman: [https://twitter.com/omrkujman](https://twitter.com/omrkujman)
113 | - opa334: [http://github.com/opa334](http://github.com/opa334)
114 | - onejailbreak: [https://twitter.com/onejailbreak_](https://twitter.com/onejailbreak_)
115 | - Phuc Do: [https://twitter.com/dobabaophuc](https://twitter.com/dobabaophuc)
116 | - PoomSmart: [https://twitter.com/poomsmart](https://twitter.com/poomsmart)
117 | - ProcursusTeam: [https://procursus.social/@team](https://procursus.social/@team)
118 | - roothide: [http://github.com/roothide](http://github.com/roothide)
119 | - Sam Bingner: [http://github.com/sbingner](http://github.com/sbingner)
120 | - Shadow-: [http://iosjb.top/](http://iosjb.top/)
121 | - Snail: [https://twitter.com/somnusix](https://twitter.com/somnusix)
122 | - SquidGesture: [https://twitter.com/lclrc](https://twitter.com/lclrc)
123 | - sourcelocation: [http://github.com/sourcelocation](http://github.com/sourcelocation)
124 | - SeanIsTethered: [http://github.com/jailbreakmerebooted](https://github.com/jailbreakmerebooted)
125 | - TheosTeam: [https://theos.dev](https://theos.dev)
126 | - tigisoftware: [https://twitter.com/tigisoftware](https://twitter.com/tigisoftware)
127 | - tihmstar: [https://twitter.com/tihmstar](https://twitter.com/tihmstar)
128 | - xina520: [https://twitter.com/xina520](https://twitter.com/xina520)
129 | - xybp888: [https://twitter.com/xybp888](https://twitter.com/xybp888)
130 | - xsf1re: [https://twitter.com/xsf1re](https://twitter.com/xsf1re)
131 | - yandevelop: [https://twitter.com/yandevelop](https://twitter.com/yandevelop)
132 | - YourRepo: [https://twitter.com/yourepo](https://twitter.com/yourepo)
133 | - And ***you***, the community, for giving insightful feedback and support.
134 |
--------------------------------------------------------------------------------
/control:
--------------------------------------------------------------------------------
1 | Package: com.roothide.bootstrap
2 | Name: RootHide Bootstrap
3 | Version: 0.1
4 | Architecture: iphoneos-arm64e
5 | Depends: firmware (>= 15.0)
6 | Description: RootHide Bootstrap for TrollStore
7 | Maintainer: RootHide
8 | Author: RootHide
9 | Section: System
10 |
11 |
--------------------------------------------------------------------------------
/entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | platform-application
6 |
7 | com.apple.private.security.no-sandbox
8 |
9 |
10 |
19 |
20 | proc_info-allow
21 |
22 |
23 | com.apple.private.security.storage.AppBundles
24 |
25 | com.apple.private.security.storage.AppDataContainers
26 |
27 |
28 | com.apple.security.iokit-user-client-class
29 |
30 | AGXDeviceUserClient
31 | IOHDIXControllerUserClient
32 | IOSurfaceRootUserClient
33 |
34 |
35 | com.apple.private.persona-mgmt
36 |
37 |
38 | com.apple.security.exception.shared-preference.read-write
39 |
40 | com.roothide.Bootstrap
41 | com.roothide.Bootstrap.shared
42 |
43 |
44 | com.apple.private.MobileContainerManager.allowed
45 |
46 |
47 | com.apple.springboard.launchapplications
48 |
49 | com.apple.backboardd.launchapplications
50 |
51 |
52 | com.apple.lsapplicationworkspace.rebuildappdatabases
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/libkrw0-dummy.deb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/libkrw0-dummy.deb
--------------------------------------------------------------------------------
/rebuild.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 |
5 | PREV_DIR=$(pwd)
6 | WORK_DIR=$(dirname -- "$0")
7 | cd "$WORK_DIR"
8 |
9 | cd basebin
10 | ./rebuild.sh
11 | cd -
12 |
13 | make clean
14 | make package
15 |
16 | cd "$PREV_DIR"
17 |
--------------------------------------------------------------------------------
/roothideapp.deb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/roothideapp.deb
--------------------------------------------------------------------------------
/sileo.deb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/sileo.deb
--------------------------------------------------------------------------------
/strapfiles/bootstrap-1800.tar.zst:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/strapfiles/bootstrap-1800.tar.zst
--------------------------------------------------------------------------------
/strapfiles/bootstrap-1900.tar.zst:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/strapfiles/bootstrap-1900.tar.zst
--------------------------------------------------------------------------------
/strapfiles/bootstrap-2000.tar.zst:
--------------------------------------------------------------------------------
1 | bootstrap-1900.tar.zst
--------------------------------------------------------------------------------
/suid.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\ansicpg936\cocoartf2639
2 | \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 Menlo-Regular;}
3 | {\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
4 | {\*\expandedcolortbl;;\csgray\c0;}
5 | \paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0
6 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
7 |
8 | \f0\fs22 \cf2 \CocoaLigature0 /usr/bin/chpass\
9 | /usr/bin/su\
10 | /usr/bin/quota\
11 | /usr/bin/sudo\
12 | /usr/bin/login\
13 | /usr/bin/passwd\
14 | /usr/libexec/filza/Filza\
15 | /usr/sbin/shshd\
16 | \
17 | }
--------------------------------------------------------------------------------
/tar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/tar
--------------------------------------------------------------------------------
/zebra.deb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/roothide/Bootstrap/723d7ca3af8d7cac04dc9f7915ae7242713bb5c7/zebra.deb
--------------------------------------------------------------------------------