Анимация
JavaScript


Главная  Библионтека 

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 ]

Создавать или несоздавать сегмент для бинарных файлов. По умолчанию всегда создается по крайней мере один сегмент. Эту можно выключть когда расставить сегменты вы хотите по своему усмотрению (например, при анализе само-загружамеых модулей). Но создадать хотя бы один сегмент необходимо в любом случае. Внутренняя архитекрура IDA такова, что большинство команд работает только с сегментамии. Попытка дизассемблировать фргамент, не принадлежащий ни к одному из сегментов вызовет протест со стороны IDA:

This command cant be applied to the addresses without a segment.

Create a segment first.

Однако, другие команды, такие например, чтение\запись памяти будут успешно работать и могут быть использованы, например, в скрипте расшифровки файла. В этом случае, разумеется в создании сегмента никакой необходимости нет.

[ ] Load resources

Указывает на необходимость загрузки ресурсов. Актуально только для PE и NE файлов. По умолчанию выключено, однако довольно часто в ресурсах расположены текстовые строки или даже некоторые данные, и в этих случиях ресурсы необходимо загрузить. В остальных же случаях это только лишный расход времени и памяти.

[X] Rename DLL entries

IDA умеет распознавать большинтство библиотечных функций (подробнее об этой уникальной возможности в главе посвященной технолгии FLIRT). При этом она может заменять ипортируемые по ординалу функции их непосредственными именами. Если же по каким-то причинам для вас это не примемлимо, то данную опцию необходимо отключить. При этом символьные имена IDA добавит в повторямые комментарии. Сравните:

; Imports from MFC42.DLL

?DoMessageBox@CWinApp@@UAEHPBDII@Z dd ? ?SaveAllModified@CWinApp@@UAEHXZ dd ?

?InitApplication@CWinApp@@UAEHXZ dd ?

; Imports from MFC42.DLL

MFC42 2512 dd ?

?DoMessageBox@CWinApp@@UAEHPBDII@Z: MFC42 5731 dd ?

?SaveAllModified@CWinApp@@UAEHXZ: MFC42 3922 dd ?

DATA XREF: j MFC42 2512r DATA XREF: j MFC42 57 31r DATA XREF: j MFC42 3922r

?InitApplication@CWinApp@@UAEHXZ: MFC42 1089 dd ? ; DATA XREF: j MFC42 1089r

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



[ ] Manual load

"Ручная" загрузка некоторых типов файлов. Главным образом полезна для NE\LX\LE форматов. При этом пользователь получает возможность для каждого из объектов файла задать селектор и базовый адрес загрузки. Появится диалог следующего вида:


Start Address указывает по какому адресу будет расположен загружаемый объект. Это значение вычисляется дизассемблером автоматически и обычно нет причин менять его. Подробнее об этом будет рассказано в главе, посвященной анализу vxd файлов.

Селектор, разумеется не имеет никакого отношения к исследуемому файлу, а непосредственно к дизассемблеру, а точнее организации внутренней (вирутальной) памяти IDA. Сейчас мы не будем задерживать на этом внимание, отметим только, что последний необходим для доступа к сегментам, написанных вами скриптов, а в остальных случаях его значение будет "прозрачно" для пользователя.

Базовый адрес связан с виртуальным адресом следующей формулой:

VirtualAddress = LinearAddress

(SegmentBase << 4)

Т.е. одному и тому же виртуальному адресу могут соответствовать различные пары SegmentBase:LinearAddress. Подробности в главе, посвященной организации вирутальной памяти IDA.

Stop loading file разумеется означает прекращение загрузки остальных объектов (сегментов) файла. Может быть использовано для экономии времени - если остльные объекты\секции вас не интересуют, то к чему тратить время\ресурсы на их загрузку?




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

[X] Make imports section

По умолчанию IDA преобразует секцию импорта .idata PE файлов в набор директив extern и усекает ее. Обычно это работает нормально, но никто не гарантирует, что в секции импорта не окажется размещенными некоторые данные. Так, например, поступают некоторые вирусы, размещая свое тело в таблице адресов. Разумеется, при этом IDA их "не увидит", В таких случаях Make imports section следует отключить.

На этом обзор описания загрузки файлов будем считать законченным. Интерактивной работе с 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 ]