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

Long GetStrucQty(void);

Функция возвращает количество структур, созданных вызовом AddStrucEx. Все они отображаются IDA в списке структур, который доступен из меню ~ View \ Structures.

Структуры, обеспечивающие доступ к элементам стековых фреймов в это число не входят.

Если не создано ни одной структуры, то функция возвращает ноль.

Пример использования:

0000 struc_1 struc

0000 field_0 db ?

0001 field_1 db ?

0002 struc_1 ends

0002

0000 ; -------------------

0000

0000 struc_2 struc

0000 field_0 dw ?

0002 struc_2 ends

0002

0000 ; -------------------

0000

0000 struc_3 struc

0000 field_0 db ?

0001 struc_3 ends

Message(“0x%X \n”,

GetStucQty()

);

3

Return

==return

Пояснения

!=0

Число структур, созданных вызовами AddStrucEx

==0

Нет ни одной структуры

Long GetFirstStrucIdx(void);

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

Например:

0000 struc_1 struc

0000 field_0 db ?

0001 field_1 db ?

0002 struc_1 ends

0002

0000 ; -------------------

0000

0000 struc_2 struc

0000 field_0 dw ?

0002 struc_2 ends

0002

0000 ; -------------------

0000

0000 struc_3 struc

0000 field_0 db ?

0001 struc_3 ends

Message(“0x%X \n”,

GetFirstStrucIdx()

);

0x0

Список автоматически перестраивается при операциях удаления или добавления структур, поэтому индексы не остаются постоянными. Использовать их для доступа к структуре не рекомендуется.

Например, если удалить struc_1, а потом повторить вызов GetFirstStrucIdx, то она вновь вернет ноль, однако, теперь это индекс struc_2, а не srtuc_1.

0000 struc_2 struc

0000 field_0 dw ?

0002 struc_2 ends

0002

0000 ; -------------------

0000

0000 struc_3 struc

0000 field_0 db ?

0001 struc_3 ends

Message(“0x%X \n”,

GetFirstStrucIdx()

);

0x0

Return

==return

Пояснения

==0

Индекс первой структуры в списке (всегда ноль)

==BADADDR

Нет ни одной структуры

Long GetLastStrucIdx(void);

Функция возвращает индекс последней структуры в списке. Он всегда равен GetStrucQty() – 1. В том случае если не определено не одной структуры, то функция возвратит ошибку BADADDR.

0000 struc_1 struc

0000 field_0 db ?

0001 field_1 db ?

0002 struc_1 ends

0002

0000 ; -------------------

0000

0000 struc_2 struc

0000 field_0 dw ?

0002 struc_2 ends

0002

0000 ; -------------------

0000

0000 struc_3 struc

0000 field_0 db ?

0001 struc_3 ends

Message(“0x%X \n”,

GetLastStrucIdx()

);

0x2

Return

==return

Пояснения

!=BADADDR

Индекс последней структуры в списке

==BADADDR

Нет ни одной структуры

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