Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ida.final.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6 Mб
Скачать

Long AskYn (long defval,char prompt);

Функция создает модальный диалог “Yes \ No \ Cancel”.

AskYN(1,“Hello!”);

Операнд

Пояснения

Defval

Значение по умолчанию

==defval

Копка по умолчанию

0

<NO>

1

<YES>

-1

<CANCEL>

promt

Текст, выводимый в окне диалога

return

0

Пользователь нажал <NO>

1

Пользователь нажал <YES>

-1

Пользователь нажал <CANCEL> или Escape

Void Message (char format,...);

Функция выводит строку в окно сообщений (Messages windows) IDA. Это наиболее популярный способ вывода результатов работы скриптов, а так же отладочных и диагностических сообщений.

Перед выполнением примера убедитесь, что окно сообщений не закрыто остальными окнами.

Message понимает стандартные спецификаторы формата вывода Си и ближе всего близка к функции printf (смотри так же описание form).

Сф

пояснение

%d

десятичное длинное знаковое целое

Пример:

Message(“%d”,0xF);

15

%x

шестнадцатеричное длинное целое строчечными символами

Пример:

Message(“%x”,10);

a

%X

шестнадцатеричное длинное целое заглавными символами

Пример:

Message(“%X”,10);

A

%o

восьмеричное длинное знаковое целое

Пример:

Message(“%o”,11);

13

%u

десятичное длинное беззнаковое целое

Пример:

Message(“%u”,-1);

4294967295

%f

десятичное с плавающей точной

Пример:

Message(“%f”, 1000000);

1.e6

%c

символьное значение

Пример:

Message(“%c”,33);

!

%s

строковое значение

Пример:

Message(“%s”,”Hello, Word! \n”);

Hello, Word!

%e

вывод чисел в экспоненциальной форме

Пример:

Пример:

Message(“%e”, 1000000);

1.e6

%g

вывод чисел в экспоненциальной форме

ЗАМЕЧАНИЕ: В оригинале спецификатор '%g' заставляет функцию саму решать, в какой форме выводить число - с десятичной точкой или в экспоненциальной форме, из соображений здравомыслия и удобочитаемости. IDA всегда при задании этого спецификатора представляет числа в экспоненциальной форме.

вывод указателя (не поддерживается)

ЗАМЕЧАНИЕ: вместо спецификатора '%p' IDA использует '%a', преобразующее линейный адрес в строковой сегментный, и автоматически подставляет имя сегмента.

Так, например, 'Message("%a \n",0x10002)' выдаст 'seg000:2'. Обратите внимание, что таким способом нельзя узнать адрес переменной.

Пример:

auto a;

a="Hello!\n";

Message("%a \n",a);

0

Возвращается ноль, а не указатель на переменную.

%p

вывод десятичного целого всегда со знаком, не опуская плюс.

%+d

в оригинале - вывод шестнадцатеричного целого всегда со знаком, но ida воспринимает эту конструкцию точно так же как и ‘x'.

%+x

'n' длина выводимого десятичного числа, при необходимости дополняемая слева пробелами.

Например:

Message("Число-%3d \n”,1);

Число- 1

Если выводимое число не укладывается в 'n' позиций, то оно выводится целиком.

Например:

Message("Число-%3d \n”,10000);

Число-10000

%nd

'n' длина выводимого шестнадцатеричного числа, при необходимости дополняемая слева пробелами.

Например:

Message("Число-%3x \n”,1);

Число- 1

Если выводимое число не укладывается в 'n' позиций, то оно выводится целиком.

Напрмер:

Message("Число-%3x \n”,0x1234);

Число-1234

%nd

‘n’ длина выводимого десятичного числа, при необходимости дополняемая слева незначащими нулями.

Пример:

Message("Число-%03d",1);

Число-001

Если выводимое число не укладывается в ‘n’ позиций, то оно выводится целиком.

Пример

Message("Число-%03d",1000)

Число-1000

%0nx

‘n’ длина выводимого шестнадцатеричного числа, при необходимости дополняемая слева незначащими нулями.

Пример:

Message("Число-%03x",0x1);

Число-001

Если выводимое число не укладывается в ‘n’ позиций, то оно выводится целиком.

Пример:

Message("Число-%03x",0x1234);

Число-1234

%#x

Вывод префикса ‘0x’ перед шестрадцатиричными числами

Пример:

Message(“%#x”,123);

0x123

%#o

Вывод префикса ‘0’ перед восьмеричными числами

Пример:

Message(“%#o”,1);

01

%n

Количество выведенных символов (не поддерживается)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]