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

Char GetFunctionName(long ea);

Возвращает имя функции. Если указанный адрес не принадлежит ни одной из функций, то возвращается пустая строка.

Поскольку функции без имени не бывает, то неоднозначной ситуации не возникает.

Операнд

Пояснения

Ea

Любой линейный адрес, принадлежащий функции

Return

Завершение

Пояснения

!=””

Имя функции

“”

Ошибка

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

dseg:025E __cleanup proc near

dseg:025E mov es, cs:DGROUP@

dseg:0263 push si

dseg:0264 push di

Message(“%s \n”,

GetFunctionName(0x10263)

);

__cleanup

Void SetFunctionCmt(long ea, char cmt, long repeatable);

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

Существует возможность повторять тот же комментарий в точке вызова функции (так называемый repeatable comment). Для этого необходимо установить флаг ‘repeatable’ равным единице.

Например:

SetFunctionCmt(0x10271,”Hello IDA 4.0”,1);

dseg:0271 ; Hello IDA 4.0

dseg:0271 ; Attributes: static

dseg:0271

dseg:0271 __checknull proc near ; CODE XREF: sub_0_3C7+2Cp

dseg:0271 retn

dseg:0271 __checknull endp

Если перейти по перекрестной ссылке к месту вызова функции, то там будет можно обнаружить следующее:

dseg:03F0 call __restorezero

dseg:03F3 call __checknull ; Hello IDA 4.0

dseg:03F6 cmp [bp+arg_2], 0

dseg:03FA jnz loc_0_40F

Если в строке комментария будет присутствовать символ переноса, то экран будет выглядеть так:

SetFunctionCmt(0x10271,”Hello \nIDA 4.0”,1);

dseg:0271 ; Hello

dseg:0271 ; IDA 4.0

dseg:0271 ; Attributes: static

dseg:03F3 call __checknull ; Hello

dseg:03F3 ; IDA 4.0

dseg:03F6 cmp [bp+arg_2], 0

Не рекомендуется перегружать листинг повторяемыми комментариями. Ведь всегда можно обратиться за разъяснениями к самой функции.

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

Обратите внимание, каждая функция может обладать комментариями сразу двух типов, но в заголовке будет отображаться только один из них – ‘regular’.

Например:

SetFunctionCmt(0x10271,”Hello IDA 4.0”,1);

SetFunctionCmt(0x10271,”Hello World”,0);

dseg:0271 ; Hello World

dseg:0271 ; Attributes: static

dseg:03F3 call __checknull ; Hello IDA 4.0

dseg:03F6 cmp [bp+arg_2], 0

Операнд

Пояснения

Ea

Любой линейный адрес, принадлежащий функции

Cmp

Строка комментария, включая символ переноса

Repeatable

Флаг

Пояснения

0

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

1

Повторяемый комментарий

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