什么是DLL?它远不止是一个新改进的.EXE文件那么简单

日期: 2011-01-12 作者:Michael Cobb翻译:Sean 来源:TechTarget中国 英文

问:你能解释什么是动态链接库,以及它对应用程序安全有什么影响吗?恶意的DLL仍然是一个常用的攻击载体吗?   答:什么是DLL呢?动态链接库(dynamic-link library,即DLL)是微软提出的共享库概念,它是一个在应用程序间共享资源的常用方法,它通常是一个DLL文件类型或者是OCX文件类型(对于含有ActiveX控制的库而言),亦或者是DRV文件(对于系统驱动而言)。就像可执行的*.exe文件类型一样,这些文件可以包含代码、数据以及一些资源文件(如,图像),但是两者之间的区别在于DLL文件可以同时被多个程序调用。   用共享库有很多好处,包括:模块化、代码重用、减少磁盘空间、增加……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问:你能解释什么是动态链接库,以及它对应用程序安全有什么影响吗?恶意的DLL仍然是一个常用的攻击载体吗?

  答:什么是DLL呢?动态链接库(dynamic-link library,即DLL)是微软提出的共享库概念,它是一个在应用程序间共享资源的常用方法,它通常是一个DLL文件类型或者是OCX文件类型(对于含有ActiveX控制的库而言),亦或者是DRV文件(对于系统驱动而言)。就像可执行的*.exe文件类型一样,这些文件可以包含代码、数据以及一些资源文件(如,图像),但是两者之间的区别在于DLL文件可以同时被多个程序调用。

  用共享库有很多好处,包括:模块化、代码重用、减少磁盘空间、增加内存使用效率和加快载入时间。模块只有在功能或者资源被请求的时候才会被加载。重要的是,模块化编程允许修改被多个程序共享的DLL,这样就无需对每个应用程序单独地进行修改。例如,comdlg32 DLL处理在windows系统中打开一个对话框,任何在Windows系统上运行的应用程序都可以通过调用该DLL来实现那个功能,这样就允许微软在对comdlg32.dll做任何改变的时候确保一致的用户接口,而不强制要求使用该DLL的其他所有第三方应用程序重建或者是重新安装。

  当微软最初引入DLL的时候,引起了相容性和依赖性的问题,即所谓的“DLL hell”。这种情况在Windows 95上有了显著的改善,在Windows 2000的时候,每一个进程只能在它自己的地址空间内运行,且推出了Windows文件保护来防止覆盖系统DLL文件。然而,就像任何包含可执行代码的文件一样,黑客们可以操纵DLL来运行恶意代码。

  事实上,DLL文件加载的方式产生了一个特定的攻击载体,被称作“DLL预加载攻击”,它在过去的这个夏天上了新闻。如果一个应用程序动态地加载DLL而没有指定的完全合格的路径名,Windows会试图通过搜索明确定义的目录集合来定位该DLL文件。如果一个攻击者可以复制含恶意代码的DLL文件到这些目录中的任意一个,应用程序就会加载并执行这个恶意的DLL。这也说明了黑客是怎样寻找滥用系统设计的任何方面,以创造一个新的攻击载体。

  注意:微软已经在其安全响应中心的网站上发布了关于这个漏洞的更新,你也可以下载一个工具来修改DLL的搜索顺序。

翻译

Sean
Sean

相关推荐