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

Long GetNextFixupEa(long ea);

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

Например:

dseg:0000 public start

dseg:0000 start proc near

dseg:0000 B8 00 10 mov ax, seg dseg

dseg:0003 8E D8 mov ds, ax

Message(“0x%X \n”,

GetNextFixupEA(0)

);

0x1001

Эмулятор загрузки инициализировал перемещаемый элемент необходимым значением, указывающим на адрес сегмента в виртуальной памяти. В нашем случае он равен 0x10.

Операнд

Пояснения

ea

Линейный адрес

Return

Завершение

Пояснения

!=BADADDR

Успешно

==BADADDR

Ошибка

Long GetPrevFixupEa(long ea);

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

Например:

dseg:0000 public start

dseg:0000 start proc near

dseg:0000 B8 00 10 mov ax, seg dseg

dseg:0003 8E D8 mov ds, ax

Message(“0x%X \n”,

GetNextFixupEA(-1)

);

0x1001

Эмулятор загрузки инициализировал перемещаемый элемент необходимым значением, указывающим на адрес сегмента в виртуальной памяти. В нашем случае он равен 0x10.

Операнд

Пояснения

ea

Линейный адрес

Return

Завершение

Пояснения

!=BADADDR

Успешно

==BADADDR

Ошибка

Long GetFixupTgtType(long ea);

Функция возвращает тип перемещаемого элемента по его линейному адресу. Возможные значения перечислены в таблице ниже. Поскольку большинство из них на платформе Intel не имеет места, то подробное описание их назначения приведено в факультативном приложении к книге «Использование IDA на не-Intel платформах»

FIXUP_MASK

0xF

FIXUP_BYTE

FIXUP_OFF8

Восьми битное смещение

FIXUP_OFF8

0

FIXUP_OFF16

1

16-битное смещение

FIXUP_SEG16

2

16-битный сегмент (селектор)

FIXUP_PTR32

3

32-битный длинный указатель (16-бит база; 16-бит селектор)

FIXUP_OFF32

4

32-битное смещение

FIXUP_PTR48

5

48-битный указатель (16-бит база; 32-бит смещение).

FIXUP_HI8

6

Старшие 8 бит 16-битного смещения

FIXUP_HI16

7

Старшие 16 бит 32-битного смещения

FIXUP_LOW8

8

Младшие 8 бит 16-битного смещения

FIXUP_LOW16

9

Младшие 16бит 32-битного смещения

FIXUP_REL

0x10

fixup is relative to the linear address specified in the 3d parameter to set_fixup()

FIXUP_SELFREL

0x0

elf-relative? - disallows the kernel to convert operands in the first pass- this fixup is used during output This type of fixups is not used anymore. Anyway you can use it for commenting purpose in the loader modules

FIXUP_EXTDEF

0x20

target is a location (otherwise - segment)

FIXUP_UNUSED

0x40

fixup is ignored by IDA disallows the kernel to convert operands- this fixup is not used during output

FIXUP_CREATED

0x80

fixup was not present in the input file

Пример:

seg000:032D cmp word ptr [bp+8], seg seg000

seg000:0332 jnz loc_0_33A

Message("0x%X \n",

GetFixupTgtType(

GetNextFixupEA(0)

)

);

0x2

Операнд

Пояснения

ea

Линейный адрес

Return

Завершение

Пояснения

!=BADADDR

Тип перемещаемого элемента

==BADADDR

Ошибка

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