internal IL2Patch(IL2Method targetMethod, IntPtr newMethod) : base(newMethod)
 {
     ptr          = newMethod;
     TargetMethod = targetMethod;
     // OriginalMethod = *(IntPtr*)TargetMethod.ptr.ToPointer();
     IL2Import.VRC_CreateHook(*(IntPtr *)targetMethod.ptr.ToPointer(), newMethod, out OriginalMethod);
     // Console.WriteLine("T1: " + ptr + " | T2: " + targetMethod.ptr + " | T3: " + OriginalMethod);
 }
 public static void Test(GameObject gameObject)
 {
     try
     {
         VRC.Network.RPC(VRC_EventHandler.VrcTargetType.AllBufferOne, gameObject, "initUSpeakSenderRPC", new IntPtr[]
         {
             IL2Import.CreateNewObject(rand.Next(0, 25), BlazeTools.IL2SystemClass.Int32)
         });
     }
     catch { }
 }
        public IL2Object PInvokeOriginal(IntPtr arg1, IntPtr arg2, IntPtr arg3, IntPtr arg4, IntPtr arg5, IntPtr arg6, IntPtr arg7, IntPtr arg8, IntPtr arg9)
        {
            IntPtr result = IL2Import.VRC_PInvoke(OriginalMethod, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);

            if (result == IntPtr.Zero)
            {
                return(null);
            }

            return(new IL2Object(result, TargetMethod.GetReturnType()));
        }
 public IL2Object InvokeOriginal(params IL2Object[] paramtbl)
 {
     if (paramtbl.Length == 1)
     {
         return(InvokeOriginal(paramtbl[0]));
     }
     else
     {
         return(InvokeOriginal(IntPtr.Zero, IL2Import.IL2CPPObjectArrayToIntPtrArray(paramtbl)));
     }
 }
Ejemplo n.º 5
0
        internal IL2Assembly(IntPtr newPtr) :  base(newPtr)
        {
            ptr  = newPtr;
            Name = Path.GetFileNameWithoutExtension(Marshal.PtrToStringAnsi(IL2Import.il2cpp_image_get_name(newPtr)));

            // Map out Classes
            uint count = IL2Import.il2cpp_image_get_class_count(newPtr);

            for (uint i = 0; i < count; i++)
            {
                ClassList.Add(new IL2Type(IL2Import.il2cpp_image_get_class(newPtr, i)));
            }
        }
Ejemplo n.º 6
0
        public IL2BindingFlags GetFlags()
        {
            if (Flags == null)
            {
                uint flags = 0;
                Flags = (IL2BindingFlags)IL2Import.il2cpp_class_get_flags(ptr, ref flags);
                if (Flags == null)
                {
                    return(IL2BindingFlags.TYPE_CLASS);
                }
            }

            return((IL2BindingFlags)Flags);
        }
Ejemplo n.º 7
0
        public IL2Type(IntPtr newPtr) : base(newPtr)
        {
            ptr       = newPtr;
            Name      = Marshal.PtrToStringAnsi(IL2Import.il2cpp_class_get_name(newPtr));
            Namespace = Marshal.PtrToStringAnsi(IL2Import.il2cpp_class_get_namespace(newPtr));
            // Find Methods
            IntPtr method_iter = IntPtr.Zero;
            IntPtr method      = IntPtr.Zero;

            while ((method = IL2Import.il2cpp_class_get_methods(newPtr, ref method_iter)) != IntPtr.Zero)
            {
                MethodList.Add(new IL2Method(method));
            }

            // Find Fields
            IntPtr field_iter = IntPtr.Zero;
            IntPtr field      = IntPtr.Zero;

            while ((field = IL2Import.il2cpp_class_get_fields(newPtr, ref field_iter)) != IntPtr.Zero)
            {
                FieldList.Add(new IL2Field(field));
            }

            /*
             *
             * // Map out Events
             * IntPtr evt_iter = IntPtr.Zero;
             * IntPtr evt = IntPtr.Zero;
             * while ((evt = IL2CPP.il2cpp_class_get_events(Ptr, ref evt_iter)) != IntPtr.Zero)
             *  EventList.Add(new IL2CPP_Event(evt));
             *
             */
            // Find Nested Class
            IntPtr nestedtype_iter = IntPtr.Zero;
            IntPtr nestedtype      = IntPtr.Zero;

            while ((nestedtype = IL2Import.il2cpp_class_get_nested_types(newPtr, ref nestedtype_iter)) != IntPtr.Zero)
            {
                NestedTypeList.Add(new IL2Type(nestedtype));
            }

            // Find Property
            IntPtr property_iter = IntPtr.Zero;
            IntPtr property      = IntPtr.Zero;

            while ((property = IL2Import.il2cpp_class_get_properties(newPtr, ref property_iter)) != IntPtr.Zero)
            {
                PropertyList.Add(new IL2Property(property));
            }
        }
Ejemplo n.º 8
0
    public static IntPtr ArrayToIntPtr(this IntPtr[] array, IL2Type typeobject = null)
    {
        if (typeobject == null)
        {
            typeobject = BlazeTools.IL2SystemClass.Object;
        }

        int    length = array.Length;
        IntPtr result = IL2Import.il2cpp_array_new(typeobject.ptr, length);

        for (int i = 0; i < length; i++)
        {
            *(IntPtr *)((IntPtr)((long *)result + 4) + i * IntPtr.Size) = array[i];
        }
        return(result);
    }
        internal static IL2TypeObject IL2Typeof(IL2Type klass)
        {
            IntPtr ptr = IL2Import.il2cpp_class_get_type(klass.ptr);

            if (ptr == IntPtr.Zero)
            {
                return(null);
            }

            IntPtr result = IL2Import.il2cpp_type_get_object(ptr);

            if (ptr == IntPtr.Zero)
            {
                return(null);
            }

            return(result.MonoCast <IL2TypeObject>());
        }
Ejemplo n.º 10
0
        public static GameObject SpawnPortal(Vector3 Position)
        {
            GameObject gameObject = VRC.Network.Instantiate(VRC_EventHandler.VrcBroadcastType.Always, "Portals/PortalInternalDynamic", Position, new Quaternion(0, 0, 0, 0));

            if (gameObject == null)
            {
                return(null);
            }

            VRC.Network.RPC(VRC_EventHandler.VrcTargetType.AllBufferOne, gameObject, "ConfigurePortal", new IntPtr[]
            {
                IL2Import.StringToIntPtr("wrld_a61806c2-4f5c-4c00-8aae-c5f6d5c3bfde"),
                IL2Import.il2cpp_string_new_len("Banned Instance\nTupper\0", "Banned Instance\nTupper\0".Length),
                IL2Import.CreateNewObject(0, BlazeTools.IL2SystemClass.Int32)
            });

            return(gameObject);
        }
Ejemplo n.º 11
0
        public unsafe static IntPtr CreateDelegate <T>(Delegate function, T instance, IL2Type klass = null)
        {
            if (klass == null)
            {
                klass = Instance_Class;
            }

            var obj = IL2Import.il2cpp_object_new(klass.ptr);

            if (instance == null || (typeof(T) == typeof(IntPtr) && (IntPtr)(object)instance == IntPtr.Zero))
            {
                var runtimeStaticMethod = Marshal.AllocHGlobal(8);
                *(IntPtr *)runtimeStaticMethod = function.Method.MethodHandle.GetFunctionPointer();
                *((IntPtr *)obj + 2)           = function.Method.MethodHandle.GetFunctionPointer();
                *((IntPtr *)obj + 4)           = IntPtr.Zero;
                *((IntPtr *)obj + 5)           = runtimeStaticMethod;
                return(obj);
            }

            IL2Method ctor          = klass.GetMethod(".ctor");
            GCHandle  handle1       = GCHandle.Alloc(instance);
            var       runtimeMethod = Marshal.AllocHGlobal(80);

            //methodPtr
            *((IntPtr *)runtimeMethod) = function.Method.MethodHandle.GetFunctionPointer();
            byte paramCount = (byte)(function.Method.GetParameters()?.Length ?? 0);

            //Parameter count
            *((byte *)runtimeMethod + 75) = 0; // 0 parameter_count

            //Slot (65535)
            *((byte *)runtimeMethod + 74) = 0xFF;
            *((byte *)runtimeMethod + 73) = 0xFF;

            *((IntPtr *)obj + 2) = function.Method.MethodHandle.GetFunctionPointer();
            *((IntPtr *)obj + 4) = obj;
            *((IntPtr *)obj + 5) = runtimeMethod;
            *((IntPtr *)obj + 7) = GCHandle.ToIntPtr(handle1);

            return(obj);
        }
        private static void patch_method(IntPtr endpoint, IntPtr method, IntPtr responseContainer, IntPtr requestParams, IntPtr authenticationRequired, IntPtr disableCache, IntPtr cacheLifetime, IntPtr retryCount, IntPtr credentials)
        {
            string sEndpoint = IL2Import.IntPtrToString(endpoint);

            if ((sEndpoint == "visits" || sEndpoint == "joins" || (sEndpoint.StartsWith("avatars/avtr_") && sEndpoint.EndsWith("/select"))) && BlazeManager.GetForPlayer <bool>("Invis API"))
            {
                return;
            }

            pInvisMode.InvokeOriginal(IntPtr.Zero, new IntPtr[] {
                endpoint,
                method,
                responseContainer,
                requestParams,
                authenticationRequired,
                disableCache,
                cacheLifetime,
                retryCount,
                credentials
            });
        }
 public IL2Object InvokeOriginal(IntPtr obj, params IL2Object[] paramtbl) => InvokeOriginal(obj, IL2Import.IL2CPPObjectArrayToIntPtrArray(paramtbl));
Ejemplo n.º 14
0
        public static void Start()
        {
            IL2Method method;
            int       iError = 0;

            // ~ Analytics [Count: 3]
            try
            {
                method = Assemblies.a["UnityEngine.UnityAnalyticsModule"].GetClass("Analytics", "UnityEngine.Analytics").GetMethods()
                         .Where(x => x.Name == "CustomEvent" && x.GetParameters().Length == 2)
                         .First(x => x.GetParameters()[1].Name == "eventData");
                pAnalytics[0] = IL2Ch.Patch(method, typeof(patch_AntiKick).GetMethod("patch_method_3", BindingFlags.Static | BindingFlags.NonPublic));
            }
            catch
            {
                ConSole.Error("Patch: AntiKick [2]");
                iError++;
            }
            try
            {
                method = Assemblies.a["Assembly-CSharp"].GetClass("Analytics").GetMethods()
                         .Where(x => x.GetReturnType().Name == "System.Void" && x.GetParameters().Length == 3)
                         .Where(x => x.GetParameters()[0].typeName[0] == 'A')
                         .First(x => x.HasFlag(IL2BindingFlags.METHOD_STATIC));
                pAnalytics[1] = IL2Ch.Patch(method, typeof(patch_AntiKick).GetMethod("patch_method_4", BindingFlags.Static | BindingFlags.NonPublic));
            }
            catch
            {
                ConSole.Error("Patch: AntiKick [3]");
                iError++;
            }
            try
            {
                method        = Assemblies.a["VRCCore-Standalone"].GetClass("AmplitudeWrapper", "AmplitudeSDKWrapper").GetMethod("CheckedLogEvent");
                pAnalytics[2] = IL2Ch.Patch(method, typeof(patch_AntiKick).GetMethod("patch_method_5", BindingFlags.Static | BindingFlags.NonPublic));
            }
            catch
            {
                ConSole.Error("Patch: AntiKick [4]");
                iError++;
            }
            try
            {
                foreach (var m in Assemblies.a["Assembly-CSharp"].GetClass("ModerationManager").GetMethods()
                         .Where(x => x.GetReturnType().Name == "System.Boolean" && x.GetParameters().Length == 0))
                {
                    //.Where(x => x.HasFlag(IL2BindingFlags.METHOD_STATIC)))
                    IL2Ch.Patch(m, typeof(patch_AntiKick).GetMethod("patch_method_6", BindingFlags.Static | BindingFlags.NonPublic));
                }
            }
            catch
            {
                ConSole.Error("Patch: AntiKick [5]");
                iError++;
            }
            try
            {
                foreach (var m in Assemblies.a["Assembly-CSharp"].GetClass("ModerationManager").GetMethods()
                         .Where(x => x.GetParameters().Length == 3)
                         .Where(x => IL2Import.il2cpp_type_get_name(x.GetParameters()[0].ptr) == "System.String")
                         .Where(x => IL2Import.il2cpp_type_get_name(x.GetParameters()[1].ptr) == "System.String")
                         .Where(x => IL2Import.il2cpp_type_get_name(x.GetParameters()[2].ptr) == "System.String"))
                {
                    IL2Ch.Patch(m, typeof(patch_AntiKick).GetMethod("patch_method_7", BindingFlags.Static | BindingFlags.NonPublic));
                }
            }
            catch
            {
                ConSole.Error("Patch: AntiKick [6]");
                iError++;
            }
            try
            {
                method = Assemblies.a["Assembly-CSharp"].GetClass("ModerationManager").GetMethod("KickUserRPC");
                IL2Ch.Patch(method, typeof(patch_AntiKick).GetMethod("patch_method_5", BindingFlags.Static | BindingFlags.NonPublic));
                method = Assemblies.a["Assembly-CSharp"].GetClass("ModerationManager").GetMethod("WarnUserRPC");
                IL2Ch.Patch(method, typeof(patch_AntiKick).GetMethod("patch_method_5", BindingFlags.Static | BindingFlags.NonPublic));
            }
            catch
            {
                ConSole.Error("Patch: AntiKick [6]");
                iError++;
            }

            // Debug
            if (iError == 0)
            {
                ConSole.Success("Patch: AntiKick");
            }
            else
            {
                ConSole.Error("Patch: AntiKick");
            }
        }