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

    CE mapbranches

    Запланировано Прикреплена Закрыта Перенесена Плагин-строй
    1 Сообщения 1 Posters 660 Просмотры 1 Watching
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • MasterGHM Не в сети
      MasterGH Администраторы
      отредактировано MasterGH

      MapBranches

      Описание

      (Другие записи: https://celua.ru/topic/113/ветвления-кода-связанные-с-адресом-старые-записи/2)

      1. На адрес устанавливается брейкпоинт.
      2. Идем в игру делаем или не делаем что-то
      3. Начинают срабатывать инструкции на брейкпоинте
      4. От каждой инструкции начинается трейслог, подобный тому, который есть у CE, но менее тормозной
      5. Заканчивается трейслог на инструкции, на 100-ом счетчике после ret-а (об этом пункте будет уточнение). Здесь выходим на коневой цикл
      6. Трейслог останавливается и ожидание следующей инструкции, которая сработает на брейкпоинте, она должна быть отличной

      В итоге мы имеем кучу трейслогов начинающихся с адреса работающего с параметром (например, кол-во патронов в обойме) и заканчивающихся на корневом цикле. Также мы собираем данные об адресах с рет-ами и счетчиками.

      По этим данным можно нарисовать схему, где ret-ы меняют направление пути прохождения потоком дизассемблерного кода

      На скриншотах ниже
      Вертикальные линии со кружками -— это ветвь трейслога
      Белый кружок — адрес ret-a, который не повторялся
      Пунктирный кружок — адрес ret-а, который повторялся. Стрелка от такого пунктирного круга будет указывать на белый круг.

      По схеме видим, где ret-ы меняют свое направление поднимаясь по рутине в корневом цикле

      1cbcd3d0-9724-4f79-8586-c53a70388824-image.png

      b9062c23-18da-4e84-8055-4cb2e36a5a94-image.png

      9309d64f-ac96-4919-b7a1-1d67e58590b3-image.png

      По плану по визуальной части:

      1. Клик на кружок — переход на код

      2. Придумать что-то, чтобы стрелки не накладывались друг на друга

      3. Установка брейкпоинтов на кружках — становиться красными

      4. Легенда. Номер ветви, связанная инструкция, состояние брейкпоинтов. Комментарий к ветви

      5. Загрузка/сохранение легенды

      Для чего нужно. Для поиска условий, которые включают и выключают ветви кода. Т.е. чтобы можно было это условие быстро найти и изменив его, повторить выполнение кода ветви, которая "пробьётся" из корневого цикла. Таким образом попытаться повторить действие в игре, а если не получаться повторить, то определить дополнительные условия.

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

      • 1 / 1
      • Первое сообщение
        Последнее сообщение
      Powered by NodeBB | Contributors
      СeLua[RU] 2025©