Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Collapse
Brand Logo

CELua[RU]

  1. Главная
  2. Программирование
  3. Плагин-строй
  4. CE mapbranches

CE mapbranches

Запланировано Прикреплена Закрыта Перенесена Плагин-строй
1 Сообщения 1 Posters 646 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • MasterGHM Не в сети
    MasterGHM Не в сети
    MasterGH Администраторы
    написал в отредактировано MasterGH
    #1
    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

Powered by NodeBB | Contributors
СeLua[RU] 2024©
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы