2018/11/05-DLL和基本DLL结构-《恶意代码分析实战》

Posted fingerprint

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018/11/05-DLL和基本DLL结构-《恶意代码分析实战》相关的知识,希望对你有一定的参考价值。

  动态链接库(DLL)是使用库来在多个应用程序之间共享代码的Windows特有方式。一个DLL程序是不能独自运行的可执行文件,但它可导出一些被其他应用程序使用的函数。

  静态库是在DLL程序引入之前的标准方案,并且仍在使用,但是它们更加少见一些。现在Windows系统主要使用DLL程序,而不是静态库,主要优势是被DLL程序使用的内存可以在正运行的进程之间共享。例如,若一个库被两个不同的运行进程使用,静态库的代码会占用两倍内存,因为它会被载入内存中两次。

  另一个使用DLL程序的主要优势,是在发布一个可执行文件时,你可以使用Windows系统上已知的DLL程序,而无须去重新发布它们。这帮助软件开发着和恶意代码作者最小化发布软件的大小规模。

  DLL程序也是一种有用的代码复用方式。例如,大型软件公司会创建一些有通用功能的DLL,而这些DLL对于他们的应用程序来说是共用的。然后当他们发布应用程序时,会发布主要.exe文件和应用程序所使用的任何DLL程序。这允许它们维护一个单一公用的代码库,并只在需要时发布它。

  基本上,DLL文件看起来几乎和.exe文件一模一样。DLL使用PE文件格式,并且只有一个单一标志,指示这个文件是一个DLL,而不是一个.exe。DLL经常有更多导出函数,并且通常导入函数更少。除了那个标志之外,一个DLL和一个.exe之间没有实质的区别。

  DLL的主函数是DllMain。它没有标记,而且并不是一个DLL中的导出导出函数,但它在PE头中被指定为文件的入口点。任何时候一个进程加载或卸载库,会创建一个新线程,或一个已存在的线程结束时,这个函数都会被调用来通知DLL。这个通知允许DLL来管理每个进程或每个线程的资源。

  多数DLL没有线程粒度的资源,并且它们忽略由线程活动引起对DllMain的调用。然而,如果DLL有必须在线程粒度进行管理的资源,那么这些资源可以为分析师提供一些提示,来了解这个DLL的目的。

 

以上是关于2018/11/05-DLL和基本DLL结构-《恶意代码分析实战》的主要内容,如果未能解决你的问题,请参考以下文章

c# 调用c dll void 指针类型转化问题

当结构仅在运行时已知时,将结构从 c++ 传递到 c#

PB(PowerBuilder)做的系统,反编译后结构如图所示,现要按此结构重新开发生成abcd.exe和dll文件,怎么做

JVM基本结构1

恶热天

恶懒汉模式