Browse Source

updated to make KPPless an option through a double tap toggle menu

Kevin Bradley 5 years ago
parent
commit
2f45759e3f

BIN
Meridian/Meridian/bootstrap/meridian-bootstrap.tar


BIN
Meridian/Meridian/bootstrap/meridian-bootstrap/usr/lib/pspawn_hook.dylib


+ 1 - 1
Meridian/Meridian/build_time

@@ -1 +1 @@
-Thu, 05 Jul 2018 20:38:11 -0700
+Sat, 07 Jul 2018 15:37:58 -0700

+ 1 - 1
Meridian/Meridian/jailbreak.h

@@ -13,7 +13,7 @@
 
 BOOL great_success;
 
-int makeShitHappen(id view);
+int makeShitHappen(id view, BOOL kppless);
 int runV0rtex(void);
 int patchContainermanagerd(void);
 int remountRootFs(void);

+ 18 - 13
Meridian/Meridian/jailbreak.m

@@ -35,6 +35,7 @@ NSFileManager *fileMgr;
 offsets_t offsets;
 
 BOOL great_success = FALSE;
+BOOL isKppless = FALSE;
 
 int remount() {
     //[self log:@"remounting"];
@@ -67,9 +68,10 @@ int bypassKPP() {
 }
 
 
-int makeShitHappen(ViewController *view) {
+int makeShitHappen(ViewController *view, BOOL kppless) {
     int ret;
     
+    isKppless = kppless;
     fileMgr = [NSFileManager defaultManager];
 
     // run v0rtex
@@ -89,7 +91,9 @@ int makeShitHappen(ViewController *view) {
     // set up stuff
     init_patchfinder(NULL);
     
-#ifndef DO_KPPLESS
+//#ifndef DO_KPPLESS
+    if (!isKppless) {
+
     ret = init_amfi();
     
     if (ret != 0) {
@@ -113,9 +117,10 @@ int makeShitHappen(ViewController *view) {
         [view writeText:@"failed!"];
         return 1;
     }
+    } else {
     
     
-#else
+//#else
    
     int kppReturn = bypassKPP();
     
@@ -128,9 +133,9 @@ int makeShitHappen(ViewController *view) {
         [view writeText:@"KPP bypass failed!\n"];
         return 1;
     }
+}
     
-    
-#endif
+//#endif
     
   
     
@@ -266,8 +271,8 @@ int makeShitHappen(ViewController *view) {
     // dump offsets to file for later use (/meridian/offsets.plist)
     dumpOffsetsToFile(&offsets, kernel_base, kslide);
    
-#ifndef DO_KPPLESS
-    
+//#ifndef DO_KPPLESS
+  if (!isKppless) {
     // patch amfid
     [view writeText:@"patching amfid..."];
     ret = defecateAmfi();
@@ -279,8 +284,8 @@ int makeShitHappen(ViewController *view) {
         return 1;
     }
     [view writeText:@"done!"];
-
-#endif
+  }
+//#endif
    
     // touch .cydia_no_stash
     touch_file("/.cydia_no_stash");
@@ -385,8 +390,8 @@ int makeShitHappen(ViewController *view) {
     
     // link substitute stuff
     //setUpSubstitute();
-#ifndef DO_KPPLESS
-    
+//#ifndef DO_KPPLESS
+    if (!isKppless) {
     // start jailbreakd
     
     ret = inject_trust("/meridian/inject_criticald");
@@ -416,8 +421,8 @@ int makeShitHappen(ViewController *view) {
         return 1;
     }
     [view writeText:@"done!"];
-    
-#endif
+    }
+//#endif
     // load launchdaemons
     [view writeText:@"loading launchdaemons..."];
     ret = loadLaunchDaemons();

+ 1 - 1
Meridian/Meridian/views/ViewController.m

@@ -146,7 +146,7 @@ bool jailbreak_has_run = false;
     
     // background thread so we can update the UI
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^(void) {
-        int ret = makeShitHappen(self);
+        int ret = makeShitHappen(self, FALSE);
         
         if (ret != 0) {
             NSLog(@"MERIDIAN HAS FAILED TO RUN :(");

BIN
Meridian/meridian.xcodeproj/project.xcworkspace/xcuserdata/kevinbradley.xcuserdatad/UserInterfaceState.xcuserstate


+ 2 - 2
Meridian/meridian.xcodeproj/xcuserdata/kevinbradley.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -12,7 +12,7 @@
 		<key>amfid.xcscheme</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>1</integer>
+			<integer>2</integer>
 		</dict>
 		<key>jailbreakd.xcscheme</key>
 		<dict>
@@ -27,7 +27,7 @@
 		<key>pspawn_hook.xcscheme</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>2</integer>
+			<integer>1</integer>
 		</dict>
 	</dict>
 	<key>SuppressBuildableAutocreation</key>

+ 48 - 2
Meridian/meridianTV/ViewController.m

@@ -42,7 +42,8 @@ typedef NS_ENUM(NSInteger, BSInstallType) {
 @interface ViewController () {
     
     BOOL _respringReady;
-    
+    UITapGestureRecognizer *playPauseOrMenuDoubleTapRecognizer;
+    BOOL kppless;
 }
 
 
@@ -205,9 +206,52 @@ bool jailbreak_has_run = false;
     //DB1E00
     //CACBCA
     
+    playPauseOrMenuDoubleTapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTapMenuOrPlayPause:)];
+    playPauseOrMenuDoubleTapRecognizer.numberOfTapsRequired = 2;
+    playPauseOrMenuDoubleTapRecognizer.allowedPressTypes = @[[NSNumber numberWithInteger:UIPressTypePlayPause], [NSNumber numberWithInteger:UIPressTypeMenu]];
+    [self.view addGestureRecognizer:playPauseOrMenuDoubleTapRecognizer];
     
     
+}
+
+
+-(void)handleDoubleTapMenuOrPlayPause:(UITapGestureRecognizer *)sender {
     
+
+    if (sender.state == UIGestureRecognizerStateEnded) {
+        
+        
+        NSString *kpplessString = @"KPPless: OFF";
+        if (kppless) {
+            
+            kpplessString = @"KPPless: ON";
+            
+        }
+        
+        UIAlertController *alertController = [UIAlertController
+                                              alertControllerWithTitle:@"KPPless?"
+                                              message:@"Turn KPPless on if you are attempting to futurerestore to a newer version"
+                                              preferredStyle:UIAlertControllerStyleAlert];
+        UIAlertAction *kpplessAction = [UIAlertAction
+                                             actionWithTitle:kpplessString
+                                             style:UIAlertActionStyleDefault
+                                             handler:^(UIAlertAction *action)
+                                             {
+                                                 
+                                                 kppless = !kppless;
+                                                 
+                                             }];
+        
+        [alertController addAction:kpplessAction];
+        
+        UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
+        
+        [alertController addAction:cancel];
+        
+        [self presentViewController:alertController animated:YES completion:nil];
+        
+        
+    }
 }
 
 - (void)setGoButtonTitle:(NSString *)title {
@@ -227,6 +271,8 @@ bool jailbreak_has_run = false;
     [super viewDidLoad];
     
     
+    kppless = FALSE;
+    
     thisClass = self;
     
     
@@ -409,7 +455,7 @@ bool jailbreak_has_run = false;
     
     // background thread so we can update the UI
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^(void) {
-        int ret = makeShitHappen(self);
+        int ret = makeShitHappen(self, kppless);
         
         if (ret != 0) {
             NSLog(@"MERIDIAN HAS FAILED TO RUN :(");

BIN
Meridian/meridianTV/basebinaries.tar


+ 1 - 1
Meridian/meridianTV/electra_extras/basebinaries/inject_criticald/Makefile

@@ -22,7 +22,7 @@ $(OUTDIR):
 	mkdir -p $(OUTDIR)
 
 $(OUTDIR)/$(TARGET): *.m | $(OUTDIR)
-	$(CC) -o $@ $^ -framework Foundation -framework IOKit $(CFLAGS)
+	$(CC) -o $@ $^ -framework Foundation -framework IOKit $(CFLAGS) -F../
 	$(LDID) -SEnt.plist $@
 
 clean:

+ 1 - 1
Meridian/meridianTV/electra_extras/basebinaries/jailbreakd/Makefile

@@ -27,7 +27,7 @@ $(OUTDIR):
 	mkdir -p $(OUTDIR)
 
 $(OUTDIR)/$(TARGET): mach/jailbreak_daemonServer.c *.c *.m | $(OUTDIR)
-	$(CC) -o $@ $^ -framework Foundation -framework IOKit $(CFLAGS)
+	$(CC) -o $@ $^ -framework Foundation -framework IOKit $(CFLAGS) -F..
 	$(LDID) -SEnt.plist $@
 
 clean:

+ 4 - 0
Meridian/meridianTV/electra_extras/basebinaries/pspawn_payload/pspawn_payload.m

@@ -66,6 +66,7 @@ kern_return_t bootstrap_look_up(mach_port_t port, const char *service, mach_port
 
 mach_port_t jbd_port;
 
+
 const char* xpcproxy_blacklist[] = {
     "com.apple.diagnosticd",  // syslog
     "MTLCompilerService",     // ?_?
@@ -73,6 +74,9 @@ const char* xpcproxy_blacklist[] = {
     "OTAPKIAssetTool",        // h_h
     "cfprefsd",               // o_o
     "jailbreakd",             // don't inject into jbd since we'd have to call to it
+    "mediaremoted",           // keeps remote app from working
+    "debugserver",           // keeps xcode debugging from working
+    "reboot",
     //"com.nito.nitoTV4",
     //"com.nito.nitoTV4.nitoTVTopShelf",
     /*

BIN
Meridian/meridianTV/meridian-bootstrap.tar


BIN
Meridian/pspawn_hook/bin/pspawn_hook.dylib


+ 2 - 0
Meridian/pspawn_hook/pspawn_hook.m

@@ -78,6 +78,8 @@ const char* xpcproxy_blacklist[] = {
     "cfprefsd",                     // o_o
     "FileProvider",                 // seems to crash from oosb r/w etc 
     "jailbreakd",                   // don't inject into jbd since we'd have to call to it
+    "debugserver",           // keeps xcode debugging from working
+    "reboot",
     NULL
 };