Анимация
JavaScript
|
Главная Библионтека INF START AF Это поле содержит короткое целое, управляющие настойками анализатора IDA. Иначе к ним можно добраться через меню «Options\ Analysis options\ Kernel analyser options 1» Все они доступны как для чтения, так и для модификации. Назначение битов флагов приведены ниже.
AF FIXUP если этот бит установлен, то IDA будет использовать информацию из таблицы перемещаемых элементов и представлять соответствующие непосредственные операнды в виде смещений или сегментов. Например:
Значение перемещаемого элемента, выделенного красным цветом, равно 0x1. В любом случае IDA автоматически суммирует его с адресом загрузки (в нашем примере 0x10000). Если флаг AF FIXUP установлен, то IDA преобразует непосредственный операнд в сегмент, в противном же случае оставит его без изменений. AF MARKCODE Установка этого флага приведет к тому, что IDA будет находить все типичные для выбранного процессора последовательности инструкций и будет преобразовывать их в код, даже если на него отсутствуют явные ссылки. Такой прием не совсем безгрешен, но позволяет заметно поднять качество дизассемблирования и переложить часть рутиной работы на плечи дизассемблера. Например, для 80x86 процессоров типичной последовательностью инструкций будет инициализация регистра BP (EBP) при входе в процедуру. .text:00401020 .text:00401021 8B EC push ebp mov ebp, esp Обратите внимание, что этот механизм запускается только во время загрузки файла и динамическое его изменение во время работы дизассемблера будет проигнорировано. AF UNK Этот флаг будучи установленным приводит к тому, что IDA будет каждый раз при пометке инструкции (инструкций) как unexplored автоматически отслеживать все потерянные перекрестные ссылки, помечая соответствующие регионы как unexplored. AF CODE IDA умеет трассировать следование инструкций, отслеживая условные переходы и вызовы процедур. Например, если встретится: seg000:22C3 E8 5F 00 call sub 0 2325 то можно быть уверенным, что IDA преобразует в инструкции и код, находящийся по смещению 0x2325. В противном случае (если бит AF CODE сброшен) это выполнено не будет. Более того, при загрузке IDA не дизассемблирует ни одной инструкции, предоставляя это пользователю сделать самостоятельно. Этот флаг имеет смысл сбрасывать всякий раз, когда IDA неправильно отслеживает ссылки или же вам нужно изучить только отдельно взятый фрагмент кода и дизассемблировать весь файл не к чему. AF PROC Автоматически создавать функции на месте вызова инструкцией call. В противном случае функции будут создаваться только для библиотечных процедур. Например: AF PROC == 0 AF PROC == 1 Seg00:0124 call loc 0 284 I Seg00:0124 call loc 0 284 Seg000:0284 loc 0 284: seg000:0284 push seg000:0285 mov seg000:0288 int seg000:028A ret 3500h Seg000:0284 sub 0 284 proc near seg000:0284 push ds seg000:0285 mov ax, 3500h seg000:0288 int 21h seg000:028A ret seg000:02C6 sub 0 284 endp AF USED В документации на IDA сообщается, что сброс этого бита приводит к тому, что IDA выполняет поверхностный анализ программы. То есть примитивное дизассемблирование, без создания перекрестных ссылок и дополнительных проверок. Однако, практически значение этой опции никак не влияет на дизассемблируемый текст и в обоих случаях получаются идентичные листинги. AF FLIRT Уникальная FLIRT технология позволяет IDA определять имена библиотечных функций наиболее популярных компиляторов по их сигнатурам. Сравните два примера:
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 |