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


success SetPrcsr (char processor);

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

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

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

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

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

seg000:02E9 seg000:02EC seg000:02ED seg000:02EE seg000:02EF

mov ax, ds:413h

db 0C1h ; -

db 0E0h ; р

db 6 ;

cmp ax, 0A000h

SetPrcsr ("metapc");

seg000:02E9 seg000:02EC seg000:02EF

mov ax, ds:413h

shl ax, 6

cmp ax, 0A000h

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

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



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

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

Операнд

Процессор

8086

Intel 8086

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

AMD K6-2 with 3DNow!

Intel Pentium II

Intel Pentium III

athlon

AMD K7

metapc

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

8085

Intel 8085

Zilog 80

Zilog 8

860xr

Intel 860 XR

860xp

Intel 860 XP

8051

Intel 8051

80196

Intel 80196

m6502

6502

m65c02

65c02

64180

Hitachi HD64180

pdp11

DEC PDP/11

68000

Motorola MC68000

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

6801

Motorola MC6801

6803

Motorola MC6803

6301

Hitachi HD 6301

6303

Hitachi HD 6303

6805

Motorola MC6805

6808

Motorola MC6808

6809

Motorola MC6809

Серия

Линейка IBM PC

Линейка Zilog 80 Линейка Zilog 8

Линейка Intel 860

Линейка Intel 51 Линейка Intel 80196

Линейка 65xx line

Линейка PDP line

Линейка Motorola 680x0

Линейка Motorola 8bit



6811

Motorola MC6811

java

java

Серия Java

PowerPC

Линейка PowerPC

arm710a

ARM 7xx серия

Линейка ARM

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

armb

ARM big endian

tms320c2

TMS320C2x серия

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

tms320c5

TMS320C5x серия

Линейка TMS VLIW l

tms320c6

TMS320C6x серия

Hitachi SH3 (little endian)

Hitachi SH line

sh3b

Hitachi SH3 (big endian)

Hitachi SH4 (little endian)

sh4b

Hitachi SH4 (big endian)

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" isnt 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 версий дизассемблера используются разные модули, то вполне возможно, что один из них отсутствует или поврежден, когда остальные вполне работоспособны.

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

расш I Платформа"

d32 Процессорный модуль для OS\2 версии дизассемблера dll I Процессорный модуль для MS-DOS версии дизассемблера



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