Поиск адреса режима Noclip в 32-битной игре, при условии почти одинаковых структур в памяти
-
Пытаюсь найти адрес, который хранит флаг состояние режима "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. Может быть мне нужен другой адрес, смещение или значение?