
Tenet - это плагин IDA Pro для изучения трассов выполнения. Цель этого плагина - обеспечить более естественные человеческие элементы управления для навигации по следам выполнения против данного двоичного файла. Основа этой работы связана с желанием исследовать новые или инновационные методы для изучения и дистиллы сложных моделей выполнения в программном обеспечении.
Для получения дополнительного контекста об этом проекте, пожалуйста, прочитайте блог о его первоначальном выпуске.
Особая благодарность Qira / Geohot et al. для вдохновения.
Tenet-это кроссплатформенный (Windows, Macos, Linux) плагин Python 3. Это требует нулевых сторонних зависимостей, что делает код как портативным, так и простым в установке.
Из консоли Python вашего Disesssembler запустите следующую команду, чтобы найти свой каталог плагинов:
import idaapi, os; os.path.join(idaapi.get_user_idadir(), "plugins") Скопируйте содержимое /plugins/ плагины репозитория в список.
Перезагрузите свой разборщик.
Этот плагин поддерживается только для IDA 7.5 и новее.
После правильного установки в Disassssssembler будет доступна новая запись меню. Это может быть использовано для загрузки извне составленных трассов выполнения в принцип.

Поскольку это первоначальный выпуск, Тенет принимает только простые человеческие текстовые следы. Пожалуйста, обратитесь к Tracing Readme в этом репозитории для получения дополнительной информации о формате трассировки, ограничениях и эталонных трассерах.
Используя Tenet, плагин будет «рисовать» следы, чтобы указать поток выполнения вперед (синий) и назад (красный) из вашей нынешней позиции в трассировке активного выполнения.

Чтобы step вперед или назад во времени, вы просто прокручиваете, падая через временную шкалу на правой стороне разборщика. Чтобы step over вызовы функций, удерживайте SHIFT во время прокрутки.
Сроки следов будут пришвартованы на правой стороне разборка. Этот виджет используется для визуализации различных типов событий вдоль временной шкалы трассировки и выполнения базовой навигации, как описано выше.

Нажав и перетаскивая по временной шкале , можно увеличить масштаб на определенном разделе трассировки выполнения. Это действие может повторить любое количество раз, чтобы достичь желаемой гранулярности.
Двойное щелчок по указателю инструкции в окне регистров выделяет его красным, показывая все места, которые инструкция была выполнена через временную шкалу трассировки.

Чтобы прыгать между казнями, прокрутите или вниз, парят указатель выделенного инструкции .
Кроме того, вы можете щелкнуть правой кнопкой мыши в списке разборки и выбрать одну из записей на основе навигации, чтобы быстро обратиться к выполнению интересующей инструкции.

Нативная Hotkey F2 также может использоваться для установки точек останова на произвольных инструкциях.
Дважды щелкнув байт в представлениях стека или памяти, вы сразу же увидите все чтения/записи по этому адресу, визуализируемому по временной шкале трассировки. Желтый указывает на чтение памяти, синий указывает на запись памяти.

Точки останова памяти могут перемещаться с использованием той же методики, описанной для точек выполнения. Дважды щелкните байт и прокрутите, парят выбранную байт , чтобы искать трассировку для каждого из его доступа.
Кношение правой кнопкой мыши, представляющий интерес, даст вам варианты для поиска между памятью / записи / доступа, если есть конкретное навигационное действие, которое вы имеете в виду.

Чтобы перейти по представлению памяти к произвольному адресу, нажмите на представление памяти и нажмите G , чтобы ввести адрес адрес или символ базы данных, чтобы найти представление.
Можно установить точку разрыва памяти через область памяти, выделяя блок памяти и дважды щелкнув ее, чтобы установить точку останова доступа.

Как и в случае с нормальными точками разрыва памяти, зависание области и прокрутка может использоваться для прохождения между доступами, сделанными в выбранную область памяти.
В обратной инженерии довольно часто встречаются ситуации, когда вы спрашиваете себя : «Какие инструкции установили этот регистр на его текущее значение?»
Используя Tenet, вы можете обратиться к этой инструкции за один щелчок.

Поиск задом на сегодняшний день является наиболее распространенным направлением для перемещения по изменениям регистра ... но для ловкости вы также можете обратиться к следующему назначению регистрации, используя синюю стрелку справа от регистра.
Простая «оболочка» предназначена для перемещения к конкретным временным меткам в следе. Вставка (или набрать ...) Нехватка времени в оболочке с запятыми или без запятых будет достаточно.

Используя восклицательный знак, вы также можете искать указанный «процент» в след. Вход !100 будет стремиться к окончательной инструкции в следе, где !50 будет искать приблизительно 50% пути через след. !last будет стремиться к последней судоходной инструкции, которую можно просмотреть в Disassssembler.
Тенет отправляется с двумя темами по умолчанию - «легкой» темой и «темной». В зависимости от цветов, которые в настоящее время используются вашим диспсассемблером, Тенет попытается выбрать тему, которая кажется наиболее подходящей.

Файлы темы хранятся как простые JSON на диске и очень настраиваются. Если вы не довольны темами или цветами по умолчанию, вы можете создать свои собственные темы и просто бросить их в каталог пользовательских тем.
Tenet запомнит вашу теме предпочтение для будущих нагрузок и использования.
Время и мотивация Разрешение на финансирование, будущая работа может включать в себя:
Я приветствую внешние взносы, проблемы и запросы функций. Пожалуйста, сделайте любые запросы на привлечение в develop отрасли этого репозитория, если вы хотите, чтобы они были рассмотрены для будущего выпуска.