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

Long GetStrucPrevOff(long id,long offset);

Функция возвращает смещение начала предыдущего элемента структуры. В остальном полностью идентична GetStrucNextOff

Смещение конца (не начала!) последнего элемента можно получить вызовом GetStrucPrevOff(id,-1);

Если неверно задан идентификатор или структура не содержит ни одного члена, то обоих случаях возвращается ошибка BADADDR

Например:

0000 _msExcept struc ; (sizeof=0x22)

0000 Magic dd ?

0004 Count dd ?

0008 InfoPtr dd ?

000C CountDtr dd ?

0010 DtrPtr dd ?

0014 _unk dd 3 dup(?)

0020 Info dw ?

0022 _msExcept ends

auto a;

a=-1;

for (;;)

{

a=GetStrucPrevOff

(GetStrucIdByName("_msExcept"),a);

if (a==-1) break;

Message("0x%X \n",a);

}

0x22

0x20

0x14

0x10

0xC

0x8

0x4

0x0

0000 struc_9 struc ; (sizeof=0)

0000 struc_9 ends

Message("0x%X \n",

GetStrucPrevOff(

GetStrucIdByName("struc_9"))

);

0xFFFFFFFFF

Операнд

Пояснения

id

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

Return

Завершение

Пояснения

!=BADADDR

Смещение начала предыдущего члена структуры

==BADADDR

Ошибка

Long GetFirstMember(long id);

Функция возвращает смещение начала первого члена структуры. Это значение всегда равно нулю, за тем исключением, когда неверно задан идентификатор или структура не содержит ни одного члена. В обоих случаях возвращается ошибка BADADDR

Например

0000 _msExcInfo struc ; (sizeof=0x8)

0000 Id dd ?

0004 Proc dd ?

0008 _msExcInfo ends

Message("0x%X \n",

GetFirstMember(

GetStrucIdByName("_msExcept"))

);

0x0

0000 struc_9 struc ; (sizeof=0)

0000 struc_9 ends

Message("0x%X \n",

GetFirstMember(

GetStrucIdByName("struc_9"))

);

0xFFFFFFFFF

Операнд

Пояснения

id

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

Return

Завершение

Пояснения

!=BADADDR

Смещение начала первого члена структуры

==BADADDR

Ошибка

Long GetLastMember(long id);

Функция возвращает смещение начала (не конца!) последнего члена структуры. Обратите внимание, что этот результат не совпадает со значением, взращаемым GetStrucNextOff для последнего элемента!

Например:

0000 _msExcept struc ; (sizeof=0x22)

0000

0000 Magic dd ?

0004 Count dd ?

0008 InfoPtr dd ?

000C CountDtr dd ?

0010 DtrPtr dd ?

0014 _unk dd 3 dup(?)

0020 Info dw ?

0022 _msExcept ends

auto a;

a=0;

for (;;)

{

Message("0x%X \n",a);

a=GetStrucNextOff

(GetStrucIdByName("_msExcept"),a);

if (a==-1) break;

}

0x0

0x4

0x8

0xC

0x10

0x14

0x20

0x22

Message("0x%X \n",

GetLastMember(

GetStrucIdByName("_msExcept”))

);

0x20

Если неверно задан идентификатор или структура не содержит ни одного члена, то обоих случаях возвращается ошибка BADADDR

Операнд

Пояснения

id

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

Return

Завершение

Пояснения

!=BADADDR

Смещение начала последнего члена структуры

==BADADDR

Ошибка

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