|
@@ -407,13 +407,22 @@ remappage[remapcnt++] = (x & (~PMK));\
|
|
|
}
|
|
|
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_file_check_mmap)), 0);
|
|
|
- WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_rename)), 0);
|
|
|
+
|
|
|
+ WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_iokit_check_get_property)), 0); //ts
|
|
|
+
|
|
|
+ WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_mount_check_stat)), 0);
|
|
|
+
|
|
|
+ WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_proc_check_fork)), 0); //ts
|
|
|
+ WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_proc_check_run_cs_invalid)), 0); //test
|
|
|
+
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_access)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_chroot)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_create)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_deleteextattr)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_exchangedata)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_exec)), 0);
|
|
|
+ WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_fsgetpath)), 0);
|
|
|
+ WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_getattr)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_getattrlist)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_getextattr)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_ioctl)), 0);
|
|
@@ -421,6 +430,9 @@ remappage[remapcnt++] = (x & (~PMK));\
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_listextattr)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_open)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_readlink)), 0);
|
|
|
+
|
|
|
+ WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_rename)), 0);
|
|
|
+
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_setattrlist)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_setextattr)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_setflags)), 0);
|
|
@@ -430,40 +442,27 @@ remappage[remapcnt++] = (x & (~PMK));\
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_stat)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_truncate)), 0);
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_unlink)), 0);
|
|
|
+ WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_write)), 0);
|
|
|
+
|
|
|
WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_notify_create)), 0);
|
|
|
- WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_fsgetpath)), 0);
|
|
|
- WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_vnode_check_getattr)), 0);
|
|
|
- WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_mount_check_stat)), 0);
|
|
|
|
|
|
- // thx tihmstar
|
|
|
+ // mpo_cred_check_label_update_execve - tihmstar
|
|
|
+ // WARNING - has to patched like this or Widgets (and javascript?) fail.
|
|
|
{
|
|
|
- WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_proc_check_fork)), 0); //needed?
|
|
|
- WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_iokit_check_get_property)), 0); //needed?
|
|
|
-
|
|
|
- // WARNING! nulling these policies like this causes Widgets (and javascript?) to fail.
|
|
|
- //WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_cred_check_label_update_execve)), 0);
|
|
|
- //WriteAnywhere64(NewPointer(sbops+offsetof(struct mac_policy_ops, mpo_cred_label_update_execve)), 0);
|
|
|
-
|
|
|
-
|
|
|
- #define INSN_NOP 0xd503201f
|
|
|
- uint64_t offset_sandbox_label_update_execve;
|
|
|
-
|
|
|
- //----------- TEST PATCHFINDER --------------//
|
|
|
- uint64_t a = find_sandbox_label_update_execve();
|
|
|
- LOG("a = 0x%llx", a);
|
|
|
+ uint64_t offset_sandbox_label_update_execve = find_sandbox_label_update_execve();
|
|
|
+ LOG("find_sandbox_label_update_execve = 0x%llx", offset_sandbox_label_update_execve);
|
|
|
LOG("was looking for: 0xfffffff006c35fb8");
|
|
|
- //----------- TEST PATCHFINDER --------------//
|
|
|
|
|
|
//----------- TEMP FIX --------------//
|
|
|
- offset_sandbox_label_update_execve = 0xfffffff006c35fb8;
|
|
|
+ //offset_sandbox_label_update_execve = 0xfffffff006c35fb8;
|
|
|
//----------- TEMP FIX --------------//
|
|
|
|
|
|
- LOG("offset_sandbox_label_update_execve = 0x%llx", offset_sandbox_label_update_execve);
|
|
|
offset_sandbox_label_update_execve += slide;
|
|
|
+
|
|
|
+ #define INSN_NOP 0xd503201f
|
|
|
RemapPage(offset_sandbox_label_update_execve);
|
|
|
WriteAnywhere32(NewPointer(offset_sandbox_label_update_execve), INSN_NOP);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
{
|