Анимация
JavaScript
|
Главная Библионтека seg000:0498 sub 0 48B seg000:0498 seg000:0499 ; seg000:0499 seg000:0499 seg000:0499 endp ; sp = -OAh locret 0 499: retn Message("%b \n", GetFunctionFlags(0x1048B) FUNC LIB Таким флагом отмечены стандартные «библиотечные» функции. То есть те, чьи сигнатуры известны FLIRT. text text text text text text text text text text text text text text text text text text text text 004010FF 004010FF 004010FF 004010FF 004010FF 004010FF 004010FF 004010FF 00401106 00401108 0040110D 0040110D 0040110D 00401111 00401116 0040111B 00401121 00401122 00401123 00401123 ; Attributes: amsg exit arg 0 library function proc near = dword ptr 4 loc 0 40110D: amsg exit call push call push call retn endp dword 0 4 08758, 2 short loc 0 40110D FF MSGBANNER [esp+arg 0] NMSG WRITE 0FFh off 0 408050 ecx ecx Message("%b \n", GetFunctionFlags(0x4010FF) FUNC FRAME Функция использует в качестве указателя на кадр стека регистр BP (EBP). IDA определяет это отслеживая последовательность PUSH BP MOV BP, SP Большинство современных оптимизирующих компиляторов отказались от такого подхода, и адресуют локальные переменные и аргументы непосредственно по регистру ESP. IDA распознает такую ситуацию и отслеживает значение ESP по ходу исполнения процедуры, освобождая пользователя от львиной доли работы. seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 seg000 20 2 20 20 2 20 2 20B8 20B8 20B8 20B9 20BB 20BB 20BD 20BE 20C0 20C4 20C6 20C9 ; Attributes: sub 0 20B8 var 8 0 var 6B var 62 bp-based frame proc near
Message("%b \n", GetFunctionFlags(0x4010FF) 10000 Обратите внимание, что IDA распознала эту комбинацию, даже когда команды push bp и mov bp,sp оказались достаточно разнесены. FUNC USERFAR Этот атрибут IDA устанавливает, когда пользователь вручную меняет тип функции с NEAR на FAR, вызывая диалог Modify Function с помощью команды меню ~ Edit \ Function \ Edit Function. Обратите внимание, что это не относится к вызовам SetFunctionFlagsl Последняя устанавливает именно тот набор атрибутов, который ей передается. 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 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [ 55 ] 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |