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

Char GetStrucName(long id);

Функция возвращает имя структуры по ее идентификатору. Очень часто используется совместно с GetStrucId.

Например:

0000 MyGoodStuc struc ; (sizeof=0x2)

0000 field_0 dw ?

0002 MyGoodStuc ends

0002

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

0000

0000 MyStruc struc ; (sizeof=0x5)

0000 field_0 dw ?

0002 field_2 dw ?

0004 field_4 db ?

0005 MyStruc ends

0005

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

0000

0000 My struc ; (sizeof=0)

0000 My ends

0000

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

0000

0000 MyNewStruc struc ; (sizeof=0)

0000 MyNewStruc ends

0000

auto a;

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

Message("%s \n",

GetStrucName(GetStrucId(a))

);

MyGoodStuc

MyStruc

My1

MyNewStruc

Операнд

Пояснения

id

Идентификатор (ID) структуры

Return

==return

Пояснения

!=””

Имя структуры

==””

Ошибка

Char GetStrucComment(long id,long repeatable);

Функция возвращает комментарии к структуре. В текущих версиях, включая IDA 4.0, комментарии к структурам поддерживаются лишь частично. Так, например, отсутствует возможность интерактивного комментирования функций (приходится пользоваться вызовом SetStuctComment), повторяемые комментарии поддерживаются лишь частично, что подтверждается следующим примером:

SetStrucComment(

GetStrucIdByName("_msExcInfo"),

" MyComment",1);

0000 ; MyComment

0000 _msExcInfo struc ; (sizeof=0x8) ; XREF: .rdata:004077E6

0000 ; .rdata:00407780r ...

0000 Id dd ? ; sss

0004 Proc dd ? ; offset (FFFFFFFF)

0008 _msExcInfo ends

.rdata:004077E6 dd 1879048192 ; Id

.rdata:004077E6 dd 0 ; Pro

Message(“%s \n”,

GetStrucComment(

GetStrucIdByName("_msExcInfo"),

1);

MyComment

Обратите внимание, что IDA не отобразила повторяемый комментарий в строке rdata:004077E6, хотя это и следовало бы.

Операнд

Пояснения

id

Идентификатор (ID) структуры

Repeatable

Флаг

Пояснения

0

Неповторяемый комментарий

1

Повторяемый комментарий

Return

Завершение

Пояснения

!=””

Комментарий

“”

Ошибка

Long GetStrucSize(long id);

Функция возвращает размер структуры в байтах, который равен сумме размера всех ее членов. Он отображается в качестве комментария в окне просмотра структур.

Допускается существование структур без единого элемента, размер которых равен нулю.

0000 _msExcInfo struc ; (sizeof=0x8)

0000

0000 Id dd ?

0004 Proc dd ?

0008 _msExcInfo ends

Message("0x%X \n",

GetStrucSize(GetStrucIdByName("_msExcInfo"))

);

0x8

0000 struc_3 struc ; (sizeof=0)

0000 struc_3 ends

Message("0x%X \n",

GetStrucSize(GetStrucIdByName("struc_3"))

);

0x0

Операнд

Пояснения

id

Идентификатор (ID) структуры

Return

==return

Пояснения

!=BADADDR

Размер структуры

==BADADDR

Ошибка

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