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

Func_frame

Функция использует в качестве указателя на кадр стека регистр BP (EBP). IDA определяет это отслеживая последовательность

PUSH BP

MOV BP, SP

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

seg000:20B8 ; Attributes: bp-based frame

seg000:20B8

seg000:20B8 sub_0_20B8 proc near

seg000:20B8

seg000:20B8

seg000:20B8 var_80 = byte ptr -80h

seg000:20B8 var_6B = byte ptr -6Bh

seg000:20B8 var_62 = byte ptr -62h

seg000:20B8

seg000:20B8 push bp

seg000:20B9 mov ah, 2Fh

seg000:20BB int 21h

seg000:20BB

seg000:20BD push bx

seg000:20BE mov bp, sp

seg000:20C0 sub sp, 80h

seg000:20C4 mov ah, 1Ah

seg000:20C6 lea dx, [bp+var_80]

seg000:20C9 int 21h

Message(“%b \n”,

GetFunctionFlags(0x4010FF)

);

10000

Обратите внимание, что IDA распознала эту комбинацию, даже когда команды push bp и mov bp,sp оказались достаточно разнесены.

Func_userfar

Этот атрибут IDA устанавливает, когда пользователь вручную меняет тип функции с NEAR на FAR, вызывая диалог ‘Modify Function’ с помощью команды меню ~ Edit \ Function \ Edit Function.

Обратите внимание, что это не относится к вызовам SetFunctionFlags! Последняя устанавливает именно тот набор атрибутов, который ей передается.

Func_hidden

Этот атрибут устанавливается у «свернутых» функций. Свернуть любую функцию можно однократным нажатием Gray ‘-‘, переместив курсов в ее границы. Кроме этого, в зависимости от настоек, IDA может автоматически сворачивать все библиотечные функции для экономии места.

dseg:027B ; [00000009 BYTES: COLLAPSED FUNCTION sub_0_27B. PRESS KEYPAD "+" TO EXPAND]

Message(“%b \n”,

GetFunctionFlags(0x4010FF)

);

100000

Заметим, что в результате упущения этот тип не определен в IDC.IDC и что бы им пользоваться необходимо это сделать самостоятельно, внеся новую строчку:

#define FUNC_HIDDEN 0x00000040L // a hidden function

Все атрибуты функция IDA отображает в виде комментариев, расположенных в начале функции.

dseg:0271 ; Attributes: library function

dseg:0271

dseg:0271 __checknull proc near

dseg:0271 retn

dseg:0271 __checknull endp

dseg:0272 ; Attributes: library function bp-based frame

dseg:0272

dseg:0272 __terminate proc

Операнд

Пояснения

Ea

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

Return

Завершение

Пояснения

!=BADADDR

Набор атрибутов функции (смотри таблицу выше)

BADADDR

Ошибка

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