public static bool RevertOverride(OffsetBackup backup)
        {
            try
            {
                unsafe
                {
                    byte *ptrOriginal = (byte *)backup.Method.ToPointer();

                    *ptrOriginal = backup.A;
                    *(ptrOriginal + 1)  = backup.B;
                    *(ptrOriginal + 10) = backup.C;
                    *(ptrOriginal + 11) = backup.D;
                    *(ptrOriginal + 12) = backup.E;
                    if (IntPtr.Size == sizeof(Int32))
                    {
                        *((uint *)(ptrOriginal + 1)) = backup.F32;
                        *(ptrOriginal + 5)           = backup.G;
                    }
                    else
                    {
                        *((ulong *)(ptrOriginal + 2)) = backup.F64;
                    }
                }

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Ejemplo n.º 2
0
        public static bool RevertDetour(OffsetBackup backup)
        {
            try
            {
                unsafe
                {
                    byte *ptrOriginal = (byte *)backup.Method.ToPointer();

                    *ptrOriginal = backup.A;
                    *(ptrOriginal + 1)  = backup.B;
                    *(ptrOriginal + 10) = backup.C;
                    *(ptrOriginal + 11) = backup.D;
                    *(ptrOriginal + 12) = backup.E;
                    if (IntPtr.Size == sizeof(Int32))
                    {
                        *((uint *)(ptrOriginal + 2)) = backup.F32;
                    }
                    else
                    {
                        *((ulong *)(ptrOriginal + 2)) = backup.F64;
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                PointBlankLogging.LogError("Error reverting detour!", ex);
                return(false);
            }
        }
Ejemplo n.º 3
0
            public DetourInfo(MethodInfo original, MethodInfo modified)
            {
                Modified = modified;
                Original = original;

                Offsets = new OffsetBackup(Original.MethodHandle.GetFunctionPointer());
            }