Анимация
JavaScript
|
Главная Библионтека Рисунок 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
Родственные функции: 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) удаление сегмента без уничтожения виртуальной памяти
c) результат - сегмент удален, содержимое виртуальной памяти - нет SegCreate(0x10000,0x10012,0x1000,0,0,0); d) Попытка создания нового сегмента для восстановления удаленного
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); к) попытка создания нового сегмента для восстановления виртуальной памяти
l) результат - адресное пространство восстановлено, но содержимое виртуальной памяти - нет. ??? #верстальщику - change table
Родственные функции: 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 |