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

Long GetEntryOrdinal(long index);

Возвращает ординал точки входа по порядковому номеру из списка. Index может принимать значения от нуля до GetEntryPointQty()-1. Все точки входа (если их больше одной) хранятся в несортированном списке, расположенные в порядке их создания.

Если запросить несуществующий индекс, то функция вернет ноль, а не ошибку BADADDR, что само по себе достаточно странно, потому что по нулевому линейному адресу теоретически возможно создать точку входа, хотя это случается крайне редко, поскольку для большинства файлов адрес загрузки по умолчанию лежит значительно выше и равен 0x10000

Ординал точки входа будет необходим в дальнейшем для функций GetEntryPoint и RenameEntryPoint.

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

auto a,i;

i=0;

while((a=GetEntryOrdinal(i++)))

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

0x122C0

0x1

0x2

0x3

Операнд

Пояснения

index

Индекс точки входа в списке (от нуля до GetEntryPointQty()-1)

Return

Завершение

Пояснения

!=0

Ординал точки входа

0

Ошибка

Long GetEntryPoint(long ordinal)

Возвращает адрес точки входа по ординалу. Если указанный ординал не существует, возвращается ошибка BADADDR.

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

auto a,i;

i=0;

while((a=GetEntryOrdinal(i++)))

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

0x122C0 122c0

0x1 122dd

0x2 122e5

0x3 1002a

Операнд

Пояснения

ordinal

Ординал точки входа

Return

Завершение

Пояснения

!=BADADDR

Адрес точки входа

==BADADDR

Ошибка

Success RenameEntryPoint(long ordinal,char name);

Позволяет изменить имя точки входа по ординалу. При этом предыдущее имя переносится в комментарий. Если операция завершиться неуспешно, то функция вернет неравное нулю число. Такое может, случиться, например, при попытке передать в качестве нового имени пустую строку.

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

seg000:22C0 start proc near

seg000:22C0 call My_1

seg000:22C3 call sub_0_2325

seg000:22C6 call sub_0_235B

seg000:22C9 call sub_0_2374

seg000:22CC call sub_0_23B6

seg000:22CF call sub_0_23F8

seg000:22CF start endp

RenameEntryPoint(0x122C0,”main”);

seg000:22C0 main proc near ; start

seg000:22C0 call My_1

seg000:22C3 call sub_0_2325

seg000:22C6 call sub_0_235B

seg000:22C9 call sub_0_2374

seg000:22CC call sub_0_23B6

seg000:22CF call sub_0_23F8

seg000:22CF main endp

Операнд

Пояснения

ordinal

Ординал точки входа

name

Новое имя функции

Return

Завершение

Пояснения

!=0

Успешно

==0

Ошибка

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