Анимация
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 SetSegmentType (long segea,long type)

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

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

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

определение

Пояснения

SEG NORM

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

SEG XTRN

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

SEG CODE

Сегмент кода

SEG DATA

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

SEG IMP

Сегмент Java implementation

SEG GRP

Group of segments

SEG NULL

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

SEG UNDF

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

SEG BSS

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

SEG ABSSYM

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

SEG COMM

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

SEG IMEM

Внутренняя память процессора 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

аргумент

пояснения

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

type

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

return

=return

пояснения

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



0 I ошибка"

Родственные функции: GetSegmentAttr Интерактивный аналог: нет

long GetSegmentAttr(long segea,long attr)

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

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

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

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

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

константа

пояснения

функция

SEGATTR ALIGN

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

SegAlign

SEGATTR COMB

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

SegComb

SEGAIIR PERM

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

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

SEGPERM EXEC 1

исполнение

SEGPERM WRITE 2

запись

SEGPERM READ 4

чтение

SEGATTR USE32

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

SegAddrnd

SEGAIIR FLAGS

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

Add seg (из IDA SDK)

ADDSEG NOSREG

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

ADDSEG OR DIE

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

SEGATTR SEL

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

SetSeelctor

SEGATTR DEF ES

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

DefSegReg

SEGATTR DEF CS

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

SEGATTR DEF SS

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

SEGATTR DEF DS

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

SEGATTR DEF FS

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

SEGATTR DEF GS

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

SEGATTR TYPE

тип сегмента

SetSegmentType

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

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

аргумент

пояснения

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

ea Type

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



return

=return

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

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

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

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

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

char SegName(long ea)

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

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

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

SegRename(0x10 0 0,"MySeg");

a) создаем сегмент и тут же переименовываем его в "MySeg"

MySeg:0000 MySeg segment at 100h private

b) сегмент успешно создан (имя выделено жирным шрифтом)

Message(">%s\n",SegName(0x1000));

c) вызываем функцию SegName для получения имени сегмента

>MySeg

d) результат - имя сегмента

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

аргумент

пояснения

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

return

=return

Пояснение

!=""

имя сегмента

""

ошибка

Родственные функции: SegRename, SegByName

Интерактивный аналог: по умолчанию имя сегмент оэбрвжается в адресе нзждойячей

long FirstSegQ

Функция возвращает линейный адрес начала сегмента с наименьшим линейным адресом начала. Если не существует ни одного сегмента, функция возвратит значение BADADDR, сигнализируя об ошибке.

Замечание: FirstSeg обычно используется в паре с NextSeg для получения списка адресов начала всех существующих сегментов.

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

SegCreate(0x10 0 0,0x2 0 0 0,0x9,0,0,0);



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