GameHackLab[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    Поиск адреса режима Noclip в 32-битной игре, при условии почти одинаковых структур в памяти

    Запланировано Прикреплена Закрыта Перенесена Взлом игр (вопросы и ответы)
    4 Сообщения 2 Posters 23 Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • S
      Sergey99
      отредактировано Sergey99

      Пытаюсь найти адрес, который хранит флаг состояние режима "noclip", где 1 - включено и 0 - выключено в Call of Duty: Black Ops 2. В предыдущих играх серии, начиная с Modern Warfare 2 с помощью Cheat Engine я смог найти адрес, он расположен по смещению в несколько байт от базовго адреса "сущности игрока". На данный момент нашел адрес для игр CoD: MW2/MW3/Black Ops. Благо все эти игры 32-битные и разработчики используют один и тот же игровой движок, который немного отличается от игры к игре. В Modern Warfare 2 я нашел адрес через поиск и изменение значения в Cheat Engine, включая и выключая noclip. Однако во всех перечисленных мною играх есть опкод, который умеет читать значение из адреса и сравнивать его с числом 8 (я не знаю зачем).

      Вот этот опкод и байты для Modern Warfare 2:

      F680 54AD0000 08 test byte ptr [eax+0000AD54],08
      

      Байты и маска для поиска сигнатур в OllyDbg:

      \xF6\x80\x54\xAD\x00\x00\x08 - байты
      xx????x - маска
      

      Если искать в бальшом диапазоне адресов то можно найти не много адресов с опкодами (максимум 4), далее каждый найденный адрес с опкодом можно найти в Cheate Engine и узнать к каким адресам опкод имеет доступ, результат будет 1. Далее в найденном адресе можно поменять значени с 0 на 1 и убедиться что это адрес состояния noclip. Таким образом я нашел адреса для MW2/MW3/Black Ops.

      По итогу во всех играх адрес noclip находится в структуре "сущности игрока" примеры:
      MW2:

      player + 0xAD54 - noclip
      player + 0x24 - Z координата
      

      MW3:

      player + 0xAE04 - noclip
      

      BO:

      player + 0x1C0C - noclip
      

      Но с Black Ops 2 возникли сложности, я также попытался через опкод найти адрес, я его нашёл, этот адрес расположен таким образом:
      BO2:

      player + 0x1C34 - noclip
      

      НО значения 1 и 2 ничего не дают, я сделал скрипт который увеличивает значение на 1 и уменьшает значение на 1 при нажатии горячих клавиш. По итогу при определённых значениях игрок просто замирает на месте и не может двигать камерой, а также стрелять, как будто все его действия блокируются, а при других значениях блокировка отключается. Диапазон для каждого из двух состояний примерно 5 единиц.

      По итогу не получилось у меня полетать через noclip или ufo. Может быть мне нужен другой адрес, смещение или значение?

      LIRWL 1 ответ Последний ответ Ответить Цитировать 0
      • LIRWL
        LIRW @Sergey99
        отредактировано

        Пользователь @Sergey99 написал в Поиск адреса режима Noclip в 32-битной игре, при условии почти одинаковых структур в памяти:

        смещение или значение?

        Для mw2

        [ENABLE]
        aobscanmodule(_pClip,iw4sp.exe,74??89????EB??A8??74??C7????????????EB??83)
         _pClip:
          db 90 90
        registersymbol(_pClip)
        [DISABLE]
         _pClip:
          db 74 05
        unregistersymbol(_pClip)
        

        Хоть и есть для всех, но там сами найдете... Все игры этой серии, одинаково работают!

        S 1 ответ Последний ответ Ответить Цитировать 0
        • S
          Sergey99 @LIRW
          отредактировано

          @LIRW Нашел эту сигнатуру в памяти MW2 если первый опкод в этой сигнарутер, а конкретно je заменить nop'ами, то noclip включается, всё ок. Протестил также с адресом, который хранит состояние noclip'а (1/0), при записи nop'ов значение в адресе не меняется. Значит noclip работает отдельно от состояния.

          Два вопроса: для какой функции эти байты, которые находятся aobscan'ом? И как их можно изначально найти, от чего отталкиваться?

          LIRWL 1 ответ Последний ответ Ответить Цитировать 0
          • LIRWL
            LIRW @Sergey99
            отредактировано

            Пользователь @Sergey99 написал в Поиск адреса режима Noclip в 32-битной игре, при условии почти одинаковых структур в памяти:

            Значит noclip работает отдельно от состояния.

            Адрес со значением ( того или иного ) к примеру идет под условие... А когда патч условия идет, там всё равно что находится в адресе, будет всё равно по твоему!
            К примеру
            mov eax,[флаг функции] = 0-1 ( не обязательно должен быть 0 или 1 )
            test al,al
            je -- условие... Если там 0 то нет не какого полета и в 80% идет прыжок на возврат
            а тут ниже по коду, идет как раз функция полета...
            Что у нас получается ? А то, что если перетереть условие, что бы там в eax'e не было
            всё равно прыжка не будет. Это asm ( под ) учить над... и всё сразу встанет понятно :)

            1 ответ Последний ответ Ответить Цитировать 0
            • Первое сообщение
              Последнее сообщение