Перейти к содержанию
  • записи
    104
  • комментариев
    125
  • просмотров
    15 628

Трассеровка по ретам. Скриншот


MasterGH

731 просмотр

58d6b38d1f7df_.thumb.png.f7c162aa5e5878b

 

На скриншоте 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 Комментариев


Рекомендуемые комментарии

Комментариев нет

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.