Анимация
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

INF START SS

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

Однако, это не гарантирует, что полученное значение будет тождественно действительному. Впрочем, такая точность на практике и не трубятся. В крайнем случае можно принудительно указать требуемый базовый адрес загрузки или изменить непосредственно само значение INF START SS.

Пример:

Message("0x%x \n",GetLongPrm(INF START SS));

0x1000

SetLongPrm(INF START SS,0);

Message("0x%x \n",GetLongPrm(INF START SS));

INF START CS

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

Пример:

Message("0x%x \n",GetLongPrm(INF START CS));

0x1000

INF MAIN

В файле определений IDC.IDC сообщается, что это длинное поле содержит адрес процедуры main(), однако, при попытке его чтения всегда возвращается ошибка BADADDR. Например:

Message("0x%X \n",GetLongPem(INF MAIN));

0xFFFFFFFF

INF SHORT DN

Это длинное поле хранит короткую форму вывода «замангленных» имен. Назначение отдельных битов не описано в файле idc.idc, в котором содержится ссылка на demangle.hpp, входящий в состав IDA SDK.

ФЛАГ

ЗНАЧЕНИЕ

MNG DEFNEAR

0x00000000

Подавлять в именах ключевое слово near

MNG DEFFAR

0x00000002

Подавлять в именах ключевое слово far

MNG DEFHUGE

0x00000004

Подавлять в именах ключевое слово huge

MNG DEFNONE

0x00000006

Выводить все

MNG NODEFINIT

0x00000008

Подавлять вывод всего, кроме основного имени

MNG NOUNDERSCORE

0x00000010

Подавлять вывод подчерков для ccall, pascal...

MNG NOTYPE

0x00000020

Подавлять вывод типа параметров

MNG NORETTYPE

0x00000040

Подавлять вывод типа взращаемого функцией значения

MNG NOBASEDT

0x00000080

Подавлять вывод базовых типов



MNG NOCALLC

0x00000100

Подавлять вывод слов pascal\ ccall и подобных

MNG NOPOSTFC

0x00000200

Подавлять вывод постфиксного const

MNG NOSCTYP

0x00000400

Подавлять вывод ключевых слов public\private\protected

MNG NOTHROW

0x00000800

Подавлять вывод описания throw

MNG NOSTVIR

0x00001000

Подавлять вывод ключевых слов static и virtual

MNG NOECSU

0x00002000

Подавлять вывод ключевых слов class\struct\union\enum

MNG NOCSVOL

0x00004000

Всюду подавлять вывод ключевых слов const и volatile

MNG NOCLOSUR

0x00008000

Подавлять вывод closure (для компиляторов Borlnand)

MNG SHORT S

0x00010000

Выводить signed (int) в формате s(int)

MNG SHORT U

0x00020000

Выводить unsigned (int) в формате u(int)

MNG ZPT SPACE

0x00040000

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

MNG IGN ANYWAY

0x00080000

Игнорировать постфикс nn в конце строки

MNG IGN JMP

0x00100000

Игнорировать префикс j в начале строки

MNG MOVE JMP

0x00200000

Сохранять префикс j в размангленных именах

Подробнее об этом можно найти в описании функции Demangle.

INF LONG DN

Это длинное поле хранит полный формат вывода «замангленных» имен. Представляет собой комбинацию флагов, назначение которых описано выше.

INF DATATYPES

Это длинное поле хранит разрешенные к использованию типы данных, то есть такие, что будут поочередно перебираться, скажем, при нажатии D.

Файл IDC.IDC не содержит расшифровки отдельных битов этого поля, но в интерактивно диалоге настойки (~Options \ Setup date types ) типы данных перечислены в порядке следования флагов в этом поле!


ЗНАЧЕНИЕ

Байт

Слово

Двойное слово

Float

0x10

Четвертное слово

0x20

Double



0x40 iTbyte

0x80

Упакованное real

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

Message("%b \n", GetLongPrm(INF DATATYPES));

INF STRTYPE

Это длинное поле хранит текущий стиль ASCII - строк. Первый байт представляет собой один из следующих флагов.

ФЛАГ

ЗНАЧЕНИЕ

Строка не претворена полем длины

ASCSTR PASCAL

Стиль Pascal - строка предваряется байтом длины

.data:00408040 aHeloSailor db OCh, Helo,Sailor!

ASCSTR LEN2

Стиль WinPascal - строка предваряется словом длины

.data:00408040 aHeloSailor dw OCh, db Helo,Sailor!

ASCSTR UNICODE

Стиль UNICODE

~H~,0,~e~,0,4~,0,~o~,0,~,~,0,~S~,0,~a~,0,~i~,0,4~,0,~o~,0,~r~,0,~!~

ASCSTR LEN4

Стиль Delphi - 4 байта на длину

.data:00408040 aHeloSailor dw OCh, dw 0, db Helo,Sailor!

Если первый байт не равен нулю, то, значит, впереди строки находится поле, определяющие его длину. Иначе используется символ конца строки. Его определяют второй и третий байт поля INF STRTYPE.

Если второй символ будет равен \0, то он будет проигнорирован. Поэтому если необходимо задать два типа завершающих символов (например, ноль и $), то \0 следует указывать первым из них.

Пример:

Message(

%x \n",GetLongPrm(INF STRTTYPE));

SetLongPrm(INF STRTTYPE,$»0x10); INF AF2

Это длинное беззнаковое поле хранит дополнительные флаги анализатора.

ФЛАГ

ЗНАЧЕНИЕ

AF2 JUMPTBL

Выявлять и создавать таблицы переходов

AF2 DODATA

Сворачивать сегмент данных в последнем проходе

AF2 HFLIRT

Автоматически скрывать стандартные библиотечные функции (этот флаг не описан в файле IDC.IDC)



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