CE mapbranches
-
<div class="iframely-embed"><div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"><a href="https://github.com/celuaru/cemapbranches" data-iframely-url="//iframely.net/api/iframe?align=left&url=https%3A%2F%2Fgithub.com%2Fceluaru%2Fcemapbranches.git&key=ae3f7efe69fd7659776282ad948bd52b"></a></div></div><script async src="//iframely.net/embed.js" charset="utf-8"></script><div style="left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;"><iframe src="https://www.youtube.com/embed/rtzbuNOzIio?rel=0&start=12" style="top: 0; left: 0; width: 100%; height: 100%; position: absolute; border: 0;" allowfullscreen scrolling="no" allow="accelerometer *; clipboard-write *; encrypted-media *; gyroscope *; picture-in-picture *; web-share *;" referrerpolicy="strict-origin"></iframe></div>
(Другие записи: https://celua.ru/topic/113/ветвления-кода-связанные-с-адресом-старые-записи/2)
- На адрес устанавливается брейкпоинт.
- Идем в игру делаем или не делаем что-то
- Начинают срабатывать инструкции на брейкпоинте
- От каждой инструкции начинается трейслог, подобный тому, который есть у CE, но менее тормозной
- Заканчивается трейслог на инструкции, на 100-ом счетчике после ret-а (об этом пункте будет уточнение). Здесь выходим на коневой цикл
- Трейслог останавливается и ожидание следующей инструкции, которая сработает на брейкпоинте, она должна быть отличной
В итоге мы имеем кучу трейслогов начинающихся с адреса работающего с параметром (например, кол-во патронов в обойме) и заканчивающихся на корневом цикле. Также мы собираем данные об адресах с рет-ами и счетчиками.
По этим данным можно нарисовать схему, где ret-ы меняют направление пути прохождения потоком дизассемблерного кода
На скриншотах ниже
Вертикальные линии со кружками -— это ветвь трейслога
Белый кружок — адрес ret-a, который не повторялся
Пунктирный кружок — адрес ret-а, который повторялся. Стрелка от такого пунктирного круга будет указывать на белый круг.По схеме видим, где ret-ы меняют свое направление поднимаясь по рутине в корневом цикле



По плану по визуальной части:
-
Клик на кружок — переход на код
-
Придумать что-то, чтобы стрелки не накладывались друг на друга
-
Установка брейкпоинтов на кружках — становиться красными
-
Легенда. Номер ветви, связанная инструкция, состояние брейкпоинтов. Комментарий к ветви
-
Загрузка/сохранение легенды
Для чего нужно. Для поиска условий, которые включают и выключают ветви кода. Т.е. чтобы можно было это условие быстро найти и изменив его, повторить выполнение кода ветви, которая "пробьётся" из корневого цикла. Таким образом попытаться повторить действие в игре, а если не получаться повторить, то определить дополнительные условия.
Здравствуйте! Похоже, вам интересна эта беседа, но у вас пока нет учетной записи.
Вы устали просматривать одни и те же посты каждый раз, когда заходите на сайт? После регистрации, вам не придётся искать обсуждения в которых вы принимали участие, настройте уведомления о новых сообщениях так как вам это удобно (по электронной почте или уведомлением). У вас появится возможность сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост может стать ещё лучше 💗
Зарегистрироваться Войти