Анимация
JavaScript
|
Главная Библионтека встретив регистровый переход, целевой адрес которого она предсказать не в силах; по завершению дизассемблирования функция возвратила длину первой инструкции, равную трем байтам Message(">%X\n",MakeCode(SegByName("seg000")+0x106)); d) повторно вызываем функцию MakeCode, передавая ей адрес следующей инструкции (значение регистра SI при загрузке com файла равно 0x100, а после выполнения инструкции ADD SI, 6 - 0x106, следовательно целевой адрес перехода JMP SI равен 0x106) seg000:0100 seg000:0103 seg000:0103 seg000:0105 seg000:0106 seg000:0106 seg000:0109 seg000:010A seg000:010B seg000:010C seg000:010C seg000:010C seg000:010F seg000:0110 seg000:0112 seg000:0112 seg000:0114 seg000:0115 >3 add jmp db 0B9h loc 0 10C: mov lodsw xchg push xor inc loop si, 114h byte ptr [si], si loc 0 10C si CODE XREF: seg000:0110j db db e) результат - функция продолжила дизассемблирование, автоматически создавая перекрестные ссылки и автогенерируемые метки, до тех пор пока не встретила инструкцию регистрового перехода, целевой адрес которого предсказать не в силах. ??? #Верстальщику - chabge table
Родственные функции: нет Интерактивный аналог: "~Edit\Code" <C> char GetMnem(long ea) Функция возвращает символьную мнемонику инструкции элемента кода, расположенного по линейному адресу ea. Для получения операндов (если они есть) следует воспользоваться функцией GetOpnd (см. главу «Операнды») Пример использования: seg000:0000 mov ah, 9 a) исходные данные - требуется получить символьную мнемонику инструкции Message(">%s\n",GetMnem(SegByName("seg0 0 0"))); b) вызов функции GetMnem >mov c) результат - мнемоника инструкции в символьном представлении ??? #Верстальщику - chabge table
Родственные функции: GetOpnd Интерактивный аналог: нет void MakeUnkn(long ea,long expand) Функция разрушает элемент, заданный любым принадлежащим ему адресом, превращая его содержимое в бестиповые байты. Объекты, связанные с элементом (например, метки, комментарии) при этом не уничтожаются. Замечание: автогенирируемые метки, назначаемые ASCII-строкам при их разрушении удаляется Аргумент ea задает любой линейный адрес, принадлежащий разрушаемому элементу. Аргумент expand будучи неравным нулю указывает на необходимость разрушения всей цепочки элементов, связанных друг с другом перекрестными ссылками типа «ссылка на следующую инструкцию» (см. главу «Перекрестные ссылки») Пример использования: 1. Эксперимент seg000:0000 aHelloSailor a) исходные данные db Hello, Sailor,0 MakeUnkn(SegByName("seg000")+0x1,0); b) вызов функции MakeUnkn для разрушения элемента данных типа «ASCII-строка»
с) результат - элемент данных разрушен 2. Эксперимент seg000:0100 seg000:0103 a) исходные данные add jmp MakeUnkn(SegByName("seg000"),0); b) вызов функции MakeUnkn для разрушения только одного элемента кода seg000:0100 start seg000:0101 seg000:0102 seg000:0103 ; - с) разрушен один элемент кода 3. Эксперимент seg000:0100 add seg000:0103 jmp a) исходные данные db 83h ; Г db 0C6h ; db 6 ; MakeUnkn(SegByName("seg000"),1); b) вызов функции MakeUnkn для разрушения всей цепочки элементов кода seg000:0100 seg000:0101 seg000:0102 seg000:0103 seg000:0104 seg000:0105 start db 83h db 0C6h db 6 db 0FFh db 0E6h db 0B9h с) результат - вся цепочка элементов кода разрушена ??? #верстальщику - change table
Родственные функции: нет Интерактивный аналог: "~Edit\Undefine"; <U> Замечение: нажатие <U> равносильно вызову MakeUnk(ScreenEA(),1) и 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 |