ChestGlaring Опубликовано 27 октября, 2020 Поделиться Опубликовано 27 октября, 2020 (изменено) Самое большое разочарование, которое может принести игра при попытках спидранить её - отсутствие быстрых сохранений и загрузок. Из-за чего практика и исследование игры превращаются в пытку. Для создания быстрых сохранений нам потребуется IDA и CE. В теории, существует некоторый флаг, который говорит игре в какой момент необходимо сделать сохранение игры, например, при выполнении задания или какого-то триггера местности. И раз игра умеет делать сохранения, то, и мы сможем. Вы можете сказать: “Эй, зачем такие сложности? Есть же телепорт”. К сожалению, телепорт не подходит из-за того, что не умеет сохранять текущее состояние сущностей, которое временами очень важно. Для начала найдем флаг, который говорит, что сохранение вообще существует. После чекпоинта ищем 1, перезагружаем локацию 0, 0100010001000101010000010100010001000010010001010100010101000110 пока не найдем единственный адрес. Вешаем на адрес бряк на запись, триггерим чекпоинт и начинаем исследовать код. Полученная инструкция указывает на код, который выглядит вот так. Дальше, необходимо исследовать функции уходя все глубже в код, но так как игра имеет не особо сложный движок, можно попробовать использовать Proximity View. Это довольно интересная опция, которой можно посмотреть связи между функциями, перекрестными ссылками, а также ссылками на данные. Используя опцию Find Path в Proximity View, говорим IDA построить путь вызовов от функции с проверкой “а существует ли чекпоинт” до переменной, которая отвечает за сохранение. Которая выглядит довольно просто. Установка значению флага 1 и перезапись указателя старых данных и текущих. Изменено 27 октября, 2020 пользователем ChestGlaring 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения