Здравствуйте, В главе про таблицу импорта есть такая информация: "Перед тем, как начинать разбирать структуру, очень важно четко представлять, что в последнее время развелось много всяких наворотов на бедную 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 и почему оно указывает в секцию кода ? Спасибо
> Вопрос о том что это за значение в > IMAGE_DIRECTORY_ENTRY_IAT и почему оно указывает в > секцию кода Там находится собственно IAT =) А в нем уже заполненные адреса функций, и если версии библиотек совпадут, то теоретически загрузчику не надо связывать импорт - все уже сделано до него.
Все, понял Я что-то думал как же лоадер знает к какой библиотеке какой адрес функции относится... все дошло... Только попутно возник еще один вопрос, как же лоадер проверку версий библиотеки производит ? и эти адреса там и остаются или он их копирует куда-то ? вызов же идет как CALL DWORD PTR [xxxxxxxx], так куда же эти хххххххх указывают ?
вызов же идет как CALL DWORD PTR [xxxxxxxx], так куда же эти хххххххх указывают ? И продолжаем читать статью. И внимательно смотрим на рисунки
Прошу прощения, за то что не по теме, но хотелось бы спросить Володю о следующей части, она будет или на этом 2eh?
> как же лоадер проверку версий библиотеки производит? А там в этом BoundImport'e для каждой лиьы записана ее time-date-stamp - вот иго загрузчик и сравнивает с там что имеет в загруженной либе. > вызов же идет как CALL DWORD PTR [xxxxxxxx], так куда > же эти хххххххх указывают ? А указывают они какраз в IAT, читать статью адназначна!
Прошу прощения, за то что не по теме, но хотелось бы спросить Володю о следующей части, она будет или на этом 2eh? Да. Будет. Очень интенсивно работаю.