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

Допускается создание точки входа без имени. При этом она не будет отображена на экране, но появится в списке точек входа.

AddEntryPoint(1,0x122C6,"",1);

seg000:22C0 seg000:22C0 seg000:22C0 seg000:22C3

seg000:22C6

seg000:22C9 seg000:22CC seg000:22CF

start

public start proc near

call call

call

call call call

sub 0 22DD sub 0 2325

sub 0 235B

sub 0 2374 sub 0 23B6 sub 0 23F8


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

seg000:002A sub 0 2A seg000:002A seg000:002D seg000:0030 seg000:0033 seg000:0036 seg000:0036

proc near

call

call

retn endp

si, 211h sub 0 DD si, 2BAh sub 0 DD

sub 0 2A

AddEntryPoint(8,0x1002A,"EntryPoint",0);

seg000:002A seg000:002A seg000:002A seg000:002D seg000:0030 seg000:0033 seg000:0036 seg000:0036

EntryPoint

EntryPoint

public EntryPoint

proc near

mov si, 211h

call sub 0 DD

mov si, 2BAh

call sub 0 DD

retn endp

Если же по указанному адресу уже существует точка входа, то она не будет затерта новой, и по одному адресу будут расположены две точки входа. При этом имя предыдущей точки входа переместиться в комментарий.

AddEntryPoint(9,0x1002A,"NewEntryPoint",0);




seg000:

002A

seg000:

002A

public

NewEntryPoint

seg000:

002A

NewEntryPoint

proc near

seg000:

002A

si, 211h

seg000:

002D

call

sub 0 DD

seg000:

0030

si, 2BAh

seg000:

0033

call

sub 0 DD

seg000:

0036

retn

seg000:

0036

NewEntryPoint

endp

; EntryPoint

Если флаг makecode будет установлен в единицу то IDA при необходимости формирует функцию и дизассемблирует инструкции.

seg000:

002A

0BEh

seg000:

002B

seg000:

002C

seg000:

002D

0E8h

seg000:

002E

0ADh

seg000:

002F

seg000:

0030

0BEh

seg000:

0031

0BAh

seg000:

0032

seg000:

0033

0E8h

seg000:

0034

0A7h

seg000:

0035

seg000:

0036

0C3h

AddEntryPoint(1,0x1002A,"MyEntryPoint",1);

seg000:002A seg000:002A

seg000:002A MyEntryPoint

seg000:002A

seg000:002D

seg000:0030

seg000:0033

seg000:0036

seg000:0036 MyEntryPoint

public MyEntryPoint

proc near

mov si, 211h

call sub 0 DD

mov si, 2BAh

call sub 0 DD

retn

endp

Операнд

Пояснения

ordinal

Ординал функции

Линейный адрес конца команды

Name

Имя точки входа

makecode

==makecode

Пояснения

Преоброзовывать undefine в инструкции

Не переобразовывать undefine в инструкции

Return

Завершение

Пояснения

Успешно



0 I Ошибка

long GetEntryOrdinal(long index);

Возвращает ординал точки входа по порядковому номеру из списка. Index может принимать значения от нуля до GetEntryPointQtyO-1. Все точки входа (если их больше одной) хранятся в несортированном списке, расположенные в порядке их создания.

Если запросить несуществующий индекс, то функция вернет ноль, а не ошибку BADADDR, что само по себе достаточно странно, потому что по нулевому линейному адресу теоретически возможно создать точку входа, хотя это случается крайне редко, поскольку для большинства файлов адрес загрузки по умолчанию лежит значительно выше и равен 0x10000

Ординал точки входа будет необходим в дальнейшем для функций GetEntryPoint и RenameEntryPoint.


Следующий пример выдаст на экран ординалы всех существующих точек входа.

auto a,i; i=0;

while((a=GetEntryOrdinal(i++))) Message("0x%X \n",a);

0x122C0 0x1 0x2 0x3

Операнд

Пояснения

index

Индекс точки входа в списке (от нуля до GetEntryPointQtyO-1)

Return

Завершение

Пояснения

Ординал точки входа

Ошибка

long GetEntryPoint(long ordinal)

Возвращает адрес точки входа по ординалу. Если указанный ординал не существует, возвращается ошибка BADADDR.



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