Трассеровка по ретам. Скриншот
На скриншоте 22 ветви трассеровки от адреса патронов не входя в call-ы до корневого цикла. Корневой цикл определяется, когда поиск происходит более трех секунд и не находит ничего. Вполне хватает этого времени. Буду еще повторно тестить и проверять доходит ли он цикла или надо еще что-то придумывать.
Желтым выделяется точка, вертикальная полоса ветви и связи с такими же узлами. Узел это адрес выхода из ret
Внизу ряд счетчиков от 00 до 99. Если более 99 то отсчет заного. Показывает дианамику обращения к ветвям после нахождения корневого цикла
Есть еще несколько функций, которых не видно на скриншоте — в контекстном меню.
Анализ можно запустить из окна CE из главной таблицы, выделив адрес и опцию либо на чтение, либо на доступ.
При тестах увидел, что логи неполные. Например, первый кружок это инструкция читающая патроны очень часто. От этой инструкции идут вверх множество вариантов ветвей,а у меня один вариант — вертикальная полоска с кружками. От первого круга надо сделать ветвление влево и вправо.
Занялся модернизацией этого рисования и оптимизацией. Например, чтобы определить является ли проход по ret, то не нужен дизассемблер. Залез в доки и посмотрел опкоды
function IsRet(address)
local value = readBytes(address,1, false)
return value == 0xC3 or value == 0xCB or value == 0xC2 or value == 0xCA
end
Скорость трассеровки должна в несколько раз увеличиться. К сожалению, смогу это узнать, когда перепишу текущий плагин.
Там были уже сделаны изменения (все еще сырое для публикации плагина, пока не публикую)
Цитата- Нумерация ветвей
- Клик на круг — переход в дефоттный дизассемблер
- Подсвечивать выбранный круг
- Перерасчет позиций, когда поменялся размер окна
- Счетчики выполнений инструкций срабатывающих к обращению на адрес
- Изменен способ рисования связей между ветвями
- Контекстное меню Показать ветку
- Контекстное меню Скрыть ветку
- На скрытой ветви не показываются связи упрощая обзор. Код поднимаеться снизу вверх. Если одна ветвь ниже другой, то можно её скрыть.
Ориентируемся по счетчикам хитов на инструкции
- Контекстное меню Сброс хитов
- Оптимизация поиска корневого цикла
- Выделение связей
- Оптимизация рисования новых свзей
- Контекстное меню пауза/продолжение
- Запуск из контекстного меню при выделеии адреса в главной таблице
- При закрытии окна снимаются все брейкпоинты
- Возможность ставить логи на запись из контекстного меню и на чтение в главной таблице CE
0 Комментариев
Рекомендуемые комментарии
Комментариев нет
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти