Анимация
JavaScript
|
Главная Библионтека Можно так же безболезненно присваивать ячейке строковое значение, а считывать числовое (и, естественно, наоборот). Это бывает иногда полезно для преобразования данных. Чтение значений осуществляется функциями: long GetHashLong(long id,char idx); char GetHashString(long id,char idx); Не смотря на то, что эти функции работают непосредственно с массивом созданным CreateArray они не могу видеть или модифицировать элементы, заданные SetArrayLong\SetArrayString, поэтому можно безбоязненно использовать один массив для разных нужд. Удалить любой элемент ассоциативного массива можно с помощью функции: success DelHashElement(long id,char idx); При удалении элементов IDA неявно инициализирует случайным значением, в отличие от DelArrayElement, которая в этом случае как и следует ожидать обнуляет ячейку. Однако, это не вызовет проблемы, если для доступа к элементам использовать функции: char GetFirstHashKey(long id); char GetNextHashKey(long id,char idx); char GetLastHashKey(long id); char GetPrevHashKey(long id,char idx); Все они возвращают строковое представление индексов, и могут быть использованы в функциях GetHashLong\GetHashString. МЕТОДЫ
long CreateArray(char name); Функция создает новый разряженный массив, в котором можно будет хранить данные обоих типов - как строковые, так и длинные целые. Массив сохраняется в базе IDA как элемент Btree до тех пор, пока не будет принудительно удален из нее. Никаких ограничений на размер массива не налагается. Каждый массив должен иметь свое уникальное имя (два массива с одинаковыми именами существовать не могут). Массивы имеют собственное пространство имен (то есть можно создать метку или сегмент совпадающую с именем уже существующего массива и наоборот) На имена наложены следующие ограничения - длина до 120 символов, может начинаться с цифры, но не должен содержать пробелов. При успешном завершении функция возвращает идентификатор массива, в противном случае (массив с таким именем уже существует?) BADADDR. Пример: Message("0x%X \n", CreateArray("MyArray") 0xFF000041
long GetArrayId(char name); Функция возвращает идентификатор массива по его имени. Это позволяет не сохранять идентификаторы массивов, полученные при их создании, а обращаться к массивам по имени. Например: Message("0x%X \n", CreateArray("MyArray") Message("0x%X \n" GetArrayId("MyArray") DeleteArray( GetArrayId("MyArray") Message("0x%X \n" GetArrayId("MyArray") 0xFF000041 0xFF000041 0xFFFFFFFF
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 |