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

Long xtol (char str);

Функция преобразовывает строковое шестнадцатеричное значение str в длинное целое.

операнд

Пояснение

srt

Строковое шестнадцатиричное число

Return

==return

пояснения

длинное целое

==0

Ошибка

Разрешается использовать спецификаторы 'x' и 'h' для указания системы исчисления, в противном случае будет использоваться система исчисления по умолчанию (как правило, шестнадцатеричная).

Функция понимает одиночный знак '+' или '-', но "спотыкается" на '+-1' или на префиксе шестнадцатеричных чисел '$', используемых языком Pascal.

Числом считается все до первого нецифрового символа (кроме "A-F"). Так, например:

Message(“0x%X \n”,

xtol("123-2")

);

0x123

В случае ошибки возвращается ноль. Так, например.

Message(“0x%X \n”,

xtol("*1")

);

0x0

Char atoa (long ea);

Функция преобразовывает линейный адрес в строку, используя символьные имена сегментов, выбирая сегмент с наибольшим из возможных адресов.

операнд

Пояснение

ea

32-разрядный линейный адрес

Return

==return

пояснения

!=””

Сегментный адрес в строковом представлении

==””

Ошибка

Так, например:

+-[_]------------------------ Program Segmentation ----------------------3-[]-+

¦ Name Start End Align Base Type Cls 32es Start EA End EA ‑

¦ seg000 00000000 000032EA byte 1000 pub CODE N FFFF 00010000 000132EA 0_

¦ _

¦ ­

+1/1 ______________________________________________________________-+

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);

Функция преобразовывает длинное целое в символьное с произвольной системой исчисления.

Функция принимает следующие операнды:

операнд

назначение

n

Задает операнд

==n

Операнд

0

первый слева операнд

1

Втрой, третий и остальные

-1

все операнды

radix

требуемая система исчисления.

ЗАМЕЧАНИЕ: В контекстной помощи IDA сообщается, что 'radix' может принимать значения 2, 8, 10, 16. Однако это стандартная Си-функция, и она может принимать и другие значения, например, 3 или 11. Точнее, все кроме 0 и 1, а так же не более 24, при которых, независимо от аргумента, функция возвращает пустую строку.

Return

==return

пояснения

!=””

Сегментный адрес в строковом представлении

==””

Ошибка

Пример:

auto a;

for (a=0;a<50;a++)

Message ("%x, %s \n",

a,

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,

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