初识动态链接库(DLL)

Ustinain
• 阅读 1975

初识DLL

DLL是Dynamic link Library 的缩写以为动态链接库。

在Windows中,许多的应用程序并不是一个完整的可执行文件,会被分成一些相对独立的动态链接库,如DLL文件,放置于系统中 比如: Windows系统是许多动态链接库(DLL)组成的 初识动态链接库(DLL) 是Windows最基本的应用程序

但我们执行运行某一个应用程序的时候,相应的DLL文件就会被程序调用,一个应用程序可以调用多个DLL,同样 一个DLL文件可以被多个应用程序所调用这样的DLL文件被称为共享DLL文件

如果感染了共享DLL,在重启电脑的时候,所有调用它的都会被感染

它允许程序共享执行特殊任务所必需的代码和其他资源,比较大的应用程序都有很多模块(动态链接库)组成,这些模块分别完成相对独立的功能,他们彼此写作来完成整个系统软件的工作 初识动态链接库(DLL)

Windows 系统平台上提供了一种完全不同的较为有效的变成和原型环境,你可以将独立的程序模块创建为较小的DLL文件,并可对他们单独编译和测试,在运行的时候,只有exe程序需要调用盗这些dll模块的情况下,系统才会将他们装在到内存空间中,这种方式不仅间少了exe文件的大小和内存空间的需求,而且可以使这些dll模块同时被多个应用程序调用,Windows本身就将一些主要的系统功能以dll文件的形式所实现。

一般来说,dll是一种磁盘文件,以dll、drv、fon、sys和诸多以.exe为扩展名的系统文件都可以是dll(动态链接库)

dll,算是一种windwows自带的程序编程接口,它是由全局数据、服务函数和资源组成,在运行时被系统加载到调用进程的虚拟空间中,称为进程的一部分

初识动态链接库(DLL)

PS:

  1. 如果以其他dll之间没有冲突,该文件通常映射到进程虚拟空间的同一地址
  2. dll模块包含各种到处函数,用于向外界提供服务,一个dll在内存中只有一个实例,多个应用程序调用同一个
  3. dll实现了代码封装性
  4. dll的编制与句题的编程语言及编译器勿关,C、C++、C#、易语言、python、VB、delphi
  5. dll模块需要的堆栈内存都是从运行进程堆栈中分配出来的
  6. dll函数中的代码所创建的任何对象(包括变量)都归调用它的进程线程所有
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
IOS Theos Tweak 之 HelloWorld
一、目标Theos是什么?是一套跨平台的开发工具套件,不仅可以开发Ios,Mac、Windows和Linux也可以的哦,开源免费。Tweak是什么?可以理解成动态链接库,有搞过Windows下dll注入的同学应该可以秒懂了。Android的同学可以把它理解成IOS下的Xposed。HelloWorld是什么?是萌新程序员的信仰,在一个平台写下HelloWor
Ustinain Ustinain
2年前
dll导出函数
导出函数的概念为什么要导出函数,导出来用来干什么?前面我们说过,初识DLL,当我们执行某一个程序的时候,相应的dll文件会被调用,一个程序可以调用多个dll,一个dll也可以被多个应用程序调用那么它是调用了全部的东西吗,还是调用了内部一些不为人知的东西举一个例子:你去便利店买水果,你和售货员说,你要买下整个便利店,那么她还以为你是个神经病,肯定不会卖,你要
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
李志宽 李志宽
2年前
日子越来越有判头了?用DLL劫持,搞点事情!
0x01dll简介在Windows系统中,为了节省内存和实现代码重用,微软在Windows操作系统中实现了一种共享函数库的方式。这就是DLL(DynamicLinkLibrary),即动态链接库,这种库包含了可由多个程序同时使用的代码和数据。每个DLL都有一个入口函数(DLLMain),系统在特定环境下会调用DLLMain。在下面的事件发生时就会调用d
Wesley13 Wesley13
2年前
VC++动态链接库(DLL)编程深入浅出(一)
1.概论  先来阐述一下DLL(DynamicLinkableLibrary)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。  静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
2014百度校园招聘软件研发类笔试(深圳)
时间:2013年9月28日。地点:深圳职位:软件研发问答题:(10\3)1.动态链接库(DLL)与静态链接库(lib)的优缺点:静态链接库和动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都全部被直接包含在最终的EXE文件中,若使用DLL,该DLL不必被包含在最终的EXE中,EXE文件
专注IP定位 专注IP定位
1年前
Qakbot新型感染链:使用Windows7系统侧加载感染设备
前言:DLL侧加载(DLLsideloading)是一种常见的攻击方法,也就是我们常说的“白加黑”技术,它利用了Windows中处理动态链接库(DLL)的方式。Qakbot恶意软件的开发者通过使用Windows7系统在被感染的计算机上侧加载恶意负载,最终达到感染设备的效果。近日,研究人员ProxyLife发现,从今年7月11日开始Qakbot滥用Windo