Просмотр исходного кода

Always install bootstrap files; move reload step to VC

Sticktron лет назад: 8
Родитель
Сommit
4599b79622
2 измененных файлов с 41 добавлено и 23 удалено
  1. 31 10
      g0blin/ViewController.m
  2. 10 13
      g0blin/bootstrap.m

+ 31 - 10
g0blin/ViewController.m

@@ -51,6 +51,14 @@ static uint64_t kbase;
     uname(&u);
     [self log:[NSString stringWithFormat:@"%s \n", u.version]];
     
+    // abort if already jailbroken
+    if (strstr(u.version, "MarijuanARM")) {
+        self.goButton.enabled = NO;
+        self.goButton.backgroundColor = UIColor.darkGrayColor;
+        [self.goButton setTitle:@"jailbroke yo!" forState:UIControlStateDisabled];
+    }
+    
+    
     if (init_offsets() != KERN_SUCCESS) {
         self.goButton.enabled = NO;
         self.goButton.backgroundColor = UIColor.darkGrayColor;
@@ -121,32 +129,32 @@ static uint64_t kbase;
 }
 
 - (void)remount {
-    
+
     [self.progressView setProgress:0.5 animated:YES];
     [self log:@"remounting / as r/w"];
-    
+
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
-        
+
         if (do_remount(kslide) != KERN_SUCCESS) {
             [self log:@"ERROR: failed to remount system partition \n"];
             return;
         }
-        
+
         [self bootstrap];
   });
 }
 
 - (void)bootstrap {
     
-//    [self.progressView setProgress:0.6 animated:YES];
-//    [self log:@"installing bootstrap"];
+    [self.progressView setProgress:0.6 animated:YES];
+    [self log:@"installing bootstrap"];
     
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
         
-//        if (do_bootstrap() != KERN_SUCCESS) {
-//            [self log:@"ERROR: failed to install bootstrap \n"];
-//            return;
-//        }
+        if (do_bootstrap() != KERN_SUCCESS) {
+            [self log:@"ERROR: failed to install bootstrap \n"];
+            return;
+        }
         
         [self finish];
     });
@@ -157,6 +165,19 @@ static uint64_t kbase;
     [self log:@"All done, peace!"];
 
     [self.goButton setTitle:@"jailbroke yo!" forState:UIControlStateDisabled];
+    
+    
+    // start launchdaemons ...
+    
+    LOG("reloading...");
+    pid_t pid;
+    posix_spawn(&pid, "/bin/launchctl", 0, 0, (char**)&(const char*[]){"/bin/launchctl", "load", "/Library/LaunchDaemons/0.reload.plist", NULL}, NULL);
+    
+    //    LOG("starting dropbear...");
+    //    posix_spawn(&pid, "/bin/launchctl", 0, 0, (char**)&(const char*[]){"/bin/launchctl", "load", "/Library/LaunchDaemons/dropbear.plist", NULL}, NULL);
+    
+    sleep(2);
+    
 }
 
 @end

+ 10 - 13
g0blin/bootstrap.m

@@ -24,7 +24,8 @@ kern_return_t do_bootstrap() {
     NSString* execpath = [[NSString stringWithUTF8String:pt] stringByDeletingLastPathComponent];
     
     int f = open("/.installed_g0blin", O_RDONLY);
-    if (f == -1) {
+//    if (f == -1) {
+    if (f == f) { // ALWAYS INSTALL THE BOOTSTRAP FOR NOW.....
         LOG("bootstrap not yet installed");
         
         NSString* bootstrap = [execpath stringByAppendingPathComponent:@"bootstrap.tar"];
@@ -34,13 +35,11 @@ kern_return_t do_bootstrap() {
         unlink("/bin/tar");
         unlink("/bin/launchctl");
         
-        // copy over launchctl
-        copyfile([launchctl UTF8String], "/bin/launchctl", 0, COPYFILE_ALL);
-        chmod("/bin/launchctl", 0755);
-        
-        // copy over tar
+        // copy over tar, launchctl
         copyfile([tar UTF8String], "/bin/tar", 0, COPYFILE_ALL);
         chmod("/bin/tar", 0777);
+        copyfile([launchctl UTF8String], "/bin/launchctl", 0, COPYFILE_ALL);
+        chmod("/bin/launchctl", 0755);
         
         // unpack bootstrap tarball
         chdir("/");
@@ -73,7 +72,7 @@ kern_return_t do_bootstrap() {
         [plist writeToFile:@"/var/mobile/Library/Preferences/com.apple.springboard.plist" atomically:YES];
         posix_spawn(&pd, "killall", 0, 0, (char**)&(const char*[]){"killall", "-9", "cfprefsd", NULL}, NULL);
     }
-    LOG("bootstrapped");
+    LOG("bootstrap untarred");
     
     
     // copy reload
@@ -116,15 +115,13 @@ kern_return_t do_bootstrap() {
     chown("/var/MobileAsset/Assets/com_apple_MobileAsset_SoftwareUpdate", 0, 0);
     LOG("killed OTA updater");
     
-//    WriteAnywhere64(bsd_task+0x100, orig_cred);
     
-    // reload
-    LOG("reloading");
-    posix_spawn(&pid, "/bin/launchctl", 0, 0, (char**)&(const char*[]){"/bin/launchctl", "load", "/Library/LaunchDaemons/0.reload.plist", NULL}, NULL);
+    // reload launchdaemons
+//    LOG("reloading...");
+//    posix_spawn(&pid, "/bin/launchctl", 0, 0, (char**)&(const char*[]){"/bin/launchctl", "load", "/Library/LaunchDaemons/0.reload.plist", NULL}, NULL);
     
-    sleep(2);
+//    sleep(2);
     
     
-    // done.
     return KERN_SUCCESS;
 }