From 88cbf0d228fb359771aaf041534a3aca45daa827 Mon Sep 17 00:00:00 2001 From: m1zole Date: Fri, 8 Dec 2023 02:41:26 +0900 Subject: [PATCH] last --- kfd.xcodeproj/project.pbxproj | 18 +- kfd/ContentView.swift | 9 + ...anager2.swift => ApplicationManager.swift} | 0 kfd/JIT/DirtyJIT/DirtyJITView.swift | 1 - kfd/KFD-manager.m | 116 ++++++++++--- kfd/files/PersistenceHelper_Embedded | Bin 0 -> 211725 bytes kfd/fun/fun.m | 4 +- kfd/fun/grant_full_disk_access.m | 10 +- kfd/fun/offsets.m | 26 +-- kfd/fun/vnode.h | 1 + kfd/fun/vnode.m | 22 +++ kfd/libkfd/info/dynamic_info.h | 160 +++++++++--------- 12 files changed, 239 insertions(+), 128 deletions(-) rename kfd/JIT/{ApplicationManager2.swift => ApplicationManager.swift} (100%) create mode 100644 kfd/files/PersistenceHelper_Embedded diff --git a/kfd.xcodeproj/project.pbxproj b/kfd.xcodeproj/project.pbxproj index f89a98aa..7e88be3f 100644 --- a/kfd.xcodeproj/project.pbxproj +++ b/kfd.xcodeproj/project.pbxproj @@ -24,7 +24,7 @@ D52BA4652AB582C9002E9836 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52BA4562AB5812A002E9836 /* SearchBar.swift */; }; D52BA4662AB582C9002E9836 /* DirtyJITView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52BA4572AB5812A002E9836 /* DirtyJITView.swift */; }; D52BA4672AB582C9002E9836 /* AppsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52BA4582AB5812A002E9836 /* AppsView.swift */; }; - D52BA4692AB582C9002E9836 /* ApplicationManager2.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52BA4512AB5812A002E9836 /* ApplicationManager2.swift */; }; + D52BA4692AB582C9002E9836 /* ApplicationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52BA4512AB5812A002E9836 /* ApplicationManager.swift */; }; D52BA46B2AB5866D002E9836 /* TextField++.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52BA46A2AB5866D002E9836 /* TextField++.swift */; }; D52BA46D2AB586BF002E9836 /* Alert++.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52BA46C2AB586BF002E9836 /* Alert++.swift */; }; D58653662ABBB60E005A2379 /* vm_unaligned_copy_switch_race.c in Sources */ = {isa = PBXBuildFile; fileRef = D58653622ABBB28D005A2379 /* vm_unaligned_copy_switch_race.c */; }; @@ -46,6 +46,8 @@ D5AFB5BF2ABE1671006266EA /* LogView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5AFB5BE2ABE1671006266EA /* LogView.swift */; }; D5AFB5C32ABE1691006266EA /* SwiftfulLoadingIndicators in Frameworks */ = {isa = PBXBuildFile; productRef = D5AFB5C22ABE1691006266EA /* SwiftfulLoadingIndicators */; }; D5AFB5C52ABE1781006266EA /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5AFB5C42ABE1781006266EA /* Logger.swift */; }; + D5AFB71B2AC0252D006266EA /* grant_full_disk_access.m in Sources */ = {isa = PBXBuildFile; fileRef = D58653602ABBB28D005A2379 /* grant_full_disk_access.m */; }; + D5B87E8F2B00CC2E0024E70C /* FileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D586507E2AB9F2AF005A2379 /* FileManager.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -89,7 +91,7 @@ D51A38072AB56F8400C147E2 /* cs_blobs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = cs_blobs.m; sourceTree = ""; }; D51A38102AB5717500C147E2 /* files */ = {isa = PBXFileReference; lastKnownFileType = folder; path = files; sourceTree = ""; }; D52BA4352AB57EC9002E9836 /* DirtyCowKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = DirtyCowKit; sourceTree = ""; }; - D52BA4512AB5812A002E9836 /* ApplicationManager2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplicationManager2.swift; sourceTree = ""; }; + D52BA4512AB5812A002E9836 /* ApplicationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplicationManager.swift; sourceTree = ""; }; D52BA4562AB5812A002E9836 /* SearchBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = ""; }; D52BA4572AB5812A002E9836 /* DirtyJITView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirtyJITView.swift; sourceTree = ""; }; D52BA4582AB5812A002E9836 /* AppsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppsView.swift; sourceTree = ""; }; @@ -233,7 +235,7 @@ isa = PBXGroup; children = ( D58654902ABD55B3005A2379 /* Info.plist */, - D58654382ABD508B005A2379 /* filemanager_by akusio */, + D58654382ABD508B005A2379 /* filemanager_by_akusio */, D52BA44F2AB5812A002E9836 /* JIT */, 2948BA6A2A3162C600B2ED3C /* libkfd */, 6E75BFA62A8475790056ABDA /* fun */, @@ -304,7 +306,7 @@ isa = PBXGroup; children = ( D52BA4532AB5812A002E9836 /* DirtyJIT */, - D52BA4512AB5812A002E9836 /* ApplicationManager2.swift */, + D52BA4512AB5812A002E9836 /* ApplicationManager.swift */, ); path = JIT; sourceTree = ""; @@ -321,7 +323,7 @@ path = DirtyJIT; sourceTree = ""; }; - D58654382ABD508B005A2379 /* filemanager_by akusio */ = { + D58654382ABD508B005A2379 /* filemanager_by_akusio */ = { isa = PBXGroup; children = ( D58654592ABD508B005A2379 /* ViewController.m */, @@ -356,7 +358,7 @@ D586545D2ABD508B005A2379 /* Main.storyboard */, D58654662ABD508B005A2379 /* liblzfse.a */, ); - name = "filemanager_by akusio"; + name = filemanager_by_akusio; path = MiniRootFileManager15/filemanager_by_akusio; sourceTree = SOURCE_ROOT; }; @@ -448,13 +450,15 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + D5B87E8F2B00CC2E0024E70C /* FileManager.swift in Sources */, + D5AFB71B2AC0252D006266EA /* grant_full_disk_access.m in Sources */, D58653662ABBB60E005A2379 /* vm_unaligned_copy_switch_race.c in Sources */, D52BA4652AB582C9002E9836 /* SearchBar.swift in Sources */, D52BA4662AB582C9002E9836 /* DirtyJITView.swift in Sources */, D52BA4672AB582C9002E9836 /* AppsView.swift in Sources */, D58654892ABD508B005A2379 /* lzssdec.cpp in Sources */, D5AFB5B72ABE074C006266EA /* KFD-manager.m in Sources */, - D52BA4692AB582C9002E9836 /* ApplicationManager2.swift in Sources */, + D52BA4692AB582C9002E9836 /* ApplicationManager.swift in Sources */, D5AFB5C52ABE1781006266EA /* Logger.swift in Sources */, D51A380A2AB56F8400C147E2 /* vnode.m in Sources */, D51A380C2AB56F8400C147E2 /* cs_blobs.m in Sources */, diff --git a/kfd/ContentView.swift b/kfd/ContentView.swift index 177f1e13..ad3ba977 100644 --- a/kfd/ContentView.swift +++ b/kfd/ContentView.swift @@ -32,6 +32,7 @@ struct ContentView: View { @State private var isTweaksPopoverPresented = false @State private var isFilePopoverPresented = false @State private var isJITPopoverPresented = false + @State private var isSwiftFilePopoverPresented = false @State private var isLogPopoverPresented = false @State var advancedLogsTemporarilyEnabled: Bool = true @@ -157,6 +158,11 @@ struct ContentView: View { .onTapGesture { isJITPopoverPresented.toggle() } + Text("Swift File Manager") + .foregroundColor(Color(red: 0.941, green: 0.502, blue: 0.502, opacity: 1)) + .onTapGesture { + isSwiftFilePopoverPresented.toggle() + } Text("File Manager") .foregroundColor(Color(red: 0.941, green: 0.502, blue: 0.502, opacity: 1)) .onTapGesture { @@ -182,6 +188,9 @@ struct ContentView: View { .popover(isPresented: $isFilePopoverPresented, arrowEdge: .bottom) { FileManagerUIKitViewControllerWrapper() } + .popover(isPresented: $isSwiftFilePopoverPresented, arrowEdge: .bottom) { + FileManagerView() + } } } diff --git a/kfd/JIT/ApplicationManager2.swift b/kfd/JIT/ApplicationManager.swift similarity index 100% rename from kfd/JIT/ApplicationManager2.swift rename to kfd/JIT/ApplicationManager.swift diff --git a/kfd/JIT/DirtyJIT/DirtyJITView.swift b/kfd/JIT/DirtyJIT/DirtyJITView.swift index 2e547dfb..52693596 100644 --- a/kfd/JIT/DirtyJIT/DirtyJITView.swift +++ b/kfd/JIT/DirtyJIT/DirtyJITView.swift @@ -39,7 +39,6 @@ struct DirtyJITView: View { } } unsandboxing() - DispatchQueue.main.asyncAfter(deadline: .now() + 3) { UIApplication.shared.dismissAlert(animated: false) diff --git a/kfd/KFD-manager.m b/kfd/KFD-manager.m index 806a6327..2e45683b 100644 --- a/kfd/KFD-manager.m +++ b/kfd/KFD-manager.m @@ -15,6 +15,7 @@ #include "fun/cs_blobs.h" #include "fun/fun.h" #include "fun/grant_full_disk_access.h" +#include "fun/thanks_opa334dev_htrowii.h" #include "kfd-Swift.h" uint64_t orig_to_v_data = 0; @@ -49,6 +50,69 @@ uint64_t do_getTask(char* process) { return 0; } +void readtmplog(NSString* file) { + NSString *mntPath = [NSString stringWithFormat:@"%@%@", NSHomeDirectory(), @"/Documents/mounted"]; + + uint64_t var_tmp_vnode = getVnodeAtPathByChdir("/var/tmp"); + + printf("[i] /var/tmp vnode: 0x%llx\n", var_tmp_vnode); + + uint64_t orig_to_v_data = createFolderAndRedirect(var_tmp_vnode, mntPath); + + NSError *error; + + printf("unredirecting from tmp\n"); + + printf("reading log\n"); + + NSLog(@"%@%@%@", NSHomeDirectory(), @"/Documents/mounted/", file); + NSString *log = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@%@%@", NSHomeDirectory(), @"/Documents/mounted/", file] encoding:NSUTF8StringEncoding error:&error]; + NSLog(@"%@", log); + + UnRedirectAndRemoveFolder(orig_to_v_data, mntPath); +} + +void getappslist(void) { + printf("[i] chown /var/containers/Bundle/Application\n"); + funVnodeChownFolder("/var/containers/Bundle/Application", 501, 501); + + printf("[i] mounting /var/containers/Bundle/Application\n"); + + NSString *mntPath = [NSString stringWithFormat:@"%@%@", NSHomeDirectory(), @"/Documents/mounted"]; + + uint64_t containers_vnode = getVnodeAtPathByChdir("/var/containers/Bundle/Application"); + printf("[i] /var/containers/Bundle/Application vnode: 0x%llx\n", containers_vnode); + + orig_to_v_data = createFolderAndRedirect(containers_vnode, mntPath); + + NSArray* dirs = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:mntPath error:NULL]; + NSLog(@"/var/containers/Bundle/Application directory list:\n %@", dirs); + + UnRedirectAndRemoveFolder(orig_to_v_data, mntPath); + + NSString *appstage1mntPath = [NSString stringWithFormat:@"%@%@", NSHomeDirectory(), @"/Documents/appstage1/"]; + if (![[NSFileManager defaultManager] fileExistsAtPath:appstage1mntPath]) { + [[NSFileManager defaultManager] createDirectoryAtPath:appstage1mntPath withIntermediateDirectories:YES attributes:nil error:nil]; + } + NSString *appstage2mntPath = [NSString stringWithFormat:@"%@%@", NSHomeDirectory(), @"/Documents/appstage2/"]; + if (![[NSFileManager defaultManager] fileExistsAtPath:appstage2mntPath]) { + [[NSFileManager defaultManager] createDirectoryAtPath:appstage2mntPath withIntermediateDirectories:YES attributes:nil error:nil]; + } + + for(NSString *dir in dirs) { + NSString *path = [NSString stringWithFormat:@"%s/%@", "/var/containers/Bundle/Application", dir]; + [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; + NSLog(@"full path:\n %@", path); + //funVnodeChownFolder((char *) [path UTF8String], 501, 501); + NSString *appmntPath = [NSString stringWithFormat:@"%@%@%@", NSHomeDirectory(), @"/Documents/appstage1/", dir]; + uint64_t containers_vnode = getVnodeAtPathByChdir((char *) [path UTF8String]); + createFolderAndRedirect(containers_vnode, appmntPath); + NSArray* targetdirs = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:appmntPath error:NULL]; + NSLog(@"appstage1 directory list: %@", targetdirs); + } +} + + void prepare(void) { _offsets_init(); @@ -79,6 +143,23 @@ void prepare(void) { //}); } +uint64_t mountusrDir(void) { + + NSString *mntPath = [NSString stringWithFormat:@"%@%@", NSHomeDirectory(), @"/Documents/mounted"]; + + uint64_t libexec_vnode = getVnodeAtPathByChdir("/var/containers/Bundle/Application/CF553F26-ED5C-44A5-8AE5-0C1267BFFA8C/Tips.app"); + printf("[i] folder vnode: 0x%llx\n", libexec_vnode); + + orig_to_v_data = createFolderAndRedirect(libexec_vnode, mntPath); + + NSArray* dirs = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:mntPath error:NULL]; + NSLog(@"Tips directory list:\n %@", dirs); + + //UnRedirectAndRemoveFolder(orig_to_v_data, mntPath); + + return orig_to_v_data; +} + void do_tasks(void) { _offsets_init(); @@ -96,11 +177,23 @@ void do_tasks(void) { funUcred(selfProc); funProc(selfProc); printf("[i] pid: %d\n", getpid()); - funCSFlags("kfd"); + //funCSFlags("kfd"); + //funTask("kfd"); mach_port_t host_self = mach_host_self(); printf("[i] mach_host_self: 0x%x\n", host_self); fun_ipc_entry_lookup(host_self); - fun_nvram_dump(); + //fun_nvram_dump(); + //readtmplog(@"ps.log"); + usleep(1000); + //getappslist(); + printf("[i] vnode: %llx\n", getVnodeAtPathByChdir("/var/containers/Bundle/Application/856A4230-C48C-4F6E-BAA4-E0BD1084AE6C/Books.app")); + printf("[i] vnode: %llx\n", findChildVnodeByVnode(getVnodeAtPathByChdir("/var/containers/Bundle/Application/856A4230-C48C-4F6E-BAA4-E0BD1084AE6C/Books.app"), "Books.app")); + printf("[i] vnode: %llx\n", findChildVnodeByVnode(getVnodeAtPathByChdir("/var/mobile"), "TCC.framework")); + + //funVnodeOverwriteFile("/System/Library/PrivateFrameworks/TCC.framework/Support/tccd", "/Developer/System/Library/PrivateFrameworks/TCC.framework/Support/tccd_ori"); + //kfd_grant_full_disk_access(^(NSError* error) { + // NSLog(@"[-] grant_full_disk_access returned error: %@", error); + //}); } uint64_t mountselectedDir(NSString* path) { @@ -121,25 +214,6 @@ uint64_t mountselectedDir(NSString* path) { return orig_to_v_data; } -uint64_t mountusrDir(void) { - - printf("[i] mounting /usr\n"); - - NSString *mntPath = [NSString stringWithFormat:@"%@%@", NSHomeDirectory(), @"/Documents/mounted"]; - - uint64_t libexec_vnode = getVnodeAtPathByChdir("/usr"); - printf("[i] /usr vnode: 0x%llx\n", libexec_vnode); - - orig_to_v_data = createFolderAndRedirect(libexec_vnode, mntPath); - - NSArray* dirs = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:mntPath error:NULL]; - NSLog(@"/usr directory list:\n %@", dirs); - - UnRedirectAndRemoveFolder(orig_to_v_data, mntPath); - - return 0; -} - void unmountselectedDir(uint64_t orig_to_v_data, NSString* mntPath) { printf("[i] orig_to_v_data: %llx", orig_to_v_data); onlyUnRedirectFolder(orig_to_v_data, mntPath); diff --git a/kfd/files/PersistenceHelper_Embedded b/kfd/files/PersistenceHelper_Embedded new file mode 100644 index 0000000000000000000000000000000000000000..9fbec6004834f4590c0687e3d70d5f5c6021dcdc GIT binary patch literal 211725 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

$ck`Ym&9cSZ$4E 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 I|HTOWAMTP3ivR!s literal 0 HcmV?d00001 diff --git a/kfd/fun/fun.m b/kfd/fun/fun.m index a551e913..4fe5c40b 100644 --- a/kfd/fun/fun.m +++ b/kfd/fun/fun.m @@ -106,8 +106,8 @@ int funTask(char* process) { #define TFRO_PAC_EXC_FATAL 0x00010000 /* task is marked a corpse if a PAC exception occurs */ #define TFRO_PAC_ENFORCE_USER_STATE 0x01000000 /* Enforce user and kernel signed thread state */ - uint32_t t_flags_ro = kread32(proc_ro + off_p_ro_t_flags_ro); - printf("[i] %s proc->proc_ro->t_flags_ro: 0x%x\n", process, t_flags_ro); + //uint32_t t_flags_ro = kread32(proc_ro + off_p_ro_t_flags_ro); + //printf("[i] %s proc->proc_ro->t_flags_ro: 0x%x\n", process, t_flags_ro); return 0; } diff --git a/kfd/fun/grant_full_disk_access.m b/kfd/fun/grant_full_disk_access.m index 83afc765..9fc068b2 100644 --- a/kfd/fun/grant_full_disk_access.m +++ b/kfd/fun/grant_full_disk_access.m @@ -15,7 +15,7 @@ #import "proc.h" #import "offsets.h" -//#import "krw.h" +#import "krw.h" #import "vnode.h" typedef NSObject* xpc_object_t; @@ -328,7 +328,7 @@ static bool overwrite_file(int fd, NSData* sourceData) { kwrite32(to_vnode + off_vnode_v_writecount, to_vnode_v_writecount + 1); printf("[+] overwrite_file vnode->v_writecount: %d\n", kread32(to_vnode + off_vnode_v_writecount)); } - + /* for (int off = 0; off < sourceData.length; off += 0x4000) { bool success = false; for (int i = 0; i < 2; i++) { @@ -344,7 +344,9 @@ static bool overwrite_file(int fd, NSData* sourceData) { kwrite32(rootvnode_mount + off_mount_mnt_flag, rootvnode_mnt_flag); return false; } - } + }*/ + [sourceData writeToFile: [NSString stringWithFormat:@"%@%@", NSHomeDirectory(), @"/Documents/tccd"] atomically: true]; + funVnodeOverwriteFile((char *) [[NSString stringWithFormat:@"%@%@", NSHomeDirectory(), @"/Documents/tccd"] UTF8String], "/System/Library/PrivateFrameworks/TCC.framework/Support/tccd"); kwrite32(fileglob + off_fg_flag, O_RDONLY); kwrite32(rootvnode_mount + off_mount_mnt_flag, rootvnode_mnt_flag); return true; @@ -373,7 +375,7 @@ static void grant_full_disk_access_impl(void (^completion)(NSString* extension_t } if (!overwrite_file(fd, sourceData)) { - overwrite_file(fd, originalData); + //overwrite_file(fd, originalData); munmap(targetMap, targetLength); completion( nil, [NSError errorWithDomain:@"com.worthdoingbadly.fulldiskaccess" diff --git a/kfd/fun/offsets.m b/kfd/fun/offsets.m index 8c9420a4..491f04dd 100644 --- a/kfd/fun/offsets.m +++ b/kfd/fun/offsets.m @@ -85,17 +85,17 @@ void _offsets_init(void) { //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/queue.h#L487 off_p_list_le_prev = 0x8; off_p_proc_ro = 0x18; - off_p_ppid = 0x20; - off_p_original_ppid = 0x24; - off_p_pgrpid = 0x28; + off_p_ppid = 0x20;//ok + off_p_original_ppid = 0x24;//ok + off_p_pgrpid = 0x28;//ok off_p_uid = 0x2c; off_p_gid = 0x30; off_p_ruid = 0x34; off_p_rgid = 0x38; off_p_svuid = 0x3c; off_p_svgid = 0x40; - off_p_sessionid = 0x44; - off_p_puniqueid = 0x48; + off_p_sessionid = 0x44;//ok + off_p_puniqueid = 0x48;//ok off_p_pid = 0x60; off_p_pfd = 0xf8; off_p_textvp = 0x350; @@ -177,25 +177,25 @@ void _offsets_init(void) { //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/queue.h#L487 off_p_list_le_prev = 0x8;//ok off_p_proc_ro = 0x18; - off_p_ppid = 0x20; - off_p_original_ppid = 0x24; - off_p_pgrpid = 0x28; + off_p_ppid = 0x20;//ok + off_p_original_ppid = 0x24;//ok + off_p_pgrpid = 0x28;//ok off_p_uid = 0x2c; off_p_gid = 0x30; off_p_ruid = 0x34; off_p_rgid = 0x38; off_p_svuid = 0x3c; off_p_svgid = 0x40; - off_p_sessionid = 0x44; - off_p_puniqueid = 0x48; + off_p_sessionid = 0x44;//ok + off_p_puniqueid = 0x48;//ok off_p_pid = 0x60;//ok off_p_pfd = 0xf8;//p_fd__fd_ofiles? ok off_p_textvp = 0x548; off_p_name = 0x579;//ok //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/proc_ro.h#L59 - off_p_ro_p_csflags = 0x1c; - off_p_ro_p_ucred = 0x20; + off_p_ro_p_csflags = 0x1c;//ok + off_p_ro_p_ucred = 0x20;//ok off_p_ro_pr_proc = 0; off_p_ro_pr_task = 0x8; off_p_ro_t_flags_ro = 0x78; @@ -216,7 +216,7 @@ void _offsets_init(void) { off_cr_flags = 0x5c; //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/osfmk/kern/task.h#L280 - off_task_t_flags = 0x3D0; + off_task_t_flags = 0x3D0;//ok //https://github.com/apple-oss-distributions/xnu/blob/xnu-8792.41.9/bsd/sys/filedesc.h#L138 off_fd_ofiles = 0; diff --git a/kfd/fun/vnode.h b/kfd/fun/vnode.h index a6900b0b..d1300d64 100644 --- a/kfd/fun/vnode.h +++ b/kfd/fun/vnode.h @@ -122,4 +122,5 @@ uint64_t funVnodeOverwriteFileUnlimitSize(char* to, char* from); uint64_t funVnodeOverwriteFileUnlimitSizeWithVnode(uint64_t to_vnode, char* from); uint64_t funVnodeChownFolder(char* filename, uid_t uid, gid_t gid); +uint64_t funVnodeChmodFolder(char* filename, mode_t mode); uint64_t funVnodeFolderForFileManager(NSString* filename, uid_t uid, gid_t gid); diff --git a/kfd/fun/vnode.m b/kfd/fun/vnode.m index c714c05f..3f69f436 100644 --- a/kfd/fun/vnode.m +++ b/kfd/fun/vnode.m @@ -153,6 +153,7 @@ uint64_t funVnodeFolderForFileManager(NSString* filename, uid_t uid, gid_t gid) //funVnodeChownFolder((char *) [filename UTF8String], uid, gid); return 0; } + uint64_t funVnodeChmod(char* filename, mode_t mode) { uint64_t vnode = getVnodeAtPath(filename); if(vnode == -1) { @@ -174,6 +175,27 @@ uint64_t funVnodeChmod(char* filename, mode_t mode) { return 0; } +uint64_t funVnodeChmodFolder(char* filename, mode_t mode) { + uint64_t vnode = getVnodeAtPathByChdir(filename); + if(vnode == -1) { + printf("[-] Unable to get vnode, path: %s", filename); + return -1; + } + + uint64_t v_data = kread64(vnode + off_vnode_v_data); + uint32_t v_mode = kread32(v_data + 0x88); + + printf("[i] Patching %s vnode->v_mode %o -> %o\n", filename, v_mode, mode); + kwrite32(v_data+0x88, mode); + + struct stat file_stat; + if(stat(filename, &file_stat) == 0) { + printf("[+] %s mode: %o\n", filename, file_stat.st_mode); + } + + return 0; +} + uint64_t findRootVnode(void) { uint64_t launchd_proc = getProc(1); diff --git a/kfd/libkfd/info/dynamic_info.h b/kfd/libkfd/info/dynamic_info.h index 760e7ef0..503b0ea8 100644 --- a/kfd/libkfd/info/dynamic_info.h +++ b/kfd/libkfd/info/dynamic_info.h @@ -104,86 +104,6 @@ struct dynamic_info { }; const struct dynamic_info kern_versions[] = { - //iPhone SE 2020 iOS 16.6 beta1 - { - .kern_version = "Darwin Kernel Version 22.6.0: Tue May 9 06:18:02 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8030", - .fileglob__fg_ops = 0x28, - .fileglob__fg_data = 0x40 - 8, - .fileops__fo_kqfilter = 0x30, - // .fileproc__fp_iocount = 0x0000, - // .fileproc__fp_vflags = 0x0004, - // .fileproc__fp_flags = 0x0008, - // .fileproc__fp_guard_attrs = 0x000a, - // .fileproc__fp_glob = 0x0010, - // .fileproc__fp_guard = 0x0018, - // .fileproc__object_size = 0x0020, - .fileproc_guard__fpg_guard = 0x8, - .kqworkloop__kqwl_state = 0x10, - .kqworkloop__kqwl_p = 0x18, - .kqworkloop__kqwl_owner = 0xd0, - .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18, - .kqworkloop__object_size = 0x108, - .pmap__tte = 0x0, - .pmap__ttep = 0x8, - .proc__p_list__le_next = 0x0, - .proc__p_list__le_prev = 0x8, - .proc__p_pid = 0x60, - .proc__p_fd__fd_ofiles = 0xf8, - .proc__object_size = 0x730, - .pseminfo__psem_usecount = 0x04, - .pseminfo__psem_uid = 0x0c, - .pseminfo__psem_gid = 0x10, - .pseminfo__psem_name = 0x14, - .pseminfo__psem_semobject = 0x38, - // .psemnode__pinfo = 0x0000, - // .psemnode__padding = 0x0008, - // .psemnode__object_size = 0x0010, - .semaphore__owner = 0x28, - .specinfo__si_rdev = 0x18, - .task__map = 0x28, - .task__threads__next = 0x80 - 0x28, - .task__threads__prev = 0x80 - 0x28 + 8, - .task__itk_space = 0x300, - .task__object_size = 0x628, - .thread__task_threads__next = 0x378 - 0x18, - .thread__task_threads__prev = 0x378 - 0x18 + 8, - .thread__map = 0x378, - .thread__thread_id = 0x410, - .thread__object_size = 0x4b8, - .uthread__object_size = 0x200, - .vm_map_entry__links__prev = 0x00, - .vm_map_entry__links__next = 0x08, - .vm_map_entry__links__start = 0x10, - .vm_map_entry__links__end = 0x18, - .vm_map_entry__store__entry__rbe_left = 0x20, - .vm_map_entry__store__entry__rbe_right = 0x28, - .vm_map_entry__store__entry__rbe_parent = 0x30, - .vnode__v_un__vu_specinfo = 0x78, - ._vm_map__hdr__links__prev = 0x00 + 0x10, - ._vm_map__hdr__links__next = 0x08 + 0x10, - ._vm_map__hdr__links__start = 0x10 + 0x10, - ._vm_map__hdr__links__end = 0x18 + 0x10, - ._vm_map__hdr__nentries = 0x30, - ._vm_map__hdr__rb_head_store__rbh_root = 0x38, - ._vm_map__pmap = 0x40, - ._vm_map__hint = 0x90 + 0x08, - ._vm_map__hole_hint = 0x90 + 0x10, - ._vm_map__holes_list = 0x90 + 0x18, - ._vm_map__object_size = 0xc0, - .kernelcache__kernel_base = 0xfffffff007004000, - .kernelcache__cdevsw = 0xfffffff00a47dab0, - .kernelcache__gPhysBase = 0xfffffff0079541b8, - .kernelcache__gPhysSize = 0xfffffff0079541b8 + 8, - .kernelcache__gVirtBase = 0xfffffff007952370, - .kernelcache__perfmon_devices = 0xfffffff00a4bd520, - .kernelcache__perfmon_dev_open = 0xfffffff007f07d78, - .kernelcache__ptov_table = 0xfffffff0079079b8, - .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4bc910, - .kernelcache__vm_pages = 0xfffffff007904100, - .kernelcache__vm_page_array_beginning_addr = 0xfffffff007906958, - .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4bc908, - .kernelcache__vn_kqfilter = 0xfffffff007f56588, - }, //iPhone 12 mini 16.1.2 { .kern_version = "Darwin Kernel Version 22.1.0: Thu Oct 6 19:34:22 PDT 2022; root:xnu-8792.42.7~1/RELEASE_ARM64_T8101", @@ -263,6 +183,86 @@ const struct dynamic_info kern_versions[] = { .kernelcache__vm_page_array_beginning_addr = 0xfffffff0077fa970, .kernelcache__vm_page_array_ending_addr = 0xfffffff00a3db778, .kernelcache__vn_kqfilter = 0xfffffff007f1da7c, + }, + //iPhone SE 2020 iOS 16.6 beta1 + { + .kern_version = "Darwin Kernel Version 22.6.0: Tue May 9 06:18:02 PDT 2023; root:xnu-8796.140.12.502.1~12/RELEASE_ARM64_T8030", + .fileglob__fg_ops = 0x28, + .fileglob__fg_data = 0x40 - 8, + .fileops__fo_kqfilter = 0x30, + // .fileproc__fp_iocount = 0x0000, + // .fileproc__fp_vflags = 0x0004, + // .fileproc__fp_flags = 0x0008, + // .fileproc__fp_guard_attrs = 0x000a, + // .fileproc__fp_glob = 0x0010, + // .fileproc__fp_guard = 0x0018, + // .fileproc__object_size = 0x0020, + .fileproc_guard__fpg_guard = 0x8, + .kqworkloop__kqwl_state = 0x10, + .kqworkloop__kqwl_p = 0x18, + .kqworkloop__kqwl_owner = 0xd0, + .kqworkloop__kqwl_dynamicid = 0xd0 + 0x18, + .kqworkloop__object_size = 0x108, + .pmap__tte = 0x0, + .pmap__ttep = 0x8, + .proc__p_list__le_next = 0x0, + .proc__p_list__le_prev = 0x8, + .proc__p_pid = 0x60, + .proc__p_fd__fd_ofiles = 0xf8, + .proc__object_size = 0x730, + .pseminfo__psem_usecount = 0x04, + .pseminfo__psem_uid = 0x0c, + .pseminfo__psem_gid = 0x10, + .pseminfo__psem_name = 0x14, + .pseminfo__psem_semobject = 0x38, + // .psemnode__pinfo = 0x0000, + // .psemnode__padding = 0x0008, + // .psemnode__object_size = 0x0010, + .semaphore__owner = 0x28, + .specinfo__si_rdev = 0x18, + .task__map = 0x28, + .task__threads__next = 0x80 - 0x28, + .task__threads__prev = 0x80 - 0x28 + 8, + .task__itk_space = 0x300, + .task__object_size = 0x628, + .thread__task_threads__next = 0x378 - 0x18, + .thread__task_threads__prev = 0x378 - 0x18 + 8, + .thread__map = 0x378, + .thread__thread_id = 0x410, + .thread__object_size = 0x4b8, + .uthread__object_size = 0x200, + .vm_map_entry__links__prev = 0x00, + .vm_map_entry__links__next = 0x08, + .vm_map_entry__links__start = 0x10, + .vm_map_entry__links__end = 0x18, + .vm_map_entry__store__entry__rbe_left = 0x20, + .vm_map_entry__store__entry__rbe_right = 0x28, + .vm_map_entry__store__entry__rbe_parent = 0x30, + .vnode__v_un__vu_specinfo = 0x78, + ._vm_map__hdr__links__prev = 0x00 + 0x10, + ._vm_map__hdr__links__next = 0x08 + 0x10, + ._vm_map__hdr__links__start = 0x10 + 0x10, + ._vm_map__hdr__links__end = 0x18 + 0x10, + ._vm_map__hdr__nentries = 0x30, + ._vm_map__hdr__rb_head_store__rbh_root = 0x38, + ._vm_map__pmap = 0x40, + ._vm_map__hint = 0x90 + 0x08, + ._vm_map__hole_hint = 0x90 + 0x10, + ._vm_map__holes_list = 0x90 + 0x18, + ._vm_map__object_size = 0xc0, + .kernelcache__kernel_base = 0xfffffff007004000, + .kernelcache__cdevsw = 0xfffffff00a47dab0, + .kernelcache__gPhysBase = 0xfffffff0079541b8, + .kernelcache__gPhysSize = 0xfffffff0079541b8 + 8, + .kernelcache__gVirtBase = 0xfffffff007952370, + .kernelcache__perfmon_devices = 0xfffffff00a4bd520, + .kernelcache__perfmon_dev_open = 0xfffffff007f07d78, + .kernelcache__ptov_table = 0xfffffff0079079b8, + .kernelcache__vm_first_phys_ppnum = 0xfffffff00a4bc910, + .kernelcache__vm_pages = 0xfffffff007904100, + .kernelcache__vm_page_array_beginning_addr = 0xfffffff007906958, + .kernelcache__vm_page_array_ending_addr = 0xfffffff00a4bc908, + .kernelcache__vn_kqfilter = 0xfffffff007f56588, } };