Category: 

What is a Dynamic Link Library?

Article Details
  • Written By: John Lister
  • Edited By: Kristen Osborne
  • Last Modified Date: 10 September 2016
  • Copyright Protected:
    2003-2016
    Conjecture Corporation
  • Print this Article
Free Widgets for your Site/Blog
Roughly one-fifth of the world's stock of gold - worth over $200 billion USD - is stored under the streets of London.  more...

September 30 ,  1949 :  The Berlin Air Lift ended.  more...

A dynamic link library is a system used by Microsoft to allow multiple applications to access the same section of code in Windows® at the same time. This is one of the keys to multitasking working effectively. In 2010, security researchers discovered that loophole in the way the dynamic link library system worked could be exploited by hackers. This led to a dilemma over how to fix it without affecting the usability of applications.

To understand the way a dynamic link library works, it's important to understand the difference between Windows® and software applications. Windows® is an operating system that exists largely to coordinate the way individual applications, also known as programs, access the computer's processing abilities. Windows® itself is ultimately a set of computer codes that effectively acts as the rulebook or guide for how applications interact with each other and with the hardware.

The dynamic link library is the system by which applications can access and run individual sections of Windows® code. One example would be the section of Windows® responsible for printing documents. Most applications need to access this feature at some point, but if every application loaded the relevant code into the computer's memory as soon as the application began running, it would be an inefficient use of resources and could cause conflicts.

Ad

To resolve this, the Windows® code for a particular function, in this case printing, is stored as a small program known as a dynamic link library or DLL file. If a user runs an application such as a word processor, this file is not automatically opened. Instead, the word processor only opens and activates the file as and when it is needed, in this case when the user wants to print a document.

Historically, many application developers simply wrote code that said what the name of the relevant dynamic link library was called, rather than specifying exactly where it should be located on the computer. To get around this, Windows® has a set system for locating missing DLL files by searching a set list of locations in a defined order. While this could theoretically be exploited if a malicious file disguised as a DLL file was put in the right place and thus found and opened before the legitimate file, this was not considered a major security risk as hackers would need physical access to a machine to get the malicious file in place.

In 2010, it was discovered that hackers could theoretically get such files in place via a remote connection: that is, over the Internet. This meant dozens of Windows® applications were vulnerable to attacks using this method. The security community was divided as to whether it was better for individual applications to be rewritten to specify the location of the legitimate DLL file, which relied on each developer taking action, or for Microsoft to change the way Windows® deals with such files, which could potentially cause applications to stop working properly.

Ad

You might also Like

Recommended

Discuss this Article

Post your comments

exception 'Exception' with message 'error writing captcha: Duplicate entry '2147483647' for key 'PRIMARY'' in /ssd/www/wisegeek/public_html/_core/classes/public/Captcha.php:44
Stack trace:
#0 /ssd/www/wisegeek/public_html/_core/controls/public/ControlDiscussionPostBox.php(324): Captcha->createCaptcha()
#1 /ssd/www/wisegeek/public_html/framework/classes/Control.php(104): ControlDiscussionPostBox->preRender(false)
#2 /ssd/www/wisegeek/public_html/framework/classes/Control.php(149): Control->render()
#3 /ssd/www/wisegeek/public_html/tpl/default-nocustom-lu/pages/public/article/article.htm(526): Control->__toString()
#4 /ssd/www/wisegeek/public_html/framework/classes/Control.php(300): require('/ssd/www/wisege...')
#5 /ssd/www/wisegeek/public_html/framework/classes/Control.php(309): Control->requireTpl('pages/public/ar...', Object(PageArticleCom), true)
#6 /ssd/www/wisegeek/public_html/framework/classes/Control.php(131): Control->renderTpl('pages/public/ar...', Object(PageArticleCom))
#7 /ssd/www/wisegeek/public_html/framework/classes/FormDataControl.php(87): Control->renderTemplate()
#8 /ssd/www/wisegeek/public_html/framework/classes/Control.php(109): FormDataControl->renderTemplate()
#9 /ssd/www/wisegeek/public_html/framework/classes/ScriptPage.php(50): Control->render(false)
#10 /ssd/www/wisegeek/public_html/framework/classes/Control.php(149): ScriptPage->render()
#11 /ssd/www/wisegeek/public_html/framework/classes/Page.php(97): Control->__toString()
#12 /ssd/www/wisegeek/public_html/_core/classes/public/PublicFrontController.php(443): Page->processRequest()
#13 /ssd/www/wisegeek/public_html/_core/classes/public/PublicFrontController.php(7): PublicFrontController->renderPage()
#14 /ssd/www/wisegeek/public_html/index.php(11): PublicFrontController::run()
#15 {main}