Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Dynamic Link Library — Wikipédia
Dynamic Link Library — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

Page d’aide sur l’homonymie

Pour les articles homonymes, voir DLL et Dynamic.

Dynamic Link Library
Caractéristiques
Extension
.dllVoir et modifier les données sur Wikidata
Type MIME
application/vnd.microsoft.portable-executable, application/x-msdownloadVoir et modifier les données sur Wikidata
Développé par
IBM et Microsoft
Type de format
Bibliothèque logicielle

modifier - modifier le code - modifier WikidataDocumentation du modèle

Une Dynamic Link Library (en français, bibliothèque de liens dynamiques[1],[2],[3]) est une bibliothèque logicielle dont les fonctions sont chargées en mémoire par un programme, au besoin, lors de son exécution, par opposition aux bibliothèques logicielles statiques ou partagées dont les fonctions sont chargées en mémoire avant le début de l'exécution du programme.

.dll est une extension de nom de fichier[4] utilisée par des fichiers contenant une Dynamic Link Library.

Ces bibliothèques logicielles ont été inventées dans Multics en 1964 et existent dans Windows depuis 1985[5],[6]. Elles constituent une des fondations des systèmes d'exploitation Windows et sont utilisées pour les interfaces de programmation, les pilotes, les widgets et les polices de caractères.

Fonctionnement

[modifier | modifier le code]

Un programme informatique est construit à partir d'un ensemble de fichiers source contenant des fonctions[6]. Les bibliothèques logicielles sont des lots de fonctions stockées dans des fichiers. Une bibliothèque logicielle contient généralement un ensemble de fonctions autour du même sujet[7]. Par cette technique, une modification subséquente d'une des fonctions de la bibliothèque nécessite de la re-créer, sans qu'il soit nécessaire de re-créer la totalité de l'application[6].

Cette technique nécessite de charger en mémoire les fichiers de bibliothèque en même temps que le programme qui les utilise[8], ensuite de quoi un programme — l'éditeur de liens — rend l'application opérationnelle en tissant des liens entre les différents fichiers[8].

Les bibliothèques logicielles peuvent être :

  • Statiques

Une bibliothèque statique est incorporée dans un programme et l'édition de liens est effectuée pendant sa construction. Lorsqu'une bibliothèque statique est modifiée, chaque programme qui l'utilise doit être reconstruit pour incorporer les modifications[7] ;

  • Partagées

Une bibliothèque partagée n'est pas incorporée dans les programmes qui l'utilisent, mais est reliée à ces programmes lors de leur chargement, c'est-à-dire immédiatement avant l'exécution du programme. Une bibliothèque partagée peut être utilisée par de nombreux programmes et une modification de la bibliothèque ne nécessite pas de reconstruction des programmes, du moment que l'interface de programmation de la bibliothèque ne change pas[7] ;

  • Dynamiques (DLL)

Les bibliothèques dynamiques sont identiques aux bibliothèques partagées, mais sont utilisées d'une manière différente. De telles bibliothèques sont reliées à l'application lorsque celle-ci en a besoin. Les programmes qui les utilisent comportent les instructions nécessaires au chargement et à la liaison[7].

Dans la technique de la liaison dynamique utilisée par les DLL, l'opération de liaison est exécutée en deux temps : tout d'abord, au moment de la construction de l'application, l'éditeur de liens crée des connecteurs, puis au chargement — immédiatement avant l'exécution de l'application — les connecteurs sont reliés entre eux[8]. Les DLL sont au format COFF, également utilisé dans IBM AIX[9].

Dans Windows

[modifier | modifier le code]

Les DLL sont une des fondations des systèmes d'exploitation Windows. Les fonctions internes de Windows sont mises à disposition des programmes par des interfaces de programmation mises en œuvre par des fichiers DLL[10]. Les trois principales bibliothèques sont User32.dll (manipulation de l'interface utilisateur), GDI32.dll (manipulation des dispositifs d'impression et d'affichage), et Kernel32.dll (utilisation des fonctions du noyau de Windows concernant les fichiers et les processus). D'autres fichiers de Windows souvent utilisés en programmation sont comdlg32.dll, MAPI32.dll, netapi32.dll et winmm.dll[10]. Les fichiers DLL sont également utilisés pour de nombreuses extensions : pilotes, boîtes de dialogue, widgets, polices de caractères[11].

Windows offre la possibilité de détourner ou de subtiliser les fonctions des DLL. Outre des raisons légitimes[Lesquelles ?], ces possibilités sont exploitées par des rootkit, qui injectent des fonctionnalités à l'insu de l'utilisateur en subtilisant les DLL du système d'exploitation[12].

Programmation

[modifier | modifier le code]

Des langages comme C, C++ ou Delphi sont aptes à créer des DLL qui peuvent être exploitées par des programmes. De nombreux outils de développement qui proposent des bibliothèques d'exécution à l'instar des Microsoft Foundation Class Library (MFC) ou de la Visual Component Library (VCL) de Borland proposent soit une liaison statique (intégration directe du code dans l'exécutable) soit une liaison dynamique (la bibliothèque est alors à distribuer sous forme de DLL).

L'utilisation de DLL permet de mettre à disposition du code et de rendre modulaire l'architecture d'une application. La mise à jour de celle-ci peut également se faire en remplaçant uniquement les DLL obsolètes. Néanmoins, l'utilisation de plusieurs versions concurrentes de DLL est problématique sous Windows et conduit à certaines incompatibilités regroupées sous le terme DLL Hell.

DLL hell (l'enfer des DLL)

[modifier | modifier le code]

La construction des DLL permet de facilement les remplacer pour y ajouter des nouvelles fonctions et améliorer les fonctions existantes. Il arrive cependant que le remplacement entraîne des modifications en profondeur des fonctions existantes, ce qui entraîne des pannes et un fonctionnement erroné des programmes qui l'utilisent. De plus, les DLL réalisées avec un compilateur tendent à être incompatibles avec les exécutables réalisés avec un autre compilateur.

C'est une cause connue d'appels aux services techniques qui ont baptisé ce phénomène DLL hell, « l'enfer des DLL » en anglais[13].

Lorsqu'un fichier DLL manque sur l'ordinateur de l'utilisateur, le lancement d'un programme qui s'en sert provoquera un message DLL Not found (« DLL non trouvée ») qui n'est d'aucune utilité pour l'utilisateur. Si la DLL existe mais n'est pas valable pour le programme, alors celui-ci n'a aucun moyen de le vérifier, ce qui peut entraîner des messages DynaLink error voire un crash du programme[14]. Une des causes de tels incidents est que Windows n'offre pas de mécanisme interne de contrôle de version — mécanisme qui garantit qu'un programme sera associé avec la bibliothèque pour laquelle il a été construit[9].

Un des moyens qu'ont les programmeurs de lutter contre le DLL hell est de charger explicitement le fichier DLL : au lieu que le fichier soit automatiquement chargé au lancement du programme qui l'utilise, le programme utilise la fonction LoadLibrary, qui charge le fichier s'il existe[14]. La principale différence entre cette méthode et la méthode classique est que l'exécutable ne connait pas à l'avance les adresses des fonctions dont il aura besoin.

Un autre moyen est de copier tout ou une partie du code source de la DLL dans celui du futur exécutable afin de se passer de la dite DLL. Cela peut, cependant, être illégal (souvent à cause d'une incompatibilité des licences) ou techniquement impossible (généralement parce que le code source de la DLL n'est pas disponible) mais, même quand c'est à la fois possible et légal, cela reste généralement exclu en raison d'usages.

DLL hijacking

[modifier | modifier le code]

À cause d'une vulnérabilité appelée « DLL hijacking », « DLL spoofing », « DLL preloading », « DLL side-loading »[15] ou « binary planting », plusieurs programmes chargent et exécutent des DLL malicieuses qui se trouvent dans les mêmes dossiers que des fichiers ouverts par ces programmes[16],[17],[18],[19]. Les programmes exécutés à partir de dossiers non protégés, tels que « Téléchargements » et « Tmp » qui sont en lecture/écriture, sont plus susceptibles d'être visés[20],[21],[22],[23],[24],[25],[26].

Cette vulnérabilité aurait été découverte en 2000 pour la première fois[27]. En août 2010, après qu'elle soit redécouverte, plusieurs médias de différents pays en discutent. Plusieurs centaines de programmes sont alors jugés vulnérables[28]. En avril 2022, il est révélé que VLC media player aurait fait l'objet d'une telle attaque pendant une quinzaine d'années[15].

Notes et références

[modifier | modifier le code]
  1. ↑ « DLL en Visual C++ », sur msdn, Microsoft (consulté le 1er novembre 2014)
  2. ↑ « Glossaire DLL », sur Symantec (consulté le 31 octobre 2014)
  3. ↑ « Tutoriel de création et d’utilisation d’une bibliothèque dynamique (dll) » [PDF], sur ISIMA (consulté le 31 octobre 2014)
  4. ↑ « Définition DLL et fonctionnement d'un fichier DLL », sur fichier-dll.fr (consulté le 31 octobre 2014)
  5. ↑ (en)InfoWorld, 23 mai 1988 (ISSN 0199-6649).
  6. ↑ a b et c (en) I. A. Dhotre - A. A. Puntambekar, Systems Programming, Technical Publications - 2008 (ISBN 9788184313925).
  7. ↑ a b c et d (en) Sibsankar Haldar - Alex Alagarsamy Aravind, Operating Systems, Pearson Education India - 2010 (ISBN 9788131730225).
  8. ↑ a b et c (en) Joseph A. Fisher - Paolo Faraboschi - Clifford Young,Embedded Computing: A Vliw Approach To Architecture, Compilers And Tools, Elsevier - 2005, (ISBN 9781558607668).
  9. ↑ a et b (en) John Calcote, Autotools: A Practitioner's Guide to GNU Autoconf, Automake, and Libtool, No Starch Press, 2010 (ISBN 9781593272067).
  10. ↑ a et b Greg Perry, Visual Basic 6, Pearson Education France (ISBN 9782744040825).
  11. ↑ (en) Marco Cantu, Mastering Delphi 6, John Wiley & Sons - 2006 (ISBN 9780782152784).
  12. ↑ (en) Greg. Hoglund - James Butler, Rootkits: Subverting the Windows Kernel, Addison-Wesley Professional - 2006 (ISBN 9780321294319).
  13. ↑ (en) Kate Gregory, Microsoft Visual C++ .Net 2003: Kick Start, Sams Publishing, 2004 (ISBN 9780672326004).
  14. ↑ a et b (en) Mark A. Deloura, Game Programming: Gems 2, Cengage Learning - 2001 (ISBN 9781584500544).
  15. ↑ a et b (en) Ionut Ilascu, « Chinese hackers abuse VLC Media Player to launch malware loader », BleepingComputer, 5 avril 2022
  16. ↑ (en) DLL Spoofing in Windows (lire en ligne [PDF])
  17. ↑ (en) « DLL Preloading Attacks », sur msdn.com (consulté le 25 mars 2018)
  18. ↑ (en) « More information about the DLL Preloading remote attack vector », sur technet.com (consulté le 25 mars 2018)
  19. ↑ (en) « An update on the DLL-preloading remote attack vector », sur technet.com (consulté le 25 mars 2018)
  20. ↑ (en) Will Dormann, « Carpet Bombing and Directory Poisoning », sur SEI Blog, Carnegie Mellon UNiversity, 4 septembre 2008
  21. ↑ (en) « Dev to Mozilla: Please dump ancient Windows install processes », sur theregister.co.uk (consulté le 25 mars 2018)
  22. ↑ (en) « Gpg4win - Security Advisory Gpg4win 2015-11-25 », sur www.gpg4win.org (consulté le 25 mars 2018)
  23. ↑ (en) « McAfee KB - McAfee Security Bulletin: Security patch for several McAfee installers and uninstallers (CVE-2015-8991, CVE-2015-8992, and CVE-2015-8993) (TS102462) », sur service.mcafee.com (consulté le 25 mars 2018)
  24. ↑ (en) « fsc-2015-4 - F-Secure Labs », sur f-secure.com (consulté le 25 mars 2018)
  25. ↑ (en) « ScanNow DLL Search Order Hijacking Vulnerability and Deprecation », sur rapid7.com, 21 décembre 2015 (consulté le 25 mars 2018)
  26. ↑ (en) VeraCrypt Team, « oss-sec: CVE-2016-1281: TrueCrypt and VeraCrypt Windows installers allow arbitrary code execution with elevation of privilege », sur seclists.org (consulté le 25 mars 2018)
  27. ↑ (en) « Double clicking on MS Office documents from Windows Explorer may execute arbitrary programs in some cases », sur guninski.com (consulté le 25 mars 2018)
  28. ↑ (en) « Binary Planting - The Official Web Site of a Forgotten Vulnerability - ACROS Security », sur binaryplanting.com (consulté le 25 mars 2018)

Voir aussi

[modifier | modifier le code]

Bibliographie

[modifier | modifier le code]
  • Hart, Johnson. Windows System Programming Third Edition. Addison-Wesley, 2005. (ISBN 0-321-25619-0)
  • Rector, Brent et al. Win32 Programming. Addison-Wesley Developers Press, 1997. (ISBN 0-201-63492-9).

Liens externes

[modifier | modifier le code]
  • dllexport, dllimport sur MSDN
  • Dynamic-Link Libraries sur MSDN
  • What is a DLL? sur le site de Microsoft
  • Dynamic-Link Library Functions sur MSDN
  • Microsoft Portable Executable and Common Object File Format Specification
  • Microsoft specification for dll files
v · m
Composants de Microsoft Windows
Principal
  • Active Scripting
    • WSH
    • VBScript
    • JScript
  • Aero
  • AutoPlay
  • AutoRun
  • ClearType
  • COM
    • ActiveX
    • COM Structured storage
    • DCOM
    • OLE
    • OLE Automation
    • Transaction Server
  • Desktop Window Manager
  • DirectX
  • Explorateur de fichiers
  • Graphics Device Interface
  • Imaging Format
  • .NET Framework
  • Search
    • IFilter
    • Saved search
  • Server Message Block
  • Shell
    • Extensions
    • Namespace
    • Dossier spécial
  • Menu démarrer
  • Previous Versions
  • Taskbar
  • Windows USER
  • Console
  • XML Paper Specification
Configuration
  • Sauvegarder et restaurer
  • Cmd
  • Panneau de configuration
  • Device Manager
  • Nettoyage de disque
  • Défragmenteur de disque
  • Driver Verifier
  • Observateur d'événements
  • Console de gestion
  • Netsh
  • Problem Reports and Solutions
  • Sysprep
  • System Policy Editor
  • System Configuration
  • Gestionnaire des tâches
  • Sfc
  • Restauration du système
  • WMI
  • Windows Installer
  • Windows PowerShell
  • Windows Update
  • WAIK
  • WinSAT
  • Windows Easy Transfer
Applications
  • Calculatrice
  • Calendar
  • CD Player
  • Table de caractères
  • Contacts
  • Création de DVD Windows
  • Edge
  • Fax and Scan
  • Gestionnaire de périphériques mobiles
  • Internet Explorer
  • Journal
  • Mail
  • Loupe
  • Media Center
  • Media Player
    • sur Windows 11
  • Meeting Space
  • Mobility Center
  • Movie Maker
  • Narrator
  • Bloc-notes
  • Paint
  • Photo Gallery
  • Private Character Editor
  • Connexion Bureau à distance
  • Assistance à distance Windows
  • Gadget du bureau
  • Outil Capture
  • Magnétophone
  • Reconnaissance vocale de Windows
  • Tablet PC Input Panel
  • WordPad
Jeux
  • Chess Titans
  • FreeCell
  • Hearts
  • Hold 'Em
  • InkBall
  • Mahjong Titans
  • Démineur
  • Purble Place
  • Solitaire
  • Spider
  • Tinker
Noyau
  • Ntoskrnl.exe
  • hal.dll
  • System Idle Process
  • Svchost.exe
  • Base de registre
  • Service Control Manager
  • DLL
  • EXE
  • NTLDR / Boot Manager
  • Winlogon
  • Recovery Console
  • I/O
  • WinRE
  • WinPE
  • Kernel Patch Protection
Services
  • BITS
  • Planificateur de tâches
  • Wireless Zero Configuration
  • Shadow Copy
  • Error Reporting
  • Multimedia Class Scheduler
  • CLFS
  • Spouleur d'impression
Systèmes de fichiers
  • NTFS
  • ReFS
  • EFS
  • WinFS
  • FAT32·FAT16·FAT12
  • exFAT
  • CDFS
  • UDF
  • DFS
  • IFS
Serveur/Réseau
  • Domaine
  • Active Directory
  • Itinérance du profil de l'utilisateur (en)
  • DNS
  • Group Policy
  • Profil utilisateur
  • Redirection de dossiers
  • Distributed Transaction Coordinator
  • MSMQ
  • Windows Media Services
  • Rights Management Services
  • IIS
  • Remote Desktop Services
  • Terminal Services
  • WSUS
  • Windows SharePoint Services
  • Protection d’accès réseau
  • PWS
  • DFS Replication
  • Remote Differential Compression
  • Print Services for UNIX
  • Services d'installation à distance RIS
  • Windows Deployment Services
  • System Resource Manager
  • Hyper-V
Architecture
  • Architecture d'impression
  • Architecture de Windows NT
  • Object Manager
  • Processus de démarrage de Windows NT
  • Processus de démarrage de Windows Vista/7
  • I/O request packet
  • Kernel Transaction Manager
  • Logical Disk Manager
  • Security Account Manager
  • Windows File Protection / Windows Resource Protection
  • Windows library files
  • LSASS
  • CSRSS
  • SMSS
  • MinWin
Sécurité
  • User Account Control
  • BitLocker
  • Defender
  • Data Execution Prevention
  • Security Essentials
  • Protected Media Path
  • Mandatory Integrity Control
  • User Interface Privilege Isolation
  • Pare-feu Windows
  • Sécurité et maintenance
Compatibilité
  • Services for UNIX
  • Virtual DOS machine
  • COMMAND
  • Windows on Windows
  • WoW64
  • Windows XP Mode
  • icône décorative Portail de Microsoft
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Dynamic_Link_Library&oldid=228052801 ».
Catégories :
  • Microsoft Windows
  • OS/2
Catégories cachées :
  • Page utilisant P1195
  • Page utilisant P1163
  • Article à illustrer Format de données
  • Article utilisant l'infobox Format de données
  • Article utilisant une Infobox
  • Article contenant un appel à traduction en anglais
  • Portail:Microsoft/Articles liés
  • Portail:Informatique/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id