Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 848
от 10.09.2007, 02:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 390, Экспертов: 30
В номере:Вопросов: 1, Ответов: 2


Вопрос № 100869: Здравствуйте уважаемые эксперты. Вопрос по поводу РЕ, в часности по таблице импорта. Таблица импорта начинается с массива структур IMAGE_IMPORT_DESCRIPTOR: typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics;...

Вопрос № 100.869
Здравствуйте уважаемые эксперты.
Вопрос по поводу РЕ, в часности по таблице импорта.
Таблица импорта начинается с массива структур IMAGE_IMPORT_DESCRIPTOR:
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
union {
DWORD Characteristics; // 0 for terminating null import descriptor
DWORD OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
};
DWORD TimeDateStamp; // 0 if not bound,
// -1 if bound, and real date ime stamp
// in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
// O.W. date/time stamp of DLL bound to (Old BIND)

DWORD ForwarderChain; // -1 if no forwarders
DWORD Name;
DWORD FirstThunk; // RVA to IAT (if bound this IAT has actual addresses)
} IMAGE_IMPORT_DESCRIPTOR;
typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR;

Кол-во структур нигде не указывается,
но каждый эллемент массива соответствует DLL, из которой импортируются функции. Во всей доступной мне документации четко говорится, что первый эллемент последнего члена массива нулевой. Так оно и есть, но в некоторых модулях(по моим наблюдениям это приложения собраные линкерами фирмы Борланд), во всех членах массива первый эллемент нулевой. Вопрос собственно в следующем: как загрузчик определяет какая структура
последняя в массиве.
Отправлен: 05.09.2007, 02:16
Вопрос задал: Egugondiy (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sov
Здравствуйте, Egugondiy!
Конец массива определяет структура с полями заполненными нулями. Т.е. размер структуры IMAGE_IMPORT_DESCRIPTOR 20 байт и в конце массива 20 байт нулей.
Поля OriginalFirstThunk и FirstThunk содержат RVA двух разных массивов структур IMAGE_THUNK_DATA. Оба массива абсолютно одинаковы (OriginalFirstThunk равно нулю, если применялся компоновщик борланд). При загрузке образа в память элементы массива FirstThunk заменяются адресами соответсвующих функций.
http://www.wasm.ru/article.php?article=1002006
Ответ отправил: Sov (статус: 6-ой класс)
Ответ отправлен: 05.09.2007, 07:37
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое.

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Egugondiy!

Почитайте статью: Формат РЕ, глава: Импортирование в РЕ-файлах.

Компиляторы Борланд создают только один массив: FirstThunk.
Удачи!
---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 05.09.2007, 14:50
Оценка за ответ: 5
Комментарий оценки:
Я уже разобрался но все равно спасибо.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 30.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное