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

Inf_long_dn

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

Inf_datatypes

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

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

БИТ

ЗНАЧЕНИЕ

0x1

Байт

0x2

Слово

0x4

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

0x8

Float

0x10

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

0x20

Double

0x40

Tbyte

0x80

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

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

Message("%b \n", GetLongPrm(INF_DATATYPES));

111

Inf_strtype

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

ФЛАГ

ЗНАЧЕНИЕ

0

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

ASCSTR_PASCAL

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

.data:00408040 aHeloSailor db 0Сh, 'Helo,Sailor!'

ASCSTR_LEN2

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

.data:00408040 aHeloSailor dw 0Сh, db 'Helo,Sailor!'

ASCSTR_UNICODE

Стиль UNICODE

`H`,0,`e`,0,`l`,0,`o`,0,`,`,0,`S`,0,`a`,0,`i`,0,`l`,0,`o`,0,`r`,0,`!`

ASCSTR_LEN4

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

.data:00408040 aHeloSailor dw 0Сh, dw 0, db 'Helo,Sailor!'

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

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

Пример:

Message(“%x \n”,GetLongPrm(INF_STRTTYPE));

0

SetLongPrm(INF_STRTTYPE,’$’>>0x10);

INF_AF2

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

ФЛАГ

БИТ

ЗНАЧЕНИЕ

AF2_JUMPTBL

0x1

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

AF2_DODATA

0x2

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

AF2_HFLIRT

0x4

Автоматически скрывать стандартные библиотечные функции

(этот флаг не описан в файле IDC.IDC)

Success SetPrcsr (char processor);

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

Это объясняется тем, что на стадии загрузки происходят неустранимые средствами последующих уровней изменения и настройки на конкретный процессор. (Большей частью это относится к невозможности IDA перезагружать микропроцессорные модули, отвечающие за дизассемблирование. Такой модуль может быть загружен один только раз и на весь сеанс работы окажутся доступными лишь поддерживаемые им типы микропроцессоров)

Для линейки Intel в силу их полной обратной совместимости, динамический выбор модели процессора некритичен, поскольку можно выбрать самого позднего из доступных представителей, и можно быть уверенным, что все команды будут дизассемблированы. Аналогичный результат можно получить, выбрав тип «meta pc», включающий в себя команды всех моделей микропроцессоров.

Рассмотрим работу этой функции на следующей примере. Загрузим для дизассемблирования бинарный или com-файл (для которого IDA по умолчанию выбирает 8086 микропроцессор), но содержащий инструкции более поздних моделей.

Разумеется, они окажутся не дизассемблированными и результат работы IDA может выглядеть, например, так:

seg000:02E9 mov ax, ds:413h

seg000:02EC db 0C1h ; -

seg000:02ED db 0E0h ; р

seg000:02EE db 6 ;

seg000:02EF cmp ax, 0A000h

SetPrcsr (“metapc”);

seg000:02E9 mov ax, ds:413h

seg000:02EC shl ax, 6

seg000:02EF cmp ax, 0A000h

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

При этом IDA может так же изменять целевой ассемблер, поэтому рекомендуется на всякий случай удостоверится в приемлемости ее выбора, вызвав диалог «~Options \ Target Assembler» Впрочем, для линии IBM PC он имеется в единственном числе – «Generic for Intel 80x86» и беспокоиться нет никакой необходимости.

Операнд processor может принимать следующие значения, перечисленные ниже в таблице. К регистру функция не чувствительна, поэтому ‘metapc’ и ‘MetaPC’ задают один и то же тип процессора.

Отбивка слева указывает, что объединяемые ее микропроцессоры могут динамически выбираться во время дизассемблирования файла.

Операнд

Процессор

Серия

8086

Intel 8086

Линейка IBM PC

80286r

Intel 80286 real mode

80286p

Intel 80286 protected mode

80386r

Intel 80386 real mode

80386p

Intel 80386 protected mode

80486r

Intel 80486 real mode

80486p

Intel 80486 protected mode

80586r

Intel Pentium & MMX real mode

80586p

Intel Pentium & MMX prot mode

80686p

Intel Pentium Pro & MMX

k62

AMD K6-2 with 3DNow!

p2

Intel Pentium II

p3

Intel Pentium III

athlon

AMD K7

metapc

Дизассемблировать все инструкции IBM PC

8085

Intel 8085

z80

Zilog 80

Линейка Zilog 80

z8

Zilog 8

Линейка Zilog 8

860xr

Intel 860 XR

Линейка Intel 860

860xp

Intel 860 XP

8051

Intel 8051

Линейка Intel 51

80196

Intel 80196

Линейка Intel 80196

m6502

6502

Линейка 65xx line

m65c02

65c02

64180

Hitachi HD64180

pdp11

DEC PDP/11

Линейка PDP line

68000

Motorola MC68000

Линейка Motorola 680x0

68010

Motorola MC68010

68020

Motorola MC68020

68030

Motorola MC68030

68040

Motorola MC68040

68330

Motorola CPU32 (68330)

68882

Motorola MC68020 with MC68882

68851

Motorola MC68020 with MC68851

68020EX

Motorola MC68020 with both

6800

Motorola MC6800

Линейка Motorola 8bit

6801

Motorola MC6801

6803

Motorola MC6803

6301

Hitachi HD 6301

6303

Hitachi HD 6303

6805

Motorola MC6805

6808

Motorola MC6808

6809

Motorola MC6809

6811

Motorola MC6811

java

java

Серия Java

ppc

PowerPC

Линейка PowerPC

arm710a

ARM 7xx серия

Линейка ARM

arm

То же самое, что и arm710a

armb

ARM big endian

tms320c2

TMS320C2x серия

Серия TMS 16bit адресации

tms320c5

TMS320C5x серия

Линейка TMS VLIW l

tms320c6

TMS320C6x серия

sh3

Hitachi SH3 (little endian)

Hitachi SH line

sh3b

Hitachi SH3 (big endian)

sh4

Hitachi SH4 (little endian)

sh4b

Hitachi SH4 (big endian)

avr

ATMEL AVR

Серия ATMEL

mipsl

MIPS little endian

Линейка MIPS: R2000, 3000, R4000,R4200, R4300, 4400, R4600,R8000, R10000

mipsb

MIPS big endian

mipsr

MIPS & RSP

h8300

H8/300x in normal mode

Hitachi H8 line

h8300a

H8/300x in advanced mode

h8s300

H8S in normal mode

h8s300a

H8S in advanced mode

pic16cxx

Michrochip PIC

Серия микроконтроллеров

Все вышесказанное остается верным и для интерактивного выбора типа процессора посредством команды меню «~Options \ Processor type»

При попытке смены типа процессора IDA может выдать ошибку, например:«The processor type "metapc" isn't included in the standard version of IDA Pro. Please check our web site for information about ordering additional processor modules»

Это обозначает, что необходимый для дизассемблирования модуль отсутствует или не найден. Его можно получить, обратившись к вашему поставщику IDA или на сайте разработчика IDA (www.idapro.com)

Поскольку для DOS, OS\2 и Windows версий дизассемблера используются разные модули, то вполне возможно, что один из них отсутствует или поврежден, когда остальные вполне работоспособны.

Расшифровка расширений приводится ниже в таблице.

расш

Платформа

d32

Процессорный модуль для OS\2 версии дизассемблера

dll

Процессорный модуль для MS-DOS версии дизассемблера

w32

Процессорный модуль для Windows 95\Windows NT версий дизассемблера

Четвертая версия IDA в полной поставке, включает в себя следующие файлы:

Файл

Семейство процессоров

ARM

Семейство ARM (серия ARM 7xx)

AVR

Линейка чипов ATMEL AVR

H8

Линейка чипов Hitachi H8 (H8/300x и H8S серии)

I196

Микропроцессор Intel 80196

I51

Микропроцессор Intel 8051

I860

Микропроцессор Intel 860 XR

JAVA

Java Virtual Machine

M65

Микропроцессоры серии 65xx

MC8

Семейство 8-разрядных микропроцессоров фирмы Motorola (MC6800, MC6801, MC6803, MC6805, MC6808, MC6809, MC6811)

Семейство 8-разрядных микропроцессоров фирмы Hitachi (HD 6301, HD 6303)

MC68

Микропроцессоры серии Motorola 680x0

PC

Микропроцессоры линейки IBM PC

PDP11

DEC PDP-11

PIC

Микроконтроллеры Microchip серий PIC16C5x PIC16Cxx PIC17Cxx

Z8

Микропроцессоры линейки Zilog 8

Z80

Микропроцессоры линейки Zilog 80

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

С другой стороны, если вам не нужно дизассемблировать ничего, кроме программ для IBM PC, то все остальные модули можно удалить, освободив немного дискового пространства.

Если в заголовке загружаемого файла отсутствует информация о типе процессора, то IDA выбирает его, руководствуясь расширением.

Соответствия расширений и типов микропроцессора перечислены в фале IDA.CFG в секции DEFAULT_PROCESSOR:

расширение

Тип процессора

"com"

"8086"

"exe"

"metapc"

"dll"

"metapc"

"drv"

"metapc"

"sys"

"metapc"

"bin"

"metapc"

"ovl"

"metapc"

"ovr"

"metapc"

"ov?"

"metapc"

"nlm"

"metapc"

"lan"

"metapc"

"dsk"

"metapc"

"obj"

"metapc"

"prc"

"68000" (PalmPilot программы)

"axf"

"arm710a"

"h68"

"68000" (MC68000 для *.H68 файлов)

"i51"

"8051" (i8051 для *.I51 файлов)

"sav"

"pdp11" (PDP-11 для *.SAV файлов)

"rom"

"z80" (для *.ROM файлов)

"class"

"java"

"cls"

"java"

"s19"

"6811"

"*"

"metapc"

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