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

Inf_listnames

Это однобайтовое беззнаковое поле содержит атрибуты имен, автоматически включаемых в Список Имен (Name List).

LN_NORMAL

0x01

Имя без атрибутов (по умолчанию)

LN_PUBLIC

0x02

Имя с атрибутом public

LN_AUTO

0x04

Автогенерируемое имя

LN_WEAK

0x08

Имя с атрибутом weak

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));

0

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.

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