Анимация
JavaScript
|
Главная Библионтека Допускается создание точки входа без имени. При этом она не будет отображена на экране, но появится в списке точек входа. 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);
; EntryPoint Если флаг makecode будет установлен в единицу то IDA при необходимости формирует функцию и дизассемблирует инструкции.
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
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
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 |