какие файлы пакуются плотнее всего интуит

Тест по теме «Архиваторы»

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

Тест по теме «Архиваторы»

Вариант 1 Задачи 1. Что такое архиватор?

Ответ 1. Программа-интерпретатор

Ответ 2. Программа для резервного копирования файлов

Ответ 3. Программа-транслятор

+Ответ 4. Программа для уменьшения информационного объема (сжатия) файлов

Вариант 2 Задачи 2. Какой из методов архивации не существует?

Вариант 3 Задачи 3. Что из себя представляет архивный файл?

Ответ 1. Файл, защищенный от несанкционированного доступа

Ответ 2. Файл, сжатый с помощью архиватора

Ответ 3. Файл, защищенный от копирования

Ответ 4. Зашифрованный файл

Вариант 1 Задачи 2. Что необходимо выполнить при архивации файлов?

+Ответ 1. Выделить файл или группу файлов

+Ответ 2. Указать метод архивации

Ответ 3. Задать пароль на архив

+Ответ 4. Указать место хранения архивного файла

Вариант 2 Задачи 2. Укажите на программы-архиваторы

Вариант 3 Задачи 2. Какие из программ позволяют создавать многотомные архивы, т.е. архивы, состоящие из нескольких частей?

Вариант 1 Задачи 3. Что такое разархивация (распаковка) архива?

Ответ 1. Временное хранение информации в виде особого файла

+Ответ 2. Извлечение файлов из архива

Ответ 3. Преобразование форматов файлов

Ответ 4. Снятие пароля на архив

Вариант 2 Задачи 3. Где хранятся упакованные файлы?

Ответ 1. Во временном каталоге

+Ответ 2. В специальном файле, имеющем расширение программы архиватора

Ответ 3. В Интернет

Ответ 4. В специально отведенном для архивов месте

Вариант 3 Задачи 3. Как проверить целостность архива?

Ответ 1. С помощью специальных программ

+Ответ 2. Распаковать архив

Ответ 3. Целостность архива, т.е. наличие в нем ошибок проверить нельзя

Ответ 4. Упаковать архив заново

Вариант 1 Задачи 4. Что такое самораспаковывающийся архив?

Ответ 1. Архив с расширением ехе, который после запуска распаковывается без помощи программ-архиваторов

Ответ 2. Архив с расширением zip

Ответ 3. Такие архивы не существуют

Ответ 4. Архив с расширением arj

Вариант 2 Задачи 4. Какие файлы пакуются плотнее всего?

Вариант 3 Задачи 4. На вашем компьютере установлена английская версия программы-архиватора. Выберитекомандудлясозданияархива

Вариант 1 Задачи 5. Каким архиватором принято пользоваться в ОС Linux?

Вариант 2 Задачи 5. Какая комбинация клавиш позволяет извлечь информацию из архива?

Вариант 3 Задачи 5. Что нужно выполнить в данном окне, чтобы создать EXE-архив?

Ответ 1. Активировать флажок Создать непрерывный архив

Ответ 3. Выбрать особый метод сжатия

Ответ 4. Установить переключатель ZIP

Вариант 1 Задачи 6. В чем смысл команды Заблокировать архив?

Ответ 1. После архивирования информация проверяется на ошибки

Ответ 2. В архив добавляется информация для восстановления

+ Ответ 3. Создать архив, изменение которого запрещено

Ответ 4. В архив будет добавлена электронная подпись, содержащая имя автора, время последнего обновления и имя архива

Вариант 2 Задачи 6. В каком режиме работает архиватор?

Ответ 2. В автоматическом

Ответ 4. Создание многотомного архива

Вариант 3 Задачи 6. В каком из ответов показан архивный файл?

Вариант 1 Задачи 7. ОС Windows 7 имеет встроенную в нее службу по архивации данных, которая запускается командой Пуск-Панель управления-Архивирование данных компьютера. Какой архиватор при этом используется?

+Ответ 3. Архивация данных средствами Windows 7

Вариант 2 Задачи 7. В чем смысл команды, изображенной на рисунке?

+Ответ 2. Распаковка

Ответ 3. Создание многотомного архива

Ответ 4. Исправление ошибок на ПК

Вариант 3 Задачи 7. В чем суть архивации данных средствами Windows 7?

Ответ 1. Это способ повышения секретности данных

+Ответ 2. Резервное копирование данных

Ответ 3. Распаковка данных с использованием пароля

Ответ 4. Защита от хакеров

Вариант 1 Задачи 8. В каком из ответов архивации данных произведена средствами Windows 7?

Вариант 2 Задачи 8. Как определить, работая в WINDOWS, что это архивный файл?

Ответ 1. По цвету файла

+Ответ 2. По значку файла или по его расширению

Ответ 3. По имени файла

Ответ 4. Визуально в Проводнике архив не определяется.

Вариант 3 Задачи 8. Какое из названных действий можно произвести с архивным файлом?

Источник

Архивация данных

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

Сжатие информации – это процесс преобразования информации, хранящейся в файле к виду, при котором уменьшается избыточность в ее представлении и соответственно требуется меньший объём памяти для её хранения.

Архивация данных – это уменьшение объёма данных и помещение их в архив.

Архив — это файл, содержащий в себе один или несколько файлов в сжатом виде. Расширения файлов, являющихся архивами, могут быть ZIP, ARJ, RAR и др.

С их помощью можно не только непосредственно сжимать файлы, но и просматривать содержание архивов, контролировать их целостность, распаковывать, восстанавливать поврежденные архивы, устанавливать защиту и т. д.

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

Например: WinRar и WinZip

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

Пуск→Все программы→Архиваторы→ WinRAR→ WinRAR

Целью упаковки (сжатия) файлов обычно являются обеспечение более компактного размещения информации на диске, сокращение времени и соответственно стоимости передачи информации по каналам связи в компьютерных сетях. Кроме того, упаковка в один архивный файл группы файлов существенно упрощает их перенос с одного компьютера на другой, сокращает время копирования файлов на диски, позволяет защитить информацию от несанкционированного доступа, способствует защите от заражения компьютерными вирусами.

Степень сжатия зависит от:

    Используемой программы архиватора Метода сжатия Типа исходного файла

Плотнее всего пакуются текстовые файлы в формате TXT, а также хорошо сжимаются файлы типа DOC (WORD), XLS (книга EXCEL), растровые рисунки (BMP, TIF), векторные рисунки (CDR).

Музыкальные файлы MP3, рисунки типа JPG, GIF, программные файлы с расширением EXE не уменьшаются при архивировании, так как они уже являются сжатыми.

Разархивация данных – это извлечение (распаковка) файлов из архива.

Самораспаковывающийся архив (SFX – Self-extracting) – архив, который способен к самостоятельной разархивации находящихся в нём файлов без использования программы архиватора. Самораспаковывающийся архив имеет расширение EXE.

Многотомный архив – архив, разбитый на несколько файлов (томов), идущих в строгой последовательности друг за другом. Расширение файла указывает на его место в многотомном архиве, например images. r00, images. r01. Тома архива можно размещать на нескольких дискетах. Возможность разбиения на части используется при пересылке больших файлов по электронной почте, так как существуют ограничения на объём вложенного файла.

Что такое архивация? Что такое архив? Что такое архиватор? Какие архиваторы являются самыми распространенными? Для чего используют архивирование файлов? Что такое степень сжатия? От чего зависит степень сжатия? Назовите способы упаковки файлов в архив. Что такое разархивация данных? Что такое многотомный архив? Какой архив называется самораспаковывающимся? Какие файлы пакуются плотнее всего? Какие файлы не имеет смысла архивировать?

Источник

Развертывание приложения

Для случая, рассматриваемого в лабораторной работе, добавим папку Employee в папку приложения Application Folder (внутреннее вложение).

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

Созданному ярлыку необходимо придать индивидуальный вид с помощью иконки. Для этого добавим файл любой иконки в проект (рисунок 15.13).

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

Теперь необходимо связать с ярлыком на рабочем столе созданную нами иконку. Для этого необходимо задать свойство Icon для ярлыка рабочего стола (рисунок 15.16).

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

Процесс задания иконки сопровождается выбором файла (рисунок 15.17) и подтверждением выбранной иконки (рисунок 15.18).

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

В инсталляционный проект необходимо добавить конфигурационный файл Project_K4И_01.exe.config для обеспечения возможности настройки подключения к базе данных пользователя без перекомпиляции проекта (рисунок 15.19).

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

После подключения конфигурационного файла окно Solution Explorer будет иметь вид, аналогичный, приведенному на рисунке 15.20.

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

Прежде чем собирать проект развертывания, может понадобиться проверить некоторые свойства проекта. Если выбрать команду меню Project/Properties (Проект/Свойства) для проекта SetupEmployee, то отобразится диалоговое окно Property Pages (Страницы свойств) (рисунок 15.21).

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

Эти свойства, специфичные для текущей. конфигурации. После выбора конфигурации в выпадающем списке Configuration ( Конфигурация ) можно изменить свойства, перечисленные в таблице 15.2.

После установки свойств проекта можно собирать проект развертывания и создавать инсталляционный пакет приложения SetupEmployee. После построения проекта можно протестировать инсталляцию, щелкнув правой кнопкой мыши по имени проекта в Solution Explorer. Это открывает доступ к командам контекстного Install ( Инсталляция ) и Uninstail (Деинсталляция) (рисунок 15.22). Если все сделано верно, то приложение Project_K4И_01.exe может быть инсталлировано и деинсталлированно.

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

После запуска приложения ярлык появляется и в главном меню (рисунок 15.24).

Источник

Физические модели баз данных

Организация стратегии свободного замещения

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

Если запись, которая занимает требуемое место, не является первой записью в цепочке синонимов, значит, она занимает данное место «незаконно» и при появлении «законного владельца» должна быть «выселена», то есть перемещена на новое место. Механизм перемещения аналогичен занесению новой записи, которая уже имеет синоним, занесенный в файл. Для этой записи ищется первое свободное место и корректируются соответствующие ссылки: в записи, которая является предыдущей в цепочке синонимов для перемещаемой записи, заносится указатель на новое место перемещаемой записи, указатели же в самой перемещаемой записи остаются прежние.

После перемещения «незаконной» записи вновь вносимая запись занимает свое законное место и становится первой записью в новой цепочке синонимов.

Механизмы удаления записей во многом аналогичны механизмам удаления в стратегии с областью переполнения. Однако еще раз кратко опишем их.

Если удаляемая запись является первой записью в цепочке синонимов, то после удаления на ее место перемещается следующая (вторая) запись из цепочки синонимов и проводится соответствующая корректировка указателя третьей записи в цепочке синонимов, если таковая существует.

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

Вопросы для самостоятельной работы

Индексные файлы

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

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

В зависимости от организации индексной и основной областей различают 2 типа файлов: с плотным индексом и с неплотным индексом.Эти файлы имеют еще дополнительные названия, которые напрямую связаны c методами доступа к произвольной записи, которые поддерживаются данными файловыми структурами.

Файлы с плотным индексом называются также индексно-прямыми файлами, а файлы с неплотным индексом называются также индексно-последовательными файлами. Смысл этих названий нам будет ясен после того, как мы более подробно рассмотрим механизмы организации данных файлов.

Файлы с плотным индексом, или индексно-прямые файлы

Рассмотрим файлы с плотным индексом.В этих файлах основная область содержит последовательность записей одинаковой длины, расположенных в произвольном порядке, а структура индексной записи в них имеет следующий вид:

Здесь значение ключа — это значение первичного ключа, а номер записи — это порядковый номер записи в основной области, которая имеет данное значение первичного ключа.

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

записи в основной области существует одна запись из индексной области. Все записи в индексной области упорядочены по значению ключа, поэтому можно применить более эффективные способы поиска в упорядоченном пространстве.

где N — число элементов.

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

На диске записи файлов хранятся в блоках. Размер блока определяется физическими особенностями дискового контроллера и операционной системой. В одном блоке могут размещаться несколько записей. Поэтому нам надо определить количество индексных блоков, которое потребуется для размещения всех требуемых индексных записей, а потому максимальное число обращений к диску будет равно двоичному логарифму от заданного числа блоков плюс единица. Зачем нужна единица? После поиска номера записи в индексной области мы должны еще обратиться к основной области файла. Поэтому формула для вычисления максимального времени доступа в количестве обращений к диску выглядит следующим образом:

Давайте рассмотрим конкретный пример и сравним время доступа при последовательном просмотре и при организации плотного индекса.

Допустим, что мы имеем следующие исходные данные:

Длина записи файла ( LZ ) — 128 байт. Длина первичного ключа ( LK ) — 12 байт. Количество записей в файле ( KZ ) — 100000. Размер блока ( LB ) — 1024 байт.

Рассчитаем размер индексной записи. Для представления целого числа в пределах 100000 нам потребуется 3 байта, можем считать, что у нас допустима только четная адресация, поэтому нам надо отвести 4 байта для хранения номера записи, тогда длина индексной записи будет равна сумме размера ключа и ссылки на номер записи, то есть:

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

Теперь определим необходимое количество индексных блоков:

Мы округлили в большую сторону, потому что пространство выделяется целыми блоками, и последний блок у нас будет заполнен не полностью.

А теперь мы уже можем вычислить максимальное количество обращений к диску при поиске произвольной записи:

Логарифм мы тоже округляем, так как считаем количество обращений, а оно должно быть целым числом.

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

Количество блоков, которое необходимо для хранения всех 100 000 записей, мы определим по следующей формуле:

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

Рассмотрим, как осуществляются операции добавления и удаления новых записей.

При операции добавления осуществляется запись в конец основной области. В индексной области необходимо произвести занесение информации в конкретное место, чтобы не нарушать упорядоченности. Поэтому вся индексная область файла разбивается на блоки и при начальном заполнении в каждом блоке остается свободная область (процент расширения) (рис. 9.7):

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

После определения блока, в который должен быть занесен индекс, этот блок копируется в оперативную память, там он модифицируется путем вставки в нужное место новой записи (благо в оперативной памяти это делается на несколько порядков быстрее, чем на диске) и, измененный, записывается обратно на диск.

Определим максимальное количество обращений к диску, которое требуется при добавлении записи, — это количество обращений, необходимое для поиска записи плюс одно обращение для занесения измененного индексного блока и плюс одно обращение для занесения записи в основную область.

Естественно, в процессе добавления новых записей процент расширения постоянно уменьшается. Когда исчезает свободная область, возникает переполнение индексной области. В этом случае возможны два решения: либо перестроить заново индексную область, либо организовать область переполнения для индексной области, в которой будут храниться не поместившиеся в основную область записи. Однако первый способ потребует дополнительного времени на перестройку индексной области, а второй увеличит время на доступ к произвольной записи и потребует организации дополнительных ссылок в блоках на область переполнения.

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

При удалении записи возникает следующая последовательность действий: запись в основной области помечается как удаленная (отсутствующая), в индексной области соответствующий индекс уничтожается физически, то есть записи, следующие за удаленной записью, перемещаются на ее место и блок, в котором хранился данный индекс, заново записывается на диск. При этом количество обращений к диску для этой операции такое же, как и при добавлении новой записи.

Источник

Структура программных компонентов

Особые секции PE-файла

Секция импорта

В секции импорта перечисляются все dll-файлы, используемые программой, а также все функции и глобальные переменные, импортируемые из этих файлов. Для краткости будем называть такие функции и глобальные переменные символами.

Директория импорта в дополнительном заголовке PE-файла должна указывать на данные, расположенные в секции импорта.

Схема секции импорта приведена на рис. 2.5. Ключевым элементом этой секции является таблица импорта (Import Directory Table), представляющая собой массив так называемых входов в таблицу импорта (Import Directory Entry ). При этом самый последний вход в таблицу импорта заполнен нулями и сигнализирует о конце массива.

какие файлы пакуются плотнее всего интуит. Смотреть фото какие файлы пакуются плотнее всего интуит. Смотреть картинку какие файлы пакуются плотнее всего интуит. Картинка про какие файлы пакуются плотнее всего интуит. Фото какие файлы пакуются плотнее всего интуит

Каждому dll-файлу, используемому программой, соответствует ровно один вход в таблицу импорта. Этот вход содержит указатели (в форме RVA ) на два идентичных массива, которые называются таблицей адресов импорта (Import Address Table, далее IAT) и таблицей имен импорта (Import Lookup Table, далее ILT). Элементы этих массивов описывают символы, импортируемые из данного dll-файла. При этом каждый массив заканчивается нулевым элементом.

Директория таблицы адресов импорта в дополнительном заголовке PE-файла должна указывать на таблицу адресов импорта (IAT).

У тех, кто внимательно прочитал предыдущий абзац, обязательно должен возникнуть вопрос: а зачем нужно хранить в секции импорта два идентичных массива ILT и IAT?

Дело в том, что раньше никакого ILT не было и секция импорта содержала только массив IAT. При загрузке программы происходило так называемое связывание, при котором информация из IAT использовалась для определения адресов импортируемых символов. Эти адреса записывались загрузчиком прямо в IAT (естественно, в образе PE-файла в памяти, а не на диске) поверх той информации, которая там содержалась.

Необходимость в дополнительном массиве ILT возникла после изобретения предварительного связывания, при котором таблица адресов импорта заранее заполняется адресами импортируемых символов. Предварительное связывание осуществляется утилитой BIND, которая вычисляет эти адреса и записывает их прямо в PE-файл на диске. Это позволяет несколько ускорить загрузку программы, но при этом возникают новые проблемы. А что если предварительно связанный dll-файл вдруг изменится? Ведь тогда все адреса могут поменяться? Увы, это так. Правда, загрузчик способен определить этот факт и вычислить новые адреса, и для этого ему как раз и нужна копия таблицы адресов импорта, которая находится в ILT.

Мы не будем рассматривать детали организации секции импорта, относящиеся к механизму предварительного связывания.

Вход в таблицу импорта представляет собой структуру, состоящую из нескольких полей:

RVA ASCIIZ-строки, содержащей имя dll-файла.

RVA таблицы адресов импорта (IAT).

Теперь рассмотрим, как организованы наши идентичные массивы ILT и IAT. Их элементами являются 32-разрядные целые числа. Если старший бит (31-й) такого 32-разрядного числа установлен в 1, то оставшиеся 31 бит обозначают порядковый номер импортируемого символа. Если же старший бит равен 0, то это 32-разрядное число обозначает RVA структуры Hint /Name, в которой хранится имя импортируемого символа.

Структура Hint /Name состоит из трех полей:

Это поле является подсказкой для загрузчика. Оно содержит предполагаемый номер импортируемого символа. Загрузчик сначала ищет этот символ по указанному номеру. В случае неудачи он выполняет бинарный поиск символа по имени.

Имя импортируемого символа в виде ASCIIZ-строки.

Это поле служит для выравнивания структуры по четной границе, то есть оно присутствует только тогда, когда структура имеет нечетный размер. Всегда равно нулю.

Секция релокаций

Директория релокаций в дополнительном заголовке PE-файла должна указывать на таблицу исправлений.

Таблица исправлений разбита на блоки. Каждый блок описывает исправления, которые нужно внести в определенную страницу (4K байт) загруженного в память PE-файла. Каждый блок должен начинаться на 32-битовой границе.

В начале каждого блока располагается заголовок, состоящий из следующих полей:

Это поле содержит RVA страницы PE-файла, исправления в которой описываются данным блоком.

Суммарный размер блока в байтах, включая заголовок.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *