|
@@ -23,33 +23,18 @@ namespace BepInEx.IL2CPP.Allocator
|
|
yield return (start, end);
|
|
yield return (start, end);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
private static class LibSystem
|
|
private static class LibSystem
|
|
{
|
|
{
|
|
- public static readonly IntPtr TaskSelf;
|
|
|
|
public const int VM_REGION_BASIC_INFO_64 = 9;
|
|
public const int VM_REGION_BASIC_INFO_64 = 9;
|
|
public const int KERN_SUCCESS = 0;
|
|
public const int KERN_SUCCESS = 0;
|
|
|
|
+ public static readonly IntPtr TaskSelf;
|
|
|
|
|
|
- [StructLayout(LayoutKind.Sequential)]
|
|
|
|
- public struct vm_region_basic_info_64
|
|
|
|
- {
|
|
|
|
- public int protection;
|
|
|
|
- public int max_protection;
|
|
|
|
- public uint inheritance;
|
|
|
|
- [MarshalAs(UnmanagedType.I4)]
|
|
|
|
- public bool shared;
|
|
|
|
- [MarshalAs(UnmanagedType.I4)]
|
|
|
|
- public bool reserved;
|
|
|
|
- public ulong offset;
|
|
|
|
- public int behavior;
|
|
|
|
- public ushort user_wired_count;
|
|
|
|
- }
|
|
|
|
|
|
+ [DynDllImport("libSystem")]
|
|
|
|
+ public static vm_region_64Delegate vm_region_64;
|
|
|
|
|
|
public delegate int vm_region_64Delegate(IntPtr target_task, ref IntPtr address, ref IntPtr size, int flavor, ref vm_region_basic_info_64 info, ref uint infoCnt, ref uint object_name);
|
|
public delegate int vm_region_64Delegate(IntPtr target_task, ref IntPtr address, ref IntPtr size, int flavor, ref vm_region_basic_info_64 info, ref uint infoCnt, ref uint object_name);
|
|
|
|
|
|
- [DynDllImport("libSystem")]
|
|
|
|
- public static vm_region_64Delegate vm_region_64;
|
|
|
|
-
|
|
|
|
static LibSystem()
|
|
static LibSystem()
|
|
{
|
|
{
|
|
typeof(LibSystem).ResolveDynDllImports(new Dictionary<string, List<DynDllMapping>>
|
|
typeof(LibSystem).ResolveDynDllImports(new Dictionary<string, List<DynDllMapping>>
|
|
@@ -63,6 +48,24 @@ namespace BepInEx.IL2CPP.Allocator
|
|
var libsystem = DynDll.OpenLibrary("/usr/lib/libSystem.dylib");
|
|
var libsystem = DynDll.OpenLibrary("/usr/lib/libSystem.dylib");
|
|
TaskSelf = libsystem.GetFunction("mach_task_self_"); // This isn't a function but rather an exported symbol
|
|
TaskSelf = libsystem.GetFunction("mach_task_self_"); // This isn't a function but rather an exported symbol
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ [StructLayout(LayoutKind.Sequential)]
|
|
|
|
+ public struct vm_region_basic_info_64
|
|
|
|
+ {
|
|
|
|
+ public readonly int protection;
|
|
|
|
+ public readonly int max_protection;
|
|
|
|
+ public readonly uint inheritance;
|
|
|
|
+
|
|
|
|
+ [MarshalAs(UnmanagedType.I4)]
|
|
|
|
+ public readonly bool shared;
|
|
|
|
+
|
|
|
|
+ [MarshalAs(UnmanagedType.I4)]
|
|
|
|
+ public readonly bool reserved;
|
|
|
|
+
|
|
|
|
+ public readonly ulong offset;
|
|
|
|
+ public readonly int behavior;
|
|
|
|
+ public readonly ushort user_wired_count;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|