Библиотека динамических ссылок
-
Основы DLL
- DLL — это динамически подключаемый модуль, который содержит код и данные.
- DLL-файлы могут быть связаны с исполняемым файлом во время компиляции или во время выполнения.
- DLL-файлы могут содержать функции, классы, ресурсы и другие компоненты.
-
Компоновка и связывание
- Компоновщик объединяет код из объектных файлов в исполняемый файл.
- Связывание включает в себя поиск и загрузку необходимых DLL-файлов.
- Связывание может быть статическим или динамическим.
-
Динамическое связывание
- Динамическое связывание позволяет связывать код во время выполнения.
- Используется для загрузки DLL-файлов, которые могут быть изменены или добавлены.
- Включает функции API LoadLibrary и GetProcAddress.
-
Задержка загрузки
- Задержка загрузки позволяет отложить загрузку DLL до момента, когда она действительно понадобится.
- Используется для предотвращения сбоев при запуске приложения.
-
Компилятор и язык
- Delphi использует ключевое слово library вместо program и перечисляет функции в разделе exports.
- Visual Basic поддерживает только динамическое связывание и позволяет создавать ActiveX DLL.
- C и C++ используют атрибуты __declspec для указания импортируемых и экспортируемых функций.
-
Примеры программирования
- Приведены примеры использования импорта и явного связывания в различных языках программирования.
-
Компонентная объектная модель
- COM определяет стандарт для размещения объектов в DLL- и EXE-файлах.
- Позволяет совместно использовать ресурсы и внедрять мощные серверные части в GUI-интерфейсы.
-
Перехват библиотеки DLL
- Уязвимость, известная как перехват библиотеки DLL, позволяет заменить DLL вредоносным файлом.
- Программы, запускаемые из небезопасных мест, подвержены этой уязвимости.
-
Рекомендации
- Ссылки на литературу и ресурсы для углубленного изучения темы DLL.