Dinamikus linkkönyvtár

Dinamikus linkkönyvtár Jellemzők
Kiterjesztés .dll
MIME típus application/vnd.microsoft.portable-executable, application/x-msdownload
Fejlesztette Az IBM és a Microsoft
Formátum típusa Szoftvertár

A Dynamic Link Library (francia nyelven: dinamikus link könyvtár ) egy olyan szoftverkönyvtár, amelynek funkcióit szükség esetén egy program betölti a memóriába a végrehajtás során, szemben a statikus vagy megosztott szoftverkönyvtárakkal, amelyeknek a funkciói a kezdet előtt vannak a memóriában betöltve. a program végrehajtásának.

A .dll egy fájlnévkiterjesztés, amelyet a Dynamic Link Library-t tartalmazó fájlok használnak .

Ezeket a szoftverkönyvtárakat a Multics fejlesztette ki 1964-ben, és 1985 óta léteznek a Windows rendszerben. Ezek a Windows operációs rendszerek alapját képezik, és interfészek , illesztőprogramok , widgetek és betűtípusok programozására szolgálnak .

Művelet

A számítógépes program a funkciókat tartalmazó forrásfájlokból épül fel . A szoftverkönyvtárak a fájlokban tárolt funkciók kötegei. A szoftverkönyvtár általában ugyanazon témakör körüli funkciókat tartalmaz. Ezzel a technikával a könyvtár egyik funkciójának későbbi módosítása megköveteli annak újbóli létrehozását, anélkül, hogy a teljes alkalmazást újra létre kellene hozni.

Ez a technika megköveteli, hogy a könyvtárfájlok a memóriába kerüljenek az őket használó programmal egyidőben, ezután egy program - a linker - működőképessé teszi az alkalmazást azáltal, hogy összekapcsolja a különböző fájlokat.

A szoftverkönyvtárak lehetnek:

A statikus könyvtár beágyazódik egy programba, és az összekapcsolás annak elkészítése során megtörténik. Ha egy statikus könyvtárat megváltoztatnak, minden, azt használó programot át kell építeni a változtatások beépítésére;

A megosztott könyvtár nem épül be az azt használó programokba, hanem azokhoz kapcsolódik, amikor betöltődnek, vagyis közvetlenül a program futtatása előtt. A megosztott könyvtárat sok program használhatja, és a könyvtár megváltoztatásához nem szükséges a programok újjáépítése, mindaddig , amíg a könyvtár programozási felülete nem változik;

A dinamikus könyvtárak megegyeznek a megosztott könyvtárakkal, de más módon használják őket. Az ilyen könyvtárak akkor kapcsolódnak az alkalmazáshoz, amikor az szükséges. Az ezeket használó programok tartalmazzák a betöltésre és a linkelésre vonatkozó utasításokat.

A DLL-ek által használt dinamikus összekapcsolási technikában az összekapcsolási műveletet két szakaszban hajtják végre: először az alkalmazás felépítésekor a linker létrehoz összekötőket, majd betöltéskor - közvetlenül az alkalmazás futtatása előtt - összekötik a csatlakozókat. A DLL-ek COFF formátumban vannak , az IBM AIX rendszerben is használják .

Windows rendszerben

A DLL-ek a Windows operációs rendszerek egyik alapját képezik . A Windows belső funkcióit a DLL-fájlok által megvalósított programozási interfészek teszik elérhetővé a programok számára . A három fő könyvtár: User32.dll (a felhasználói felület manipulálása), GDI32.dll (nyomtató és megjelenítő eszközök kezelése) és Kernel32.dll (a fájlokhoz és a folyamathoz kapcsolódó Windows rendszermag-funkciók használata). A programozásban gyakran használt egyéb Windows fájlok a comdlg32.dll , MAPI32.dll , netapi32.dll és winmm.dll . A DLL fájlokat számos kiterjesztéshez is használják: illesztőprogramok , párbeszédpanelek , kütyük , betűtípusok .

A Windows lehetőséget kínál a DLL-ek eltérítésére vagy ellopására. A jogos okok mellett ezeket a lehetőségeket kihasználják a rootkitek is , amelyek az operációs rendszer DLL-jeinek ellopásával a felhasználó tudta nélkül injektálják a funkcionalitást.

Programozás

Az olyan nyelvek, mint a C , a C ++ vagy a Delphi , képesek DLL-ek létrehozására, amelyeket a programok kihasználhatnak. Számos fejlesztési eszköz, amely futásidejű könyvtárakat kínál, mint például a Microsoft Foundation Class Library (MFC) vagy a Borland Visual Component Library (VCL), vagy statikus kapcsolatot (a kód közvetlen integrálása a futtatható fájlba) vagy dinamikus kapcsolatot kínál (ezt követően a könyvtárat DLL formájában terjesztik).

A DLL használata lehetővé teszi a kód elérhetővé tételét és az alkalmazás architektúrájának modulárisvá tételét. Ennek frissítése csak elavult DLL-ek cseréjével is elvégezhető. A DLL több egyidejű verziójának használata azonban problematikus a Windows alatt, és bizonyos inkompatibilitásokhoz vezet a DLL Hell kifejezés alatt csoportosítva .

DLL pokol - DLL pokol

A DLL-ek létrehozása megkönnyíti azok cseréjét új funkciók hozzáadásához és a meglévők fejlesztéséhez. A helyettesítés azonban néha a meglévő funkciók mélyreható módosításához vezet, ami meghibásodásokhoz és az azt használó programok hibás működéséhez vezet. Ezenkívül az egyik fordítóval készített DLL-ek általában nem kompatibilisek egy másik fordítóval készített futtatható fájlokkal.

Ez egy ismert oka hívások műszaki szolgálatok, amelyek keresztelték ezt a jelenséget DLL pokol „a fene a DLL” angolul.

Ha hiányzik egy DLL fájl a felhasználó számítógépéről, az azt használó program elindítása egy DLL nem található üzenetet eredményez, amelyet a felhasználó nem használ. Ha a DLL létezik, de nem érvényes a programra, akkor a programnak nincs módja annak ellenőrzésére, ami DynaLink hibaüzeneteket okozhat, vagy akár a program összeomlását is okozhatja . Az ilyen problémák egyik oka az, hogy a Windows nem biztosít belső verzióellenőrzési mechanizmust - egy olyan mechanizmust, amely biztosítja, hogy egy program társuljon azzal a könyvtárral, amelyre építették.

A programozók egyike a DLL pokol elleni harcnak az, ha kifejezetten betöltik a DLL fájlt: ahelyett, hogy a fájl automatikusan betöltődne, amikor az azt használó program elindul, a program azt a funkciót használja LoadLibrary, amely betölti a létező fájlt. A fő különbség e módszer és a klasszikus módszer között az, hogy a futtatható fájl nem tudja előre a szükséges funkciók címét.

Egy másik módszer az, hogy a DLL forráskódját vagy annak egy részét átmásoljuk a jövő futtatható fájljába annak érdekében, hogy az említett DLL nélkül megtörténjen. Ez azonban lehet illegális (gyakran inkompatibilis licencek miatt) vagy műszakilag lehetetlen (általában azért, mert a DLL forráskódja nem áll rendelkezésre), de még akkor is, ha ez lehetséges és legális, a használat miatt általában kizárt .

Megjegyzések és hivatkozások

  1. "  DLL Visual C ++  " szóló MSDN , a Microsoft (megajándékozzuk 1 -jén november 2014 )
  2. "  DLL Glossary  " , a Symantec-en (hozzáférés : 2014. október 31. )
  3. "  Bemutató a dinamikus könyvtár (dll) létrehozásához és használatához  " [PDF] , az ISIMA-n (hozzáférés : 2014. október 31. )
  4. "A  DLL meghatározása és a DLL fájl működése  " , a file-dll.fr fájlon (hozzáférés : 2014. október 31. )
  5. (in) InfoWorldtől , május 23, 1988 ( ISSN  0199-6649 ) .
  6. (en) IA Dhotre - AA Puntambekar, Systems Programming , Technical Publications - 2008 ( ISBN  9788184313925 ) .
  7. (en) Sibsankar Haldar - Alex Alagarsamy Aravind, Operációs rendszerek , Pearson Education India - 2010 ( ISBN  9788131730225 ) .
  8. (en) Joseph A. Fisher - Paolo Faraboschi - Clifford Young, Embedded Computing: A Vliw Approach to Architecture, Compilers and Tools , Elsevier - 2005, ( ISBN  9781558607668 ) .
  9. (en) John Calcote, Autotools: Practician 's Guide to GNU Autoconf, Automake and Libtool , No Starch Press - 2010 ( ISBN  9781593272067 ) .
  10. Greg Perry, Visual Basic 6 , Pearson Education France ( ISBN  9782744040825 ) .
  11. (a) Marco Cantu, Mastering Delphi 6 , John Wiley & Sons - 2006 ( ISBN  9780782152784 ) .
  12. (en) Greg. Hoglund - James Butler, Rootkits: A Windows Kernel felforgatása , Addison-Wesley Professional - 2006 ( ISBN  9780321294319 ) .
  13. (in) Kate Gregory, a Microsoft Visual C ++ .NET 2003 Kick Start , Sams Publishing - 2004 ( ISBN  9780672326004 ) .
  14. (in) Mark A. DeLoura, Game Programming Gems 2 , Cengage Learning - 2001 ( ISBN  9781584500544 ) .

Lásd is

Bibliográfia

Külső linkek