Анимация
JavaScript
|
Главная Библионтека seg000:0008 db ? ; unexplored seg000:0009 db ? ; unexplored a) исходные данные Message(">%x\n",MakeQword(SegByName("seg000"))); b) вызываем функцию MakeTbyte для создания нового элемента данных типа tbyte, передавая ей адрес цепочки из десяти бестиповых байта seg000:0000 db ?, ?, ?, ?, ?, ?, ?, ?, ?, ? >1 c) результат - элемент данных типа tbyte успешно создан ??? #Верстальщику - change table
Родственные функции: MakeByte, MakeWord, MakeDword, MakeQword, MakeFloat, MakeDouble, MakePackReal. Интерактивный аналог: ("~Options\Setup data types"; <Alt-D>), <T> Замечение: для включения типа «четвертного слова» в список типов данных, пролистываемых нажатием клавиши <D>, необходимо, вызвав диалог "Setup data types" установить галочку напротив пункта "Tbyte. success MakeStr(long ea,long endea) Функция преобразует последовательность бестиповых байт в ASCII-строку, автоматически назначая ей метку, стиль которой задается вызовом "SetLongPrm(INF STRTYPE)" (см. описание функции SetLongPrm). Аргумент ea задает линейный адрес начала цепочки бестиповых байт или головы элемента данных, преобразуемого в строку. Если по данному адресу находится хвост элемента данных, голова или хвост элемента кода, функция возвратит ошибку, не выполнив преобразования. Аргумент endea задает линейный адрес конца строки. Если передать функции значение BADADDR, то IDA предпримет попытку вычислить адрес конца автоматически. Поддерживаются следующие типы строк - ASCIIZ-строки, заканчивающиеся символом нуля; PASCAL-строки, начинающиеся с байта, содержащего длину строки и DELPHI-строки, начинающиеся со слова (двойного слова), содержащего длину строки. Если строка не принадлежит ни к одному из этих трех типов, концом строки считается: а) первый нечитабельный ASCII-символ. Перечень читабельных символов содержится в поле "AsciiStringChars" конфигурационного файла <ida.cfg>. Любой символ, не входящий в этот список, трактуется ограничителем длины строки. По умолчанию содержимое поля "AsciiStringChars" для кодировки cp866 следующее: "\r\n\a\v\b\t\x1B" " !\"#$%&()*+,-./012 345 67 89:;<=>?" "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\] " ""abcdefghijklmnopqrstuvwxyz{}~" "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЬЭЮЯ" "абвгдежзийклмног "рстуфхцчшщъыьэюя"; b) неинициализированный байт c) голова элемента кода или данных d) конец сегмента Если на пути от адреса начала строки до адреса ее конца встретится хотя бы один неинициализированный байт, элемент кода или данных, функция возвратит ошибку без преобразования строки. Замечание: вплоть до версии 3.85 эта функция была реализована с ошибкой и передача значения BADADDR не приводила к автоматическому определиению конца строки. Пример использования:
a) исходные данные - ASCIIZ-строка. MakeStr(SegByName("seg000"),BADADDR); b) вызываем функцию MakeStr для преобразования цепочки бестиповых байтов в ASCII-строку с автоматическим определением ее конца seg000:0000 aHelloSailor db Hello, Sailor,0 c) результат - успешное создание строки с автоматическим назначением метки, состоящей из допустимых в имени символов ??? #Верстальщику change table
Родственные функции: нет Интерактивный аналог: "~Edit\ASCII"; <A> Замечение: при нажатии клавиши <A>, IDA пытаестя создать по текущему адресу, ASCII-строку автоматически определяя ее длину. Для явного задания требуемой длины, необходимо предварительно выделить соответствующую область курсорными клавишами, удерживаня нажатым <shift> или мышью, удерживая нажатой правую кнопку. success MakeArray(long ea,long nitems) Функция создает массив состоящий из данных одного типа - байтов, слов, двойных слов, четверных слов, двойных слов в формате float, четверных слов в формате double, packed real, tbyte. Бестиповые байты могут стать частью массива любого типа. Строки не могут быть элементами никакого массива. Тип массива определяется типом его первого элемента. Все остальные элементы массива на момент его создания должны быть представлены бестиповыми байтами, -последовательность типизированных данных не может быть преобразована в массив. Элементы массива записываются в строку, отделяясь друг от друга знаком запятой. Если два или более подряд идущих элемента имеют одно и то же значение (в том числе и неинициализированное) для сокращения ассемблерного листинга используется конструкция "DUP". Аргумент ea задает линейный адрес первого элемента массива или линейный адрес начала цепочки бестиповых байт. Аргумент nitems задает размер массива, выраженный в количестве элементов. Массив создается даже в том случае, когда nitems равен единице.
бестиповых байт в массив байт seg000:0000 db 48h, 65h, 2 dup(6Ch) seg000:0000 db 6Ch, 6Fh, 72h, 0 с) результат - успешно созданный массив. 6Fh, 2Ch, 20h, 53h, 61h, 69h Внимание: если все элементы массива не умещаются на одной строке, они 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 |