Обновление2. Ветвления кода связанные с адресом
1. На адрес устанавливается брейкпоинт.
2. Идем в игру делаем или не делаем что-то
3. Начинают срабатывать инструкции на брейкпоинте
4. От каждой инструкции начинается трейслог, подобный тому, который есть у CE, но менее тормозной
5. Заканчивается трейслог на инструкции, на 100-ом счетчике после ret-а (об этом пункте будет уточнение). Здесь выходим на коневой цикл
6. Трейслог останавливается и ожидание следующей инструкции, которая сработает на брейкпоинте, она должна быть отличной
В итоге мы имеем кучу трейслогов начинающихся с адреса работающего с параметром (например, кол-во патронов в обойме) и заканчивающихся на корневом цикле. Также мы собираем данные об адресах с рет-ами и счетчиками.
По этим данным можно нарисовать схему, где ret-ы меняют направление пути прохождения потоком дизассемблерного кода
На скриншотах ниже
Вертикальные линии со кружками -— это ветвь трейслога
Белый кружок — адрес ret-a, который не повторялся
Пунктирный кружок — адрес ret-а, который повторялся. Стрелка от такого пунктирного круга будет указывать на белый круг.
По схеме видим, где ret-ы меняют свое направление поднимаясь по рутине в корневом цикле
По плану по визуальной части:
1. Клик на кружок — переход на код
2. Придумать что-то, чтобы стрелки не накладывались друг на друга
3. Установка брейкпоинтов на кружках — становиться красными
4. Легенда. Номер ветви, связанная инструкция, состояние брейкпоинтов. Комментарий к ветви
5. Загрузка/сохранение легенды
Для чего нужно. Для поиска условий, которые включают и выключают ветви кода. Т.е. чтобы можно было это условие быстро найти и изменив его, повторить выполнение кода ветви, которая "пробьётся" из корневого цикла. Таким образом попытаться повторить действие в игре, а если не получаться повторить, то определить дополнительные условия.
2 Комментария
Рекомендуемые комментарии
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти