Exemplo n.º 1
0
        private bool HandleCryptDecrypt(IntPtr hKey, IntPtr hHash, bool final, uint dwFlags, IntPtr pbData, IntPtr pdwLength)
        {
            var result = (bool)_cryptDecryptDetour.CallOriginal(hKey, hHash, final, dwFlags, pbData, pdwLength);

            if (!result)
            {
                return(false);
            }

            var length = Utility.Magic.Read <int>(pdwLength);

            if (length <= 0)
            {
                return(true);
            }
            var dataBuffer = new byte[length];

            if (pbData == IntPtr.Zero)
            {
                return(true);
            }
            Marshal.Copy(pbData, dataBuffer, 0, length);

            if (dataBuffer[0] == 0x78)
            {
                dataBuffer = Utility.Decompress(dataBuffer);
            }

            return(true);
        }
Exemplo n.º 2
0
        private bool HandleVerify(IntPtr hash, IntPtr signature, int siglen, IntPtr pubkey, IntPtr description, int flags)
        {
            // we need to call the original, it might do important stuff
            var ret = _cryptVerifyDetour.CallOriginal(hash, signature, siglen, pubkey, description, flags);

            return(true);
        }
Exemplo n.º 3
0
        private static int ResetHook(IntPtr device, Direct3DAPI.PresentParameters pp)
        {
#if SLIMDX
            Device = null;
#endif
            return((int)_resetHook.CallOriginal(device, pp));
        }
Exemplo n.º 4
0
        private static int HandleWrite(IntPtr stream, IntPtr buffer, int size)
        {
            var ret = (int)_memStreamWriteDetour.CallOriginal(stream, buffer, size);
            var buf = new byte[ret];

            Marshal.Copy(buffer, buf, 0, ret);
            //Core.Log(LogSeverity.Minor, "write " + size + ":\r\n" + Utility.HexDump(buf));
            return(ret);
        }
Exemplo n.º 5
0
        private static int EndSceneHook(IntPtr device)
        {
            try
            {
                if (FrameCount == -1)
                {
                    if (OnLastFrame != null)
                    {
                        OnLastFrame(null, new EventArgs());
                    }
                    Device = null;
                }
                else
                {
                    if (Device == null)
                    {
                        Device = Device.FromPointer(device);
                    }

                    if (FrameCount == 0)
                    {
                        if (OnFirstFrame != null)
                        {
                            OnFirstFrame(null, new EventArgs());
                        }
                    }

                    if (!Rendering.IsInitialized)
                    {
                        Rendering.Initialize(device);
                    }

                    Rendering.Pulse();

                    PrepareRenderState();
                    CallbackManager.Invoke();

                    // TEMP SOLUTION
                    // TODO: FIX THIS
                    IceFlake.Client.Scripts.ScriptManager.Pulse();
                }
            }
            catch (Exception e)
            {
                Log.WriteLine("Error: " + e.ToLongString());
            }

            if (FrameCount != -1)
            {
                FrameCount += 1;
            }

            return((int)_endSceneHook.CallOriginal(device));
        }
Exemplo n.º 6
0
        private static int HandleRead(IntPtr stream, IntPtr buffer, int size)
        {
            var ret = (int)_memStreamReadDetour.CallOriginal(stream, buffer, size);
            var buf = new byte[ret];

            Marshal.Copy(buffer, buf, 0, ret);
            var hints = DataHints(buf);

            Core.Log(LogSeverity.Minor, "read " + size + ", got " + ret + ":\r\n" + Utility.HexDump(buf) + (hints.Length > 0 ? "\r\n" + hints : ""));
            return(ret);
        }
Exemplo n.º 7
0
        private bool HandleCryptEncrypt(IntPtr hKey, IntPtr hHash, bool final, uint dwFlags, IntPtr pbData, IntPtr pdwLength, uint dwBufLen)
        {
            var length = Utility.Magic.Read <int>(pdwLength);

            if (length > 0 && pbData != IntPtr.Zero)
            {
                var dataBuffer = new byte[length];
                Marshal.Copy(pbData, dataBuffer, 0, length);
            }

            return((bool)_cryptEncryptDetour.CallOriginal(hKey, hHash, final, dwFlags, pbData, pdwLength, dwBufLen));
        }
Exemplo n.º 8
0
        private static int EndSceneHook(IntPtr device)
        {
            try
            {
                if (FrameCount == -1)
                {
                    Log.WriteLine("[D] OnLastFrame");
                    if (OnLastFrame != null)
                    {
                        OnLastFrame(null, new EventArgs());
                    }
#if SLIMDX
                    Device = null;
#endif
                }
                else
                {
#if SLIMDX
                    if (Device == null)
                    {
                        Device = Device.FromPointer(device);
                    }
#endif

                    if (FrameCount == 0)
                    {
                        if (OnFirstFrame != null)
                        {
                            OnFirstFrame(null, new EventArgs());
                        }
                    }

                    PrepareRenderState();

                    foreach (IPulsable pulsable in _pulsables)
                    {
                        pulsable.Direct3D_EndScene();
                    }
                }
            }
            catch (Exception e)
            {
                Log.LogException(e);
            }

            if (FrameCount != -1)
            {
                FrameCount += 1;
            }

            return((int)_endSceneHook.CallOriginal(device));
        }
Exemplo n.º 9
0
        private static int Callback(uint ebp8, uint ebpC, uint eax, uint ebp)
        {
            FrameXMLEvents eventCode = (FrameXMLEvents)ebp8;

            if (_eventHandler.ContainsKey(eventCode))
            {
                uint   ArgsFormatPtr = ebpC;
                string ArgsFormat    = GeneralHelper.Memory.ReadString(ArgsFormatPtr, new UTF8Encoding());

                HandleEvent(eventCode, ArgsFormat, eax);
            }

            return((int)_WoWEventInternalHook.CallOriginal(ebp8, ebpC, eax, ebp));
        }
Exemplo n.º 10
0
        private int HandleClickToMove(IntPtr thisPointer, int clickType, ref ulong interactGuid, ref Location clickLocation, float precision)
        {
            if (Teleporter.Destination != null)
            {
                return(0);
            }

            if (clickType == 4)
            {
                Teleporter.SetDestination(clickLocation);
                return(0);
            }

            return((int)_ctmDetour.CallOriginal(thisPointer, clickType, interactGuid, clickLocation, precision));
        }
Exemplo n.º 11
0
        private static int EndSceneHook(IntPtr device)
        {
            lock (_frameLock)
            {
                Manager.Pulse();
                Events.Pulse();

                if (OnFrame != null)
                {
                    OnFrame(null, new EventArgs());
                }
            }

            return((int)_endSceneHook.CallOriginal(device));
        }
Exemplo n.º 12
0
        private static uint HandleSendMovementPacket(IntPtr instance, uint timestamp, uint opcode, uint zero, uint zero2, uint zero3, uint zero4, uint ff)
        {
            var result = (uint)
                         _sendMovementPacketDetour.CallOriginal(new object[]
            {
                instance, timestamp + _timeAdvance, opcode,
                zero, zero2,
                zero3, zero4, ff
            });

            if (instance == Manager.LocalPlayer.Pointer)
            {
                Manager.SetHeartbeatTime(timestamp + 500);
            }

            return(result);
        }
Exemplo n.º 13
0
        private static int EndSceneHook(IntPtr parDevice)
        {
            //Console.WriteLine("EndScene" + frameCounter);
            //_endSceneHook.Remove();
            //return _endSceneDelegate(parDevice);

            if (!RemoveHook)
            {
                IsIngame = ObjectManager.EnumObjects();
                if (EndSceneExecuteOnce.Count > 0)
                {
                    ((Run)EndSceneExecuteOnce.Dequeue())(ref frameCounter, IsIngame);
                }
                else if (IsIngame && EndSceneExecuteOnceIngame.Count > 0)
                {
                    ((Run)EndSceneExecuteOnceIngame.Dequeue())(ref frameCounter, IsIngame);
                }
                else
                {
                    _Run(ref frameCounter, IsIngame);
                }
            }
            else
            {
                _endSceneHook.Remove();
                return(_endSceneDelegate(parDevice));
            }
            frameCounter = frameCounter % 1800 + 1;
            if (LastFrameTick != 0)
            {
                TimeBetweenFrame = Environment.TickCount - LastFrameTick;
                if (TimeBetweenFrame < 15)
                {
                    WaitTilNextFrame = Environment.TickCount + (15 - TimeBetweenFrame);
                    while (Environment.TickCount < WaitTilNextFrame)
                    {
                    }
                }
            }
            LastFrameTick = Environment.TickCount;
            return((int)_endSceneHook.CallOriginal(parDevice));
        }
Exemplo n.º 14
0
        private int EndSceneHook(IntPtr parDevice)
        {
            if (FirstRun == 1)
            {
                if (ObjectManager.EnumObjects())
                {
                    FirstRun = 0;
                    Lua.Welcome();
                }
            }

            // run our delegate
            _Run(ref frameCounter);
            // reset the framecounter
            frameCounter = frameCounter % 180 + 1;
            if (frameCounter == 1)
            {
                Memory.Reader.Write <int>((IntPtr)Offsets.Functions.LastHardwareAction, Environment.TickCount);
            }
            return((int)_endSceneHook.CallOriginal(parDevice));
        }
Exemplo n.º 15
0
        private static int HandleVictimCall(IntPtr luaState)
        {
            int top = LuaInterface.GetTop(luaState);

            if (top > 0)
            {
                var args = new List <string>(top);
                for (int i = 1; i <= top; i++)
                {
                    args.Add(LuaInterface.StackObjectToString(luaState, i));
                }
                LuaInterface.Pop(luaState, top);
                HandleEvent(args);
            }
            else
            {
                // legal call
                return((int)_eventDetour.CallOriginal(luaState));
            }

            return(0);
        }
Exemplo n.º 16
0
        private int HookedPCall(IntPtr pLuaState, int nargs, int nresults, int errfunc)
        {
            if (globalLuaState == IntPtr.Zero)
            {
                ArcheAPI.Instance.Lua.GetGlobal(pLuaState, "X2Chat");
                if (!ArcheAPI.Instance.Lua.IsNil(pLuaState, -1))
                {
                    globalLuaState = pLuaState;
                }
                ArcheAPI.Instance.Lua.Pop(pLuaState, 1);
            }

            if (ArcheAPI.Instance.Lua.auctionLuaState == IntPtr.Zero)
            {
                ArcheAPI.Instance.Lua.GetGlobal(pLuaState, "X2Auction");
                if (!ArcheAPI.Instance.Lua.IsNil(pLuaState, -1))
                {
                    ArcheAPI.Instance.Lua.auctionLuaState = pLuaState;
                }
                ArcheAPI.Instance.Lua.Pop(pLuaState, 1);
            }

            if (pLuaState == globalLuaState)
            {
                lock (luaQueue)
                {
                    foreach (var action in luaQueue)
                    {
                        action();
                    }

                    luaQueue.Clear();
                }
            }

            return((int)oPCall.CallOriginal(pLuaState, nargs, nresults, errfunc));
            // return ArcheAPI.Instance.Native.Lua.PCall(pLuaState, nargs, nresults, errfunc);
        }
Exemplo n.º 17
0
        private static int EndSceneHook(IntPtr device)
        {
            lock (_frameLock)
            {
                if (!Rendering.IsInitialized)
                {
                    Rendering.Initialize(device);
                    //Camera.ScreenHeight = WoWScript.Execute<int>("GetScreenHeight()", 0);
                    //Camera.ScreenWidth = WoWScript.Execute<int>("GetScreenWidth()", 0);
                }

                Manager.Pulse();
                Events.Pulse();
                Rendering.Pulse();

                if (OnFrame != null)
                {
                    OnFrame(null, new EventArgs());
                }
            }

            return((int)_endSceneHook.CallOriginal(device));
        }
Exemplo n.º 18
0
        private IntPtr HandleGetModuleCode(IntPtr importer, string fullname, IntPtr ppackage, IntPtr pmodpath)
        {
            var ret = (IntPtr)_getModuleCodeDetour.CallOriginal(importer, fullname, ppackage, pmodpath);

            return(ret);
        }
Exemplo n.º 19
0
 private static void HandleSendSplineMoveDone(IntPtr instance, uint timestamp, uint unknown)
 {
     _sendSplineMoveDoneDetour.CallOriginal(new object[] { instance, timestamp + _timeAdvance, unknown });
 }
Exemplo n.º 20
0
 private static int ResetHook(IntPtr device, PresentParameters pp)
 {
     Device = null;
     return((int)_resetHook.CallOriginal(device, pp));
 }
Exemplo n.º 21
0
 private int Unregister()
 {
     ObjectManager.Instance.DcKillswitch();
     return((int)_unloadWorldHook.CallOriginal());
 }
Exemplo n.º 22
0
 private static int ResetHook(IntPtr device, Direct3DAPI.PresentParameters pp)
 {
     return((int)_resetHook.CallOriginal(device, pp));
 }
Exemplo n.º 23
0
 private int Callback(IntPtr swapChainPtr, int syncInterval, PresentFlags flags)
 {
     RaiseEvent();
     return((int)_presentHook.CallOriginal(swapChainPtr, syncInterval, flags));
 }
Exemplo n.º 24
0
        /* private int ResetHook(IntPtr device, Required.PresentParameters pp)
         * {
         *   base.ResetDrawingObjects();
         *   return (int)_resetHook.CallOriginal(device, pp);
         * }*/

        private int Callback(IntPtr device)
        {
            DevicePointer = device;
            RaiseEvent();
            return((int)_endSceneHook.CallOriginal(device));
        }
Exemplo n.º 25
0
        private int HandleGetModuleInfo(IntPtr importer, string module)
        {
            int ret = (int)_getModuleInfoDetour.CallOriginal(importer, module);

            return(ret);
        }