美文网首页
DLL注入学习笔记(1)

DLL注入学习笔记(1)

作者: Ginkgo_Alkaid | 来源:发表于2019-07-20 00:10 被阅读0次

1.什么是动态链接库

动态链接库(Dynamic-Link Library)通常包含程序员自定义的变量和函数,可以在运行时动态链接到可执行文件中。自从微软推出 16 位的 Windows 操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows 操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在 GDI DLL 中、显示Windows 桌面和处理用户的输入所需要的代码被存储在一个 User DLL 中,Windows 编程所需要的大量的 API 函数也被包含在 Kernel DLL中。在 Windows 操作系统中使用 DLL 有很多优点,最主要的一点是多个应用程序、甚至是不同语言编写的应用程序可以共享一个 DLL 文件,真正实现了资源共享,大大缩小了应用程序的执行代码,更加有效的利用了内存;使用 DLL 的另一个优点是 DLL 文件作为一个单独的程序模块,封装性,独立性好,在软 件需要升级的时候,开发人员只需要修改相应的 DLL 文件就可以了,而且当 DLL 中的函数改变后,只要不是参数的改变,程序代码并不需要重新编译。这在编 程时十分有用,大大提高了软件开发和维护的效率。

2.动态库扩展名

Windows下的动态链接库后缀名是.dll

3.Windows系统动态链接库

Windows操作系统核心有三个动态链接库(Kernel32.dll、User32.dll、Gdi32.dll),这些动态链接库构成了Win32 API函数

  • user32.dll
    是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息
  • gdi32.dll
    gdi32.dll是Windows GDI图形用户界面相关程序,包含的函数用来绘制图像和显示文字
  • kernel32.dll
    控制着系统的内存管理、数据的输入输出操作和中断处理

微软就是靠这三个模块起家的
Windows SDK只利用这三个模块就能构建基本的Windows程序。

4.创建一个简单的dll实例

在VS中创建一个新的Win32项目:


项目

项目向导选择:


向导
创建好后,可以看到dllmain.cpp可以看到dll的入口函数dllmain:
dllmain

函数内部根据dll被加载的原因进行不同的操作:


图片.png
在Win32Project1.cpp,添加一个函数,如下图所示:
函数
在Win32Project1.h头文件中添加声明,如下图所示:
声明
之后选择编译,这样就成功生成一个简单的dll文件:
dll

相关文章

网友评论

      本文标题:DLL注入学习笔记(1)

      本文链接:https://www.haomeiwen.com/subject/cogelctx.html