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

Success SetSegmentType (long segea,long type)

Функция изменяет тип сегмента, оказывая влияние на его дизассемблирование.

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

Аргумент type указывает на тип сегмента и может принимать одно из значений, перечисленных в таблице ???. При создании сегмента функцией SegCreate ему присваивается тип «неизвестный» - SEG_NORM.

определение

#

Пояснения

SEG_NORM

0

Неизвестный тип

SEG_XTRN

1

Внешний ('extern') сегмент. Инструкции исключены

SEG_CODE

2

Сегмент кода

SEG_DATA

3

Сегмент данных

SEG_IMP

4

Сегмент Java implementation

SEG_GRP

6

Group of segments

SEG_NULL

7

Сегмент нулевой длины

SEG_UNDF

8

Сегмент неопределенного типа (не используется)

SEG_BSS

9

Неинициализированный сегмент

SEG_ABSSYM

10

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

SEG_COMM

11

Сегмент с общими определениями

SEG_IMEM

12

Внутренняя память процессора 8051

Таблица 8

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

SegCreate(0x1000,0x2000,0x100,0,0,0);

a) создаем новый сегмент (по умолчанию неизвестного типа)

seg000:0000 ; Segment type: Regular

seg000:0000 seg000 segment at 100h private ''

seg000:0000 assume cs:seg000

seg000:0000 assume es:nothing, ss:nothing, ds:nothing

b) сегмент создан (тип выделен жирным шрифтом), автоматически внедрена директива ASSUME для определения сегментных регистров.

SetSegmentType(0x1000,SEG_DATA);

c) вызов функции SetSegnetType для установки типа «сегмент данных»

seg000:0000 ; Segment type: Pure data

seg000:0000 seg000 segment at 100h private ''

seg000:0000 assume cs:seg000

d) тип сегмента изменен, директива ASSUME, задающая значение регистров DS, ES и SS удавлена.

??? #верстальщику – change table

аргумент

пояснения

ea

любой линейный адрес, принадлежащий сегменту

type

тип сегмента (возможные значения приведены в таблице ???)

return

=return

пояснения

!=0

успешное завершение операции

0

ошибка

Родственные функции: GetSegmentAttr

Интерактивный аналог: нет

Long GetSegmentAttr(long segea,long attr)

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

Об атрибуте вырывания можно подробнее прочитать в описании функции SegAlign, об атрибутах комбинации – в описании функции SegComb, о типе сегмента рассказывается в описании функции “SetSegmentType”. Использование селекторов для базирования сегментов подробно описано в главах «Организация сегментов», “SegCreate” и “SetSelector”.

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

Аргумент attr указывает функции – содержимое какого атрибута необходимо возвратить. Возможные значения аргумента attr приведены в таблице ???

??? #Верстальщику – Change Table

константа

#

пояснения

функция

SEGATTR_ALIGN

20

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

SegAlign

SEGATTR_COMB

21

получить атрибуты комбинации

SegComb

SEGATTR_PERM

22

привилегии доступа

Внутренняя используемая только в IDA SDK

SEGPERM_EXEC

1

исполнение

SEGPERM_WRITE

2

запись

SEGPERM_READ

4

чтение

SEGATTR_USE32

23

32 разрядный сегмент

SegAddrnd

SEGATTR_FLAGS

24

флаги сегмента

Add_seg

(из IDA SDK)

ADDSEG_NOSREG

все сегментные регистры, заданные по умолчанию неопределенны

ADDSEG_OR_DIE

невозможно добавить сегмент

SEGATTR_SEL

26

селектор сегмента

SetSeelctor

SEGATTR_DEF_ES

28

значение регистра ES по умолчанию

DefSegReg

SEGATTR_DEF_CS

30

значение регистра CS по умолчанию

SEGATTR_DEF_SS

32

значение регистра SS по умолчанию

SEGATTR_DEF_DS

34

значение регистра DS по умолчанию

SEGATTR_DEF_FS

36

значение регистра FS по умолчанию

SEGATTR_DEF_GS

38

значение регистра GS по умолчанию

SEGATTR_TYPE

40

тип сегмента

SetSegmentType

Таблица 9 Типы сегментов

??? #верстальщику – change table

аргумент

пояснения

ea

линейный адрес, принадлежащий сегменту

Type

тип сегмента (возможные значения приведены в таблице 9)

return

=return

Успешность завершения операции

!=0

Операция завершилась успешно

0

При выполнении операции произошла ошибка

Родственные функции: SegAddrng, SegAling, SegComb, SegClass, SegDefReg, SetSegmentType

Интерактивный аналог: нет

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