Sticktron лет назад: 8
Родитель
Сommit
a78965ab9c
1 измененных файлов с 5 добавлено и 13 удалено
  1. 5 13
      g0blin/remount.m

+ 5 - 13
g0blin/remount.m

@@ -12,33 +12,26 @@
 #include "kernel.h"
 #include <sys/mount.h>
 
-
 #define KSTRUCT_OFFSET_MOUNT_MNT_FLAG   0x70
 #define KSTRUCT_OFFSET_VNODE_V_UN       0xd8
 
-
 kern_return_t do_remount(uint64_t slide) {
-    
-    // feat. nosuid patch by coolstar
-    
     uint64_t _rootnode = OFFSET_ROOT_MOUNT_V_NODE + slide;
     uint64_t rootfs_vnode = rk64(_rootnode);
     
     // read flags
     uint64_t v_mount = rk64(rootfs_vnode + KSTRUCT_OFFSET_VNODE_V_UN);
-//    uint32_t v_flag = rk32(v_mount + KSTRUCT_OFFSET_MOUNT_MNT_FLAG + 1);
     uint32_t v_flag = rk32(v_mount + KSTRUCT_OFFSET_MOUNT_MNT_FLAG);
+    
+    // unset readonly, nosuid
     v_flag = v_flag & ~MNT_NOSUID;
     v_flag = v_flag & ~MNT_RDONLY;
     
-
-    // unset rootfs flag
-//    wk32(v_mount + KSTRUCT_OFFSET_MOUNT_MNT_FLAG + 1, v_flag & (~(0x1<<6)));
+    // write new flags, temporarily unsetting rootfs flag
     wk32(v_mount + KSTRUCT_OFFSET_MOUNT_MNT_FLAG, v_flag & ~MNT_ROOTFS);
     
     // remount
     char *nmz = strdup("/dev/disk0s1s1");
-//    int lolr = mount("hfs", "/", MNT_UPDATE, (void *)&nmz);
     int lolr = mount("apfs", "/", MNT_UPDATE, (void *)&nmz);
     if (lolr == -1) {
         LOG("ERROR: could not remount '/'");
@@ -46,10 +39,9 @@ kern_return_t do_remount(uint64_t slide) {
     }
     LOG("successfully remounted '/'");
     
-    // set original flags back
+    // set rootfs flag again
     v_mount = rk64(rootfs_vnode + KSTRUCT_OFFSET_VNODE_V_UN);
-//    wk32(v_mount + KSTRUCT_OFFSET_MOUNT_MNT_FLAG + 1, v_flag);
     wk32(v_mount + KSTRUCT_OFFSET_MOUNT_MNT_FLAG, v_flag);
-
+    
     return KERN_SUCCESS;
 }