Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ida.final.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6 Mб
Скачать

Объекты #Definition

С каждым элементом (бестиповым байтом) могут быть связаны три объекта – метка, перекрестная ссылка и комментарий. IDA поддерживает два типа меток – метки, определенные пользователем и метки, автоматически сгенерированные IDA, а так же четыре типа комментариев – постоянный комментарий, отображаемый справа от элемента и отделяемый от него знаком «точка с запятой» (обычный ассемблерный комментарий), повторяемый комментарий, отображаемый справа от комментируемого элемента и возле всех ссылок на данный элемент, и два вида многострочных комментариев предваряющих и замыкающих комментируемый элемент. О перекрестных ссылках подробно рассказано в главе «Перекрестные ссылки».

Каждый элемент может иметь не более одной метки и до четырех комментариев различного типа одновременно. Метки и комментарии хранятся в отдельном виртуальном массиве, проиндексированным линейными адресами, а на наличие связанных с элементом (бестиповым байтом) объектом указывают флаги (см. таблицу 16)

В принципе без флагов, ссылающихся на объекты можно было бы и обойтись, но тогда бы пришлось при отображении каждой ячейки просматривать все виртуальные массивы на предмет поиска объектов, ассоциированных с данным линейными адресом, что отрицательно сказалось бы на производительности дизассемблера. Напротив, перенос этой информации в флаги позволяет ускорить работу – обращение к виртуальному массиву происходит только в тех случаях, когда с ячейкой заведомо связан какой-то объект

Разрушение элемента не вызывает автоматического уничтожение связанных с ним объектов – каждый объект должен быть удален по отдельности соответствующими функциями.

константа

#

пояснения

FF_COMM

0x00000800

комментарий

FF_REF

0x00001000

перекрестная ссылка

FF_LINE

0x00002000

много строчечный комментарий

FF_NAME

0x00004000

метка, определенное пользователем

FF_LABL

0x00008000

метка, автоматически сгенерированное IDA

FF_FLOW

0x00010000

перекрестная ссылка с предыдущей инструкции

FF_VAR

0x00080000

переменная

Таблица 16 Флаги, указывающие на наличие связанных объектов

Сводная таблица функций

функции, создающие и уничтожающие объекты

имя функции

краткое описание

success MakeName (long ea, char name)

создает метку

success JmpTable (long jmpea, long tableea, long nitems, long is32bit)

создает таблицу переходов

success MakeComm (long ea, char comment)

создает постоянный комментарий

success MakeRptCmt (long ea, char comment)

создает повторяемый комментарий

void ExtLinA (long ea,long n, char line)

создает строку комментария перед элементом

void ExtLinB (long ea,long n, char line);

создает строку комментария за элементом

void DelExtLnA (long ea, long n)

удаляет строку комментария перед элементом

void DelExtLnB (long ea, long n)

удаляет строку комментария за элементом

void MakeVar(long ea)

помечает элемент, флажком «переменная»

функции, возвращающие элементы

имя функции

краткое описание

char Name (long ea)

возвращает имя метки, при необходимости выполняя замену недопустимых символов

char GetTrueName (long ea)

возвращает имя метки

char Comment (long ea)

возвращает постоянный комментарий

char RptCmt (long ea)

возвращает повторяемый комментарий

char LineA (long ea,long num);

возвращает строку комментария, стоящего до элемента

char LineB (long ea,long num);

возвращает строку комментария, стоящего за элементом

функции, поиска объектов

имя функции

краткое описание

long LocByName (char name)

возвращает линейный адрес метки с заданным именем

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]