· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Неясность в статье "Об упаковщиках - часть 1"

Посл.отвђт Сообщенiе


Дата: Сен 6, 2004 15:37:29

Здравствуйте,

В главе про таблицу импорта есть такая информация:

"Перед тем, как начинать разбирать структуру, очень важно четко представлять, что в последнее время развелось много всяких наворотов на бедную IAT.

NTDLL.dll (функция LdrpWalkImportDescriptor) может читать IAT из:


1) OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT] -
из IMAGE_IMPORT_DESCRIPTOR.OriginalFirstThunk,
если удовлетворяются определенные условия.

2) OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT] –
т.е., из IMAGE_IMPORT_DESCRIPTOR.FirstThunk - это стандарт

3) OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT]
- все файлы Windows имеют такую привязку
"

Так вот не понятен пунккт 2. Там действительно есть значение (на примере taskmgr.exe из w2k sp4), но оно указывает в секцию .text и совсем не понятно как из этого следует, что грузиться должно из IMAGE_IMPORT_DESCRIPTOR.FirstThunk. Вопрос о том что это за значение в IMAGE_DIRECTORY_ENTRY_IAT и почему оно указывает в секцию кода ?

Спасибо


Дата: Сен 6, 2004 15:55:41

> Вопрос о том что это за значение в
> IMAGE_DIRECTORY_ENTRY_IAT и почему оно указывает в
> секцию кода

Там находится собственно IAT =) А в нем уже заполненные адреса функций, и если версии библиотек совпадут, то теоретически загрузчику не надо связывать импорт - все уже сделано до него.


Дата: Сен 6, 2004 16:05:42

А в каком формате там все хранится ? И можно ли все это убить ?


Дата: Сен 6, 2004 16:16:52

Все, понял :) Я что-то думал как же лоадер знает к какой библиотеке какой адрес функции относится... все дошло... Только попутно возник еще один вопрос, как же лоадер проверку версий библиотеки производит ? и эти адреса там и остаются или он их копирует куда-то ? вызов же идет как CALL DWORD PTR [xxxxxxxx], так куда же эти хххххххх указывают ?


Дата: Сен 6, 2004 18:54:26

вызов же идет как CALL DWORD PTR [xxxxxxxx], так куда же эти хххххххх указывают ?


И продолжаем читать статью. И внимательно смотрим на рисунки :)


Дата: Сен 6, 2004 22:42:53

Прошу прощения, за то что не по теме, но хотелось бы спросить Володю о следующей части, она будет или на этом 2eh?


Дата: Сен 6, 2004 23:54:50

> как же лоадер проверку версий библиотеки производит?

А там в этом BoundImport'e для каждой лиьы записана ее time-date-stamp - вот иго загрузчик и сравнивает с там что имеет в загруженной либе.

> вызов же идет как CALL DWORD PTR [xxxxxxxx], так куда
> же эти хххххххх указывают ?

А указывают они какраз в IAT, читать статью адназначна!


Дата: Сен 7, 2004 01:30:30

Прошу прощения, за то что не по теме, но хотелось бы спросить Володю о следующей части, она будет или на этом 2eh?


Да. Будет. Очень интенсивно работаю.


Дата: Сен 7, 2004 07:26:30

volodya, Dr.Golova
Спасибо, разобрался что и куда указывает и как вызывается :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.042