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

Success DelHotkey(char hotkey);

Функция удаляет заданные пользователем "горячие клавиши". При попытке удаления системной или несуществующей комбинации функция возвратит ошибку.

Операнд ‘hotkey’ был рассмотрен в описании функции AddHotKey.

Пример использования:

DelHotkey (“Alt-A”);

Операнд

назначение

Hotkey

Требуемая комбинация клавиш.

Записывается в виде символьной строки. Например, "Alt - A". Могут так же использоваться "Ctrl", "Shift", "Enter" а так же их комбинации.

Return

==return

Пояснения

==1

Успешное завершение

==0

Ошибка

Маркировка позиций для быстрого перемещения методы

Функция

Назначение

void MarkPosition(long ea,long lnnum,long x,long y,long slot,char comment);

Добавляет элемент в список быстрых переходов

long GetMarkedPos(long slot);

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

char GetMarkComment(long slot);

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

IDA поддерживает возможность быстрого перемещения между отдельными фрагментами дизассемблируемого текста с сохранением позиции курсора и относительного положения текста в окне.

Для запоминания текущей позиции необходимо нажать <Alt-N>, а для вызова списка всех запомненных ранее позиций <Ctrl-N>. При этом возникнет следующего вида диалоговое окно:

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

Void MarkPosition(long ea,long lnnum,long X,long y,long slot,char comment);

Функция добавляет новый элемент в список быстрых переходов. Каждый элемент характеризуется следующим набором атрибутов.

Прежде всего, это линейный адрес строки, в которой расположен курсор. Поскольку, часто по одному и тому же адресу расположено несколько строк, то атрибут ‘lnnum’ указывает на требуемую строку, считая от нуля.

Позиция курсора по горизонтали, начиная от левого края окна, задается атрибутом ‘x’, а ‘y’ по вертикали, считая от верхней границы окна. Поскольку курсор жестко связан с выбранной строкой, то IDA прокручивает текст в окне дизассемблера на требуемую величину.

Положение элемента в списке определяется атрибутом Slot. Он может принимать любые значения в интервале от 1 до 20. Элементы не обязательно должны следовать друг за другом. Однако IDA не уничтожает пустые элементы в списке и поэтому задача их упорядочивания ложится на плечи разработчиков скрипта. Ситуация осложняется тем, что существует только один глобальный список, разделяемый одновременно как пользователем, так и всеми скриптами. Прежде, чем заносить новый элемент рекомендуется проверить, что требуемый слот свободен. Если указать слот, выходящий за допустимые границы, то IDA выведет интерактивный диалог для его выбора.

Рассмотрим это подробнее на следующем примере:

╔══[ ]══════════════════════ IDA view-A ════════════════════2═[ ]═╗

seg000:0122 ↑ pop dx ║

seg000:0123 │ pop cx ║

seg000:0124 │ pop bx ║

seg000:0125 │ pop ax ║

seg000:0126 │ retn ║

seg000:0126 sub_0_DD │ endp ║

seg000:0126 Y

seg000:0127 │ ┬ ║

seg000:0127 ; ____________│_│ S U B R O U T I N E _______________║

seg000:0127 │ │ ║

║←─────────────X──────────→↓ Lnnum

seg000:0127 sub_0_127 █ proc near ; CODE XREF: ║

seg000:0127 call sub_0_DD ║

seg000:012A retn ║

seg000:012A sub_0_127 endp ║

seg000:012A ║

seg000:012B ║

seg000:012B ; _______________ S U B R O U T I N E _______________║

seg000:012B ║

seg000:012B ║

seg000:012B sub_0_12B proc near ; CODE XREF: ║

seg000:012B push ax ║

seg000:012C push si ║

seg000:012D push di ­ ║

╚══ 0001012C: sub_0_12B+1 ════════════════════════════════════════╝

MarkPosition(0x10127, 4, 26, 12,1, “MyMark”);

Допустимо существование двух и более объектов по одному и тому же линейному адресу, поскольку IDA идентифицирует их по номеру слота.

Операнд

Пояснения

ea

Линейный адрес начала строки

lnnum

Номер линии, располагающейся по тому же адресу начиная с нуля

X

Горизонтальное положение курсора относительно левой границы окна

Y

Вертикальное положение курсора относительно верхней границы окна

==slot

Пояснения

slot

==1-20

Номер слота

0 | >20

Интерактивный выбор номера слота

Comment

Комментарий к закладке

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