Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Динамически подключаемые библиотеки DLL

Dynamic-Link Library, она же DLL, она же «динамически подключаемая библиотека», она же «библиотека динамической компоновки» — явление, наблюдаемое в операционной системе Windows в виде файлов с расширением dll. Причём, несмотря на название, такие цифровые сущности — нечто большее, нежели просто программные библиотеки. В общем, будем с ими разбираться. Возможно, изложенные сведения окажутся полезными не только для желающих изучать программирование, но и для простых пользователей.

Что это такое

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

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

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

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

Ну а раз уж *dll — это исполняемый (незаметно для пользователя) файл, то в виде Dynamic-Link Library реализуются драйверы для устройств, кодеки мультимедиа, элементы ActiveX, шпионские модули, компьютерные вирусы и вообще что угодно.

Суровая реальность

Поначалу схема вроде бы заработала как надо. Однако вскоре выяснилось, что разные программы желают использовать отличающиеся версии одной и той же DLL, несовместимые друг с другом (проблема получила название DLL Hell — «ад DLL»). Пришлось дозволить им это делать, внедрив для разрешения конфликтов технологию Side-by-Side Assembly (сокращённо SxS), начиная с Windows XP.

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

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

Хотя, конечно, драйверы, кодеки, стандартные библиотеки Windows используются по-прежнему всеми, иначе ОС работать не сможет. (Но она через некоторое время действительно не может — из-за вопиющего захламления и невыносимой путаницы. Потому-то и требуется периодическая переустановка.)

Вирусы

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

Кроме того, хитрые программы любят формировать динамически подключаемые библиотеки «на лету». То есть, в систему ничего подозрительного не устанавливают, генерируют *dll прямо в оперативной памяти. Чаще всего цифровая подпись у коммерческого софта является достоверной, поэтому никакой антивирус возмущаться не станет.

Как с этим жить

Во-первых, предупреждать о попытках нехороших DLL отправлять в интернет украденные у вас данные может толковый брандмауэр (firewall). Что-нибудь вроде Comodo Firewall (www.comodo.com/home/internet-security/firewall.php), который пристально наблюдает за всем происходящим.

Во-вторых, для обнаружения шпионских Dynamic-Link Library, невидимых в обычном списке запущенных процессов, предназначена бесплатная программа Spy Dll Remover (securityxploded.com/spydllremover.php), позволяющая скрупулёзно инспектировать содержимое оперативной памяти, выявлять подозрительные динамические библиотеки и отслеживать, где какой файл *dll окопался.

Заключение

Итак, динамически подключаемые библиотеки задуманы как своеобразные исполняемые файлы, взаимодействующие не с человеком, а с другим софтом в качестве дополнительных модулей. Драйверы позволяют операционной системе работать с железками, кодеки вызываются медиаплеерами, да и в Windows API задействованы всякие kernel32.dll, shell32.dll и вроде того.

В идеале одна и та же DLL предназначена для вызова из разных приложений, что сокращает объём поглощаемых при работе ресурсов, но на практике картина далека от совершенства.

Автор: vanilinkin, специально для xBB.uz, 01.11.2012


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2012-11-01 13:40:57

Метки материала: библиотеки, dll, библиотеки dll, по, windows, софт, программы для компьютера, информационные технологии, программное обеспечение, soft, программирование, ит, it, компьютерные технологии, software, операционная система windows, софт для windows, виды по

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.