![0a3d60cf9bf578f9a05e0a774edcc037.png](https://img-blog.csdnimg.cn/img_convert/0a3d60cf9bf578f9a05e0a774edcc037.png)
第一章:简单介绍DLL
动态链接库英文为DLL,是Dynamic Link Library的缩写。从windows PE的角度来看他是可执行文件的一种。
![e23632301f4e53aa21d24da5596ca4c8.png](https://img-blog.csdnimg.cn/img_convert/e23632301f4e53aa21d24da5596ca4c8.png)
在Windows中,dll文件也被称为应用程序拓展。例如,在 Windows 操作系统中,Comdlg32.dll 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。所以说一个程序可能有多个Dll文件,一个Dll文件也可能被几个以用程序所共用。
网易云音乐所使用的Dll文件
![e27ab48e35886a3ffc9107eda9ac7474.png](https://img-blog.csdnimg.cn/img_convert/e27ab48e35886a3ffc9107eda9ac7474.png)
微信所使用的DLL
![ca11615ccf107d9ac267cda7b51e80cd.png](https://img-blog.csdnimg.cn/img_convert/ca11615ccf107d9ac267cda7b51e80cd.png)
共享DLL在以前的时候是具有感染性的,所有调用了这些dll的程序都会被感染。
动态链接库
我们知道dll叫做动态链接库,那么这个名词是怎么来的呢?
动态加载机制,windows平台上提供了一种有效的编程和运行环境。
为什么要这样做?
这种方式不仅减少了exe文件的大小和内存空间的需求,而且这些Dll模块可以同时被多个应用程序所使用,Windows自己就将一些主要的系统功能以Dll模块的形式来实现。
为什么要学习动态链接库?
这时因为我们需要把外挂的dll文件加载到游戏中,成为游戏的一部分。
![afb5ae73956238c1a0064e0082362ff6.png](https://img-blog.csdnimg.cn/img_convert/afb5ae73956238c1a0064e0082362ff6.png)
通过技术手段,可以使我们的外挂与游戏浑然一体。
注意:
DLL包含各种导出函数(windows PE的知识。)
一个DLL在内存中只有一个实例。
DLL实现了代码的封装性。
DLL的编写与编程语言没有关系,我们可以使用C/C++/易语言/vb等等来进行编写。
DLL模块所需要的堆栈内存都是从运行的进程堆栈中分配出来的。
DLL函数中的代码所创建的任何对象都归调用它的线程或进程所有。
![45826fb6a32ad0734a57dc845a6236ea.png](https://img-blog.csdnimg.cn/img_convert/45826fb6a32ad0734a57dc845a6236ea.png)