Beispiel #1
0
        private bool GetCameraOffsets()
        {
            //Sanity Check
            if (m.gameFound)
            {
                //uint patternAddr = p.FindPattern("\\xA1\\x00\\x00\\x00\\x00\\x83\\xC4\\x14\\x8B\\x00\\x8B\\x0D\\x00\\x00\\x00\\x00\\xD9\\x80\\x00\\x00\\x00\\x00", "x????xxxxxxx????xx????", ref m);
                uint patternAddr = p.FindPattern("\\xA1\\x00\\x00\\x00\\x00\\x8B\\x48\\x14\\x83\\xC1\\x78", "x????xxxxxx", ref m);

                if (patternAddr == 0)
                {
                    return(false); //Pattern is out of date
                }
                //Increment Addr by one to get to the location where the pointer is
                patternAddr++;

                uint pointerAddr = m.ReadUInt((IntPtr)patternAddr);
                pointerAddr = m.ReadUInt((IntPtr)pointerAddr);
                pointerAddr = m.ReadUInt((IntPtr)pointerAddr);

                if (pointerAddr == 0)
                {
                    return(false); //Pointer hasn't been setup yet
                }
                FoVAddress        = (IntPtr)(pointerAddr + 0x130);
                YawAddress        = (IntPtr)(pointerAddr + 0x124);
                PitchAddress      = (IntPtr)(pointerAddr + 0x120);
                YPositionAddress  = (IntPtr)(pointerAddr + 0x10C);
                XPositionAddress  = (IntPtr)(pointerAddr + 0x104);
                ZoomAddress       = (IntPtr)(pointerAddr + 0x1BC); //Desired Zoom, Current Zoom - 0x04
                CameraModeAddress = (IntPtr)(pointerAddr + 0x1C0);

                patternAddr = p.FindPattern("\\xC7\\x87\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xE8\\x00\\x00\\x00\\x00\\x8B\\x87\\x00\\x00\\x00\\x00\\x8D\\x8F\\x00\\x00\\x00\\x00\\x89\\x45\\xCC", "xx????????x????xx????xx????xxx", ref m);

                if (patternAddr == 0)
                {
                    return(false); //Pattern is out of date
                }
                CameraHeightAddress = (IntPtr)(patternAddr + 0x06);

                patternAddr = p.FindPattern("\\x68\\x00\\x00\\x00\\x00\\xE8\\x00\\x00\\x00\\x00\\x8B\\x0D\\x00\\x00\\x00\\x00\\x68\\x00\\x00\\x00\\x00\\x68\\x00\\x00\\x00\\x00", "x????x????xx????x????x????", ref m);
                if (patternAddr == 0)
                {
                    return(false); //Pattern is out of date
                }
                patternAddr += 0x1;
                pointerAddr  = m.ReadUInt((IntPtr)patternAddr);

                DrawDistanceAddress = (IntPtr)(pointerAddr + 0x10);

                //Max Zoom Out
                patternAddr = p.FindPattern("\\xF3\\x0F\\x10\\x0D\\x00\\x00\\x00\\x00\\x0F\\x2F\\xC1\\x77\\x0D\\xF3\\x0F\\x10\\x0D\\x00\\x00\\x00\\x00", "xxxx????xxxxxxxxx????", ref m);

                if (patternAddr == 0)
                {
                    return(false); //Pattern is out of date
                }
                MaxZoomAddress = (IntPtr)m.ReadUInt((IntPtr)patternAddr + 0x04);
                //Unprotect the MaxZoom Address
                m.WriteProtectedMemory(MaxZoomAddress, 0x04, (uint)MemoryEditor.Protection.PAGE_EXECUTE_READWRITE, (uint)MemoryEditor.Protection.PAGE_READONLY);
                return(true);
            }
            return(false);
        }