コード例 #1
0
        private void _searchTimer_Tick(object sender, EventArgs e)
        {
            distanceUpDown.Visibility = Visibility.Hidden;
            fovUpDown.Visibility      = Visibility.Hidden;
            rangeCheckbox.Visibility  = Visibility.Hidden;


            Process[] processes = Process.GetProcessesByName("dota");
            if (processes.Length == 0)
            {
                return;
            }

            _processMemory.OpenProcess(processes[0]);

            _playerResourceAddress = _processMemory.FindPattern(new byte[] {
                0xC6, 0x40, 0x10, 0x02, 0x8B, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0xF6
            }, "xxxxxx????xx", _processMemory.GetModuleBaseAddress("client.dll"), 0xffffff);

            _playerResourceAddress = _processMemory.ReadInt32Ptr(_playerResourceAddress + 6);

            _dotaPlayerAddress = _processMemory.FindPattern(new byte[] {
                0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0xEC, 0x10, 0x53, 0x57
            }, "x????xxxxx", _processMemory.GetModuleBaseAddress("client.dll"), 0xffffff);

            _dotaPlayerAddress = _processMemory.ReadInt32Ptr(_dotaPlayerAddress + 1);

            _playersListAddress = _processMemory.FindPattern(new byte[] { // dota_players_list
                0x7c, 0x71, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF
            }, "xxx????", _processMemory.GetModuleBaseAddress("client.dll"), 0xffffff);

            _playersListAddress = _processMemory.ReadInt32Ptr(_playersListAddress + 3);

            _engineAddress = _processMemory.FindPattern(new byte[] { // hero_npc_list
                0xC1, 0xEB, 0x10, 0x81, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF
            }, "xxxxx????", _processMemory.GetModuleBaseAddress("client.dll"), 0xffffff);

            _engineAddress = _processMemory.ReadInt32Ptr(_engineAddress + 5);

            IntPtr offsetAddress = _processMemory.FindPattern(new byte[] {
                0x8B, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0x40, 0x08, 0x66, 0x0F, 0xD6, 0x44, 0x24, 0xFF
            }, "xx????xxxxxxxx?", _processMemory.GetModuleBaseAddress("client.dll"), 0xffffff);

            _distanceAddress = _processMemory.ReadInt32Ptr(offsetAddress + 2) + 0x14;

            _fovAddress = _processMemory.FindPattern(new byte[] {
                0x74, 0x08, 0x8B, 0xCE, 0x5E, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x05
            }, "xxxxxx????xx", _processMemory.GetModuleBaseAddress("client.dll"), 0xffffff);

            _fovAddress = _processMemory.ReadInt32Ptr(_fovAddress + 12);

            _rangeAddress = _processMemory.FindPattern(new byte[] {
                0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0xC9
            }, "x????xx", _processMemory.GetModuleBaseAddress("client.dll"), 0xffffff);

            _rangeAddress = _processMemory.ReadInt32Ptr(_rangeAddress + 1);

            _searchTimer.Stop();
            _checkTimer.Start();

            distanceUpDown.Value = Settings.Default.distance;
            fovUpDown.Value      = Settings.Default.fov;

            distanceUpDown.Visibility = Visibility.Visible;
            fovUpDown.Visibility      = Visibility.Visible;
            rangeCheckbox.Visibility  = Visibility.Visible;
        }