Анимация
JavaScript
|
Главная Библионтека char atoa (long ea); Функция преобразовывает линейный адрес в строку, используя символьные имена сегментов, выбирая сегмент с наибольшим из возможных адресов.
Так, например: +-[ ]-----Name seg000 + 1/1 --------------- Program Segmentation----------------------3-[П]- + Start End Align Base Type Cls 32es Start EA End EA - 000000 000032EA byte 1000 pub CODE N FFFF 00010000 000132EA 0 Message("%s \n", atoa(0x10000) seg000:0 Если указанный адрес не принадлежит ни одному сегменту, то функция преобразует его к виду segment : offset, по стандартной формуле преобразования: Например: segment = ea >> 4; offset = ea - (ea >> 4). Message("%s \n", atoa(0x18) 1:00000008 char ltoa (long n,long radix); Функция преобразовывает длинное целое в символьное с произвольной системой исчисления. Функция принимает следующие операнды:
Пример: auto a; for (a=0;a<50;a++) Message ("%x, %s \n", ltoa(a,a)); 0, 1, 2, 10 3, 10 4, 10 5, 10 6, 10 7, 10 8, 10 9, 10 a, 10 b, 10 c, 10 d, 10 e, 10 f, 10 10, 10 11, 10 12, 10 13, 10 14, 10 15, 10 16, 10 17, 10 18, 10 19, 10 1a, 10 1b, 10 1c, 10 1d, 10 1e, 10 1f, 10 20, 10 21, 10 22, 10 23, 10 24, 10 25, 26, 27, 28, 29, 2a, 2b, 2c, 2d, 2e, 2f, 30, 31, long atol (char str); Функция преобразует строковое десятичное значение в длинное целое. Постфикс h игнорирует, а, встретив префикс x, возвращает нулевое значение.
Пример: Message ("%x \n", atol ("16") РАЗНОЕ char Compile (char filename); Очень полезная функция, компилирующая в память указанные файлы (скрипты IDA). Все функции, объявленные в них, будут глобальными и доступными всем остальным скриптам вплоть до завершения сеанса работы с IDA. Обычно так главный модуль скрипта подключает все остальные необходимые ему функции, находящиеся во внешних файлах. Обратите внимание, что Compile только компилирует, но не запускает функцию main(). Если модуль требует инициализации, то main придется вызвать вручную. Однако в компилируемом файле не должно содержаться функции, совпадающей по имени с текущей (то есть вызвавшей Compile). Иначе поведение дизассемблера окажется непредсказуемым. В остальных случаях совпадение имен откомпилированных функций приводит лишь к их замещению. Заметим, что системные функции таким образом перекрыть не удастся и выдастся сообщение об ошибке. Любопытно, что Compile возвращает не код ошибки, а осмысленную символьную строку. В случае успеха операции - пустую. Пример: demo.idc: static MyFunc() { }Message("He11o, Sailor! \n"); compl.idc static mainC) { Compi1eC"demo.idc") ; MyFuncC); Загрузим и запустим на выполнение compl.idc На экране появиться Hello, Sailor!. Нетрудно убедиться, что функция MyFunc доступна и с консоли и с остальных скриптов. Заметим, что IDA сложным образом манипулирует с понятием текущего каталога, поэтому если приведенный пример не сработает, попробуйте указать полный путь к файлу demo.idc void Exit (long code); Функция осуществляет выход из IDA в операционную систему, сохраняя все последние изменения и закрывая базу. Выполнение скрипта при этом прерывается. Закрытие активных файлов не гарантируется. Операнд назначение code код завершения процесса 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 |