Browse Source

some missing changes

Kevin Bradley 5 years ago
parent
commit
6328f27c61

+ 1 - 1
Meridian/Meridian/build_time

@@ -1 +1 @@
-Thu, 05 Jul 2018 14:15:04 -0700
+Thu, 05 Jul 2018 20:38:11 -0700

+ 2 - 0
Meridian/Meridian/jailbreak.h

@@ -6,6 +6,8 @@
 //  Copyright © 2018 Ben Sparkes. All rights reserved.
 //
 
+//#define DO_KPPLESS
+
 #ifndef jailbreak_h
 #define jailbreak_h
 

+ 67 - 9
Meridian/Meridian/jailbreak.m

@@ -23,14 +23,50 @@
 #import "NSData+GZip.h"
 #include <sys/spawn.h>
 #import "fun_objc.h"
+#include "kpp.h"
+#include "kppremount.h"
 //#import "NSTask.h"
 
+//experimental kpp stuff
+
+
 NSFileManager *fileMgr;
 
 offsets_t offsets;
 
 BOOL great_success = FALSE;
 
+int remount() {
+    //[self log:@"remounting"];
+    NSLog(@"remounting");
+    if (do_remount(kslide) == KERN_SUCCESS) {
+        // [self bootstrap];
+        return 0;
+    } else {
+        
+        NSLog(@"ERROR: failed to remount system partition \n");
+        //    [self log:@"ERROR: failed to remount system partition \n"];
+        return -1;
+    }
+    return -1;
+}
+
+
+int bypassKPP() {
+    //[self log:@"pwning kernel"];
+    
+    if (do_kpp(1, 0, kernel_base, kslide, tfp0) == KERN_SUCCESS) {
+        NSLog(@"you down with kpp? yeah you know me");
+        return remount();
+    } else {
+        NSLog(@"ERROR: kpp bypass failed \n");
+        //[self log:@"ERROR: kpp bypass failed \n"];
+        return -1;
+    }
+    return 0;
+}
+
+
 int makeShitHappen(ViewController *view) {
     int ret;
     
@@ -52,6 +88,8 @@ int makeShitHappen(ViewController *view) {
     
     // set up stuff
     init_patchfinder(NULL);
+    
+#ifndef DO_KPPLESS
     ret = init_amfi();
     
     if (ret != 0) {
@@ -75,6 +113,27 @@ int makeShitHappen(ViewController *view) {
         [view writeText:@"failed!"];
         return 1;
     }
+    
+    
+#else
+   
+    int kppReturn = bypassKPP();
+    
+    if (kppReturn == 0) {
+        
+        [view writeText:@"KPP has been defeated!\n"];
+        
+    } else {
+        
+        [view writeText:@"KPP bypass failed!\n"];
+        return 1;
+    }
+    
+    
+#endif
+    
+  
+    
     [view writeText:@"done!"];
     
     /*      Begin the filesystem fuckery      */
@@ -90,7 +149,6 @@ int makeShitHappen(ViewController *view) {
     if (file_exists("/Library/LaunchDaemons/._dropbear.plist") == 0) {
         
         unlink("/Library/LaunchDaemons/._dropbear.plist");
-        CGFloat science;
     }
    
     /*
@@ -207,6 +265,8 @@ int makeShitHappen(ViewController *view) {
     
     // dump offsets to file for later use (/meridian/offsets.plist)
     dumpOffsetsToFile(&offsets, kernel_base, kslide);
+   
+#ifndef DO_KPPLESS
     
     // patch amfid
     [view writeText:@"patching amfid..."];
@@ -219,7 +279,9 @@ int makeShitHappen(ViewController *view) {
         return 1;
     }
     [view writeText:@"done!"];
-    
+
+#endif
+   
     // touch .cydia_no_stash
     touch_file("/.cydia_no_stash");
     
@@ -323,6 +385,7 @@ int makeShitHappen(ViewController *view) {
     
     // link substitute stuff
     //setUpSubstitute();
+#ifndef DO_KPPLESS
     
     // start jailbreakd
     
@@ -330,13 +393,7 @@ int makeShitHappen(ViewController *view) {
     //ret = inject_trust("/electra/amfid_payload.dylib");
     //ret = inject_trust("/electra/pspawn_payload.dylib");
     //ret = inject_trust("/electra/libjailbreak.dylib");
-    /*
-     "/electra/inject_criticald",
-     "/electra/amfid_payload.dylib",
-     "/electra/pspawn_payload.dylib",
-     "/electra/libjailbreak.dylib"
-     
-     */
+  
     //if (ret != 0) return -1;
     
     
@@ -360,6 +417,7 @@ int makeShitHappen(ViewController *view) {
     }
     [view writeText:@"done!"];
     
+#endif
     // load launchdaemons
     [view writeText:@"loading launchdaemons..."];
     ret = loadLaunchDaemons();

+ 50 - 2
Meridian/meridian.xcodeproj/project.pbxproj

@@ -72,6 +72,11 @@
 		325A25B920E89561001D1BAD /* unliberios.c in Sources */ = {isa = PBXBuildFile; fileRef = 325A259E20E8952E001D1BAD /* unliberios.c */; };
 		325A25BA20E89561001D1BAD /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 325A25A020E8952E001D1BAD /* utils.c */; };
 		328CC34720EE91BE0071849C /* tar.gz in Resources */ = {isa = PBXBuildFile; fileRef = 328CC34620EE91BE0071849C /* tar.gz */; };
+		32DC44E420EF0F8B008FFF9C /* kpp.m in Sources */ = {isa = PBXBuildFile; fileRef = 32DC44E220EF0F8B008FFF9C /* kpp.m */; };
+		32DC44E720EF103E008FFF9C /* kpppatchfinder64.c in Sources */ = {isa = PBXBuildFile; fileRef = 32DC44E520EF103D008FFF9C /* kpppatchfinder64.c */; };
+		32DC44EC20EF123A008FFF9C /* kppkernel.m in Sources */ = {isa = PBXBuildFile; fileRef = 32DC44E920EF1239008FFF9C /* kppkernel.m */; };
+		32DC44EF20EF14B5008FFF9C /* kppremount.m in Sources */ = {isa = PBXBuildFile; fileRef = 32DC44ED20EF14B5008FFF9C /* kppremount.m */; };
+		32DC44F220EF14F1008FFF9C /* kppoffsets.m in Sources */ = {isa = PBXBuildFile; fileRef = 32DC44F120EF14F1008FFF9C /* kppoffsets.m */; };
 		32E5EAF320E8AE7B00346489 /* ent.plist in Resources */ = {isa = PBXBuildFile; fileRef = 32E5EAF120E8AE7600346489 /* ent.plist */; };
 		32E5EAF420E8AE7D00346489 /* launchctl.gz in Resources */ = {isa = PBXBuildFile; fileRef = 32E5EAF220E8AE7600346489 /* launchctl.gz */; };
 		32E5EAF520E8AE8000346489 /* rm.gz in Resources */ = {isa = PBXBuildFile; fileRef = 32E5EAF020E8AE7600346489 /* rm.gz */; };
@@ -230,6 +235,18 @@
 		325A25A020E8952E001D1BAD /* utils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = utils.c; sourceTree = "<group>"; };
 		325A25A120E8952E001D1BAD /* utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = utils.h; sourceTree = "<group>"; };
 		328CC34620EE91BE0071849C /* tar.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; name = tar.gz; path = meridianTV/electra/bootstrap/tar.gz; sourceTree = "<group>"; };
+		32DC44E220EF0F8B008FFF9C /* kpp.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = kpp.m; sourceTree = "<group>"; };
+		32DC44E320EF0F8B008FFF9C /* kpp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kpp.h; sourceTree = "<group>"; };
+		32DC44E520EF103D008FFF9C /* kpppatchfinder64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kpppatchfinder64.c; sourceTree = "<group>"; };
+		32DC44E620EF103E008FFF9C /* kpppatchfinder64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kpppatchfinder64.h; sourceTree = "<group>"; };
+		32DC44E820EF1044008FFF9C /* pte_stuff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pte_stuff.h; sourceTree = "<group>"; };
+		32DC44E920EF1239008FFF9C /* kppkernel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = kppkernel.m; sourceTree = "<group>"; };
+		32DC44EA20EF123A008FFF9C /* kppcommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kppcommon.h; sourceTree = "<group>"; };
+		32DC44EB20EF123A008FFF9C /* kppkernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kppkernel.h; sourceTree = "<group>"; };
+		32DC44ED20EF14B5008FFF9C /* kppremount.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = kppremount.m; sourceTree = "<group>"; };
+		32DC44EE20EF14B5008FFF9C /* kppremount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kppremount.h; sourceTree = "<group>"; };
+		32DC44F020EF14F1008FFF9C /* kppoffsets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kppoffsets.h; sourceTree = "<group>"; };
+		32DC44F120EF14F1008FFF9C /* kppoffsets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = kppoffsets.m; sourceTree = "<group>"; };
 		32E5EAEF20E8AC7B00346489 /* bgTemp.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = bgTemp.jpg; sourceTree = "<group>"; };
 		32E5EAF020E8AE7600346489 /* rm.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; name = rm.gz; path = bootstrap/rm.gz; sourceTree = "<group>"; };
 		32E5EAF120E8AE7600346489 /* ent.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = ent.plist; path = bootstrap/ent.plist; sourceTree = "<group>"; };
@@ -342,6 +359,7 @@
 		3252638420E0B140003BD42A /* meridianTV */ = {
 			isa = PBXGroup;
 			children = (
+				32DC44E120EF0F8B008FFF9C /* kpp */,
 				32E5EAEF20E8AC7B00346489 /* bgTemp.jpg */,
 				325A256720E8952E001D1BAD /* electra */,
 				3249301B20E41D5200E99767 /* basebinaries.tar */,
@@ -489,6 +507,25 @@
 			path = utilities;
 			sourceTree = "<group>";
 		};
+		32DC44E120EF0F8B008FFF9C /* kpp */ = {
+			isa = PBXGroup;
+			children = (
+				32DC44F020EF14F1008FFF9C /* kppoffsets.h */,
+				32DC44F120EF14F1008FFF9C /* kppoffsets.m */,
+				32DC44EE20EF14B5008FFF9C /* kppremount.h */,
+				32DC44ED20EF14B5008FFF9C /* kppremount.m */,
+				32DC44EA20EF123A008FFF9C /* kppcommon.h */,
+				32DC44EB20EF123A008FFF9C /* kppkernel.h */,
+				32DC44E920EF1239008FFF9C /* kppkernel.m */,
+				32DC44E820EF1044008FFF9C /* pte_stuff.h */,
+				32DC44E520EF103D008FFF9C /* kpppatchfinder64.c */,
+				32DC44E620EF103E008FFF9C /* kpppatchfinder64.h */,
+				32DC44E220EF0F8B008FFF9C /* kpp.m */,
+				32DC44E320EF0F8B008FFF9C /* kpp.h */,
+			);
+			path = kpp;
+			sourceTree = "<group>";
+		};
 		B50F79671FF224F0000D6015 /* views */ = {
 			isa = PBXGroup;
 			children = (
@@ -892,10 +929,13 @@
 				3252638A20E0B140003BD42A /* ViewController.m in Sources */,
 				325A25B420E89561001D1BAD /* file_utils.c in Sources */,
 				325A25B620E89561001D1BAD /* offsetof.c in Sources */,
+				32DC44E720EF103E008FFF9C /* kpppatchfinder64.c in Sources */,
 				325A25AB20E89556001D1BAD /* bootstrap.c in Sources */,
 				320AFA9A20E34FD500859485 /* NSData+GZip.m in Sources */,
 				3252639E20E0B1D3003BD42A /* jailbreak.m in Sources */,
+				32DC44EF20EF14B5008FFF9C /* kppremount.m in Sources */,
 				325A25AD20E89556001D1BAD /* fun_objc.m in Sources */,
+				32DC44EC20EF123A008FFF9C /* kppkernel.m in Sources */,
 				320AFA9720E21D0A00859485 /* UIColor+Additions.m in Sources */,
 				325263AC20E0B3E6003BD42A /* NSArray+PureLayout.m in Sources */,
 				3252639220E0B141003BD42A /* main.m in Sources */,
@@ -905,12 +945,14 @@
 				3252639620E0B1A5003BD42A /* offsetfinder.mm in Sources */,
 				3252638720E0B140003BD42A /* AppDelegate.m in Sources */,
 				325263D320E0CCB4003BD42A /* jailbreak_daemonUser.c in Sources */,
+				32DC44E420EF0F8B008FFF9C /* kpp.m in Sources */,
 				325263B020E0B506003BD42A /* patchfinder64.c in Sources */,
 				325A25A920E8954A001D1BAD /* kmem.c in Sources */,
 				325A25B320E89561001D1BAD /* apfs_util.c in Sources */,
 				3252639B20E0B1C8003BD42A /* kernel.m in Sources */,
 				3252639F20E0B1D5003BD42A /* root-rw.m in Sources */,
 				325A25B720E89561001D1BAD /* removeElectraBeta.c in Sources */,
+				32DC44F220EF14F1008FFF9C /* kppoffsets.m in Sources */,
 				325A25B920E89561001D1BAD /* unliberios.c in Sources */,
 				325A25A520E8954A001D1BAD /* early_kalloc.c in Sources */,
 				325A25A620E8954A001D1BAD /* find_port.c in Sources */,
@@ -1019,7 +1061,10 @@
 					"$(SRCROOT)/meridianTV/",
 				);
 				GCC_NO_COMMON_BLOCKS = NO;
-				HEADER_SEARCH_PATHS = $SRCROOT/meridiantTV;
+				HEADER_SEARCH_PATHS = (
+					$SRCROOT/meridiantTV,
+					$SRCROOT/meridianTV/kpp,
+				);
 				INFOPLIST_FILE = meridianTV/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				LIBRARY_SEARCH_PATHS = (
@@ -1048,7 +1093,10 @@
 					"$(SRCROOT)/meridianTV/",
 				);
 				GCC_NO_COMMON_BLOCKS = NO;
-				HEADER_SEARCH_PATHS = $SRCROOT/meridiantTV;
+				HEADER_SEARCH_PATHS = (
+					$SRCROOT/meridiantTV,
+					$SRCROOT/meridianTV/kpp,
+				);
 				INFOPLIST_FILE = meridianTV/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				LIBRARY_SEARCH_PATHS = (

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