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

Рисунок 22 ??? Художнику - перерисовать

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

Пусть необходимо создать сегмент с (задача вычисления базовго адреса)

SegCreate(0x10 0 0,0x4 0 0 0,0x10 0,0,0,0);

0. Creating a new segment (00001000-00004 000) ...... OK

[ ]

Program Segmentation Name Start End Align Base Type Cls 32es ss ds seg000 00000000 00003000 at 0100 pri N FFFF FFFF FFFF 00001000 00004000

=[t] T ▲

liiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiB

SegCreate(0x2 0 0 0,0x3 0 0 0,0x2 0 0,0,0,0);

1. Creating a new segment (00002 000-00003000)

Additional segment (00003000-00004000)

2. Creating a new segment (00003000-00004000) ... OK

. ... OK

Name

seg000 seg001 seg002 1/3

Program Segmentation

Start

End Align Base Type Cls 32es ss ds

=[t] T ▲

00000000 00001000 00000000 00001000 00002000 00003000

at at at

0100 0200 0100

N FFFF FFFF FFFF 00001000 00002000 N FFFF FFFF FFFF 00002000 00003000

iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

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

аргумент

пояснения

startea

32-разрядный линейный адрес начала сегмента

endea

величина на единицу большая последнего принадлежащего сегменту адреса

Base

16-разрядный базовый адрес в параграфах или указатель на селектор

use32

=use32

пояснения

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

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

aling

кратность выравнивания начала сегмента

comb

комбинирование сегмента

return

=return

пояснения

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

ошибку

Родственные функции: SetSelector; SegClass; SegAlign; SegComb; SegAddrng; Интерактивный аналог: "~View\Segments", <Insert>;

success SegDelete(long ea,long disable)

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

Аргумент ea - представляет собой любой линейный адрес, принадлежащий сегменту, но не адрес его конца (см. описание функции SegCreate - адрес конца сегмента на единицу больше наибольшего адреса, принадлежащего сегменту)



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

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

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

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

seg000:0000 seg000

seg000:0000

seg000:0000

seg000:0000 aHelloIdaPro

seg000:0000 seg000

segment byte public use16 assume cs:seg000

assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing

db Hello, IDA Pro! ,0Dh,0Ah ; Test

ends

a) исходный сегмент, содержащий строку "aHelloIdaPro" и комментарий "Test"

SegDelete(SegByBase(SegByName("seg000")»4),0);

b) удаление сегмента без уничтожения виртуальной памяти

00010000

00010001

00010002

00010003

00010004

00010005

00010006

00010007

00010008

00010009

0001000A

0001000B

0001000C

0001000D

0001000E

0001000F

00010010

c) результат - сегмент удален, содержимое виртуальной памяти - нет

SegCreate(0x10000,0x10012,0x1000,0,0,0);

d) Попытка создания нового сегмента для восстановления удаленного

seg000:

0000

seg000:

0000 ; Segment

type: Regular

seg000:

0000 seg000

segment

seg000:

0000

assume

seg000:

0000

assume

seg000:

0000

db 48h

seg000:

0001

db 65h

seg000:

0002

db 6Ch

seg000:

0003

db 6Ch

seg000:

0004

db 6Fh

seg000:

0005

db 2Ch

seg000:

0006

db 20h

seg000:

0007

db 49h

seg000:

0008

db 44h

seg000:

0009

db 41h

seg000:

000A

db 20h

seg000:

000B

db 50h



seg000:000C

seg000:000D seg000:000E seg000:000F seg000:0010

seg000:0011 seg000:0011 seg000

db db db db db db

ends

72h ; 6Fh ; 21h ; 20h ; 0Dh ; 0Ah;

e) результат - сегмент восстановлен, а строка и комментарий - нет.

SegDetele(0x10000,1);

f) удаление сегмента вместе с принадлежащей ему виртуальной памятью

пустой экран /Ембрп

IDA view-A

j) результат - виртуальная память удалена

SegCreate(0x10000,0x10012,0x1000,0,0,0);

к) попытка создания нового сегмента для восстановления виртуальной памяти

seg000:

0000 ; Segment

type: Regular

seg000:

0000 seg000

segment at 1000h private use16

seg000:

0000

sume

cs:seg000

seg000:

0000

sume

э es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing

seg000:

0000

unexplored

seg000:

0001

unexplored

seg000:

0002

unexplored

seg000:

0003

unexplored

seg000:

0004

unexplored

seg000:

0005

unexplored

seg000:

0006

unexplored

seg000:

0007

unexplored

seg000:

0008

unexplored

seg000:

0009

unexplored

seg000:

000A

unexplored

seg000:

000B

unexplored

seg000:

000C

unexplored

seg000:

000D

unexplored

seg000:

000E

unexplored

seg000:

000F

unexplored

seg000:

0010

unexplored

seg000:

0011

unexplored

seg000:

0011 seg000

ends

l) результат - адресное пространство восстановлено, но содержимое виртуальной памяти - нет.

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

аргумент

пояснения

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

disable

=disable

пояснения

не уничтожать адреса, принадлежащие сегменту

уничтожать адреса, принадлежащие сегменту

return

=return

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

ошибка

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

Интерактивный аналог: "~Edit\Segments\Delete segment"; "~View\Segments", <Del>



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