DLL文件有什么用?

DLL文件有什么用?,第1张

DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下 *** 作的许多函数和资源。DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows *** 作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的 DLL文件被称为共享DLL文件。DLL文件一般被存放在C:\Windows\System目录下

DLL(Dynamic Link Library)文件即库文件,是动态链接库文件,又称“应用程序拓展”,是软件文件类型。

在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。

扩展资料

你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。

静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。

但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。

参考资料来源:百度百科-库文件

dll的使用分为
(1)静态加载:第一步,在可执行程序的cpp中添加对dll的头文件的引用;第二步,将dll及其lib(包含了dll的符号表)文件添加到链接路径(可以直接将dll及其lib拷贝到exe项目的文件夹中);
然后就可以再项目中使用dll中的函数或者变量,就像使用普通的函数和变量一样。
(2)动态加载:第一步,使用LoadLibrary(PCTSTR)函数将dll加载到程序的运行空间;第二步,使用GetProcAddress(HINSTANCE, PCSTR)获得指向需要使用的函数的指针;第三步,通过获得的函数指针调用dll中的函数;最后当确定不需要再使用dll中的资源时,通过FreeLibrary(HINSTANCE)卸载已经加载的dll。

建立项目的时候选择类库就行了,编译出来就是DLL。
DLL里面保存的是编译好的方法,可以被其他程序在需要的时候调用,而不用再重新写一遍。

例如:有一个kinghoskydll,你在工程里的解决方案资源管理器中右键引用,找到本地磁盘中的dll文件,就可以直接添到你的工程里面,使用方法:
你可以先using dll中的命名空间
然后直接调用里面的类,KnClass knclss=new KnClass()//如果存在这个类,
其实添加完引用以后使用方法和你使用system下的类就是一样的了

补充:C#是微软公司发布的一种面向对象的、运行于NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 NET windows网络框架的主角。

那我们先来认识一下什么是dll
dll实际上是动态链接库的缩写,从windows10开始,动态链接库就是整个 *** 作系统的基础,那么这有什么作用呢?在dos时代,程序员是通过编写程序来达到预期的目的的,每实现一个目的就需要编写一个程序,这样下去,简单的还好,要是复杂的程序话,那乞不是既浪费时间,又浪费青春。于是聪明的程序员们想出了一个办法,把的实现一定功能的程序模块存放在一个文件当中,以API函数形式存放在dll当中,当编写程序的时候,需要用到这个功能,那么直接从这个文件当中调用就可以了,于是就出现了dll——动态连接库。
那么动态连接库有什么作用呢?
优点之一,上面已经提过了,程序员把一些模块压入dll文件之后,在要运行程序的时候只需要调用动态链接库就可以了,而并不需要把dll加载到内存中,节省了大量的内存空间,可以方便运行其他的程序,许多朋友在关机的时候,一直关不了,整的郁闷,其实就是因为系统所调用的dll太多,导致了计算机性能的骤减,其实只需要把一些无关紧要的dll删除掉就可以了。
优点之二,在一个很大的游戏中,通常需要调用许许多多的动态链接库来给玩家一个美观震撼的效果,《极品飞车9——最高通缉》让本文作者我感受到了一种从来没有感受过的感觉,那种感觉就象是初恋的味道,画面效果棒极了。可是要实现这样一个效果,需要许多程序员编写不同的dll来互相协助,那么这些dll可以用vc++,vb,Delphi,asm等等来完成,只要每个程序员负责编写一个功能,这样只要调用在一起就方便多了,节省了大量的人力,物力,财力。
既然dll有这么多好处,而且又这么方便,我那木马的程序员又做出过什么呢?他只不过调用了系统的dll函数罢了(windwos系统中有3个非常重要dllkernel32dlluser32dllgdi32dll其中包括windows系统诸多功能的函数)呵呵,其实话不能这样说。木马的编写者也需要有很深的工夫哦,那么我们现在以黑客之门做为一个例子来看看。这个例子需要的工具depend walker
我们首先来看看用depend walker打开黑客之门的动态链接库
我们发现,在左边的hkdoordlldll下面的树状结构,显示出了黑客之门所调用的dll列表,从这里不难发现,其实dll也可以调用dll那么dll我们可以把他看做是一个exe文件,只是少了一个入口函数而已(就暂且这样理解)分支下有分支,而右边中间的那4个东东,这个是dll的输出函数表,在function栏目下的是输出函数的名称,因此,我们可以很容易发现,黑客之门hkdoordlldll主要负责4个方面的任务。DllRegisterServer DllUnRegisterServer ServiceMain DllCanUnloadNow 然而这对于一个后门来说已经够了,这需要作者有足够的编程知识,我们再一次向作者致敬。分享了这样一个环保无污染的后门。
通过对上面的知识的理解。我们可以发现其实,dll可真算是一个大宝库,不要对他太狠,一看到可疑的就丢到垃圾筒里去了。其实dll文件还可以盗用哦。
我们用他来打开黑客之门的dll,可以看到他的版权等等,对于有位图,音乐,图表,对话框的dll,我们也可以看到他里面的全部内容。我们可以修改版权,更换位图,更换音乐,更换对话框,总之只有你想不到的,没有你做不到的。
那么既然dll被这样多程序调用,如果结束掉这个木马后门dll的调用过程,那么这个后门是不是没用啦,那回答当然是肯定的,那么如何知道DLL文件被几个程序使用呢?
我们只需要:
运行Regedit,进入HKEY_LOCAL_MACHINE\Software\Microsrft\Windows\Current-
Version\SharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。
嘿嘿,这下知道window优化大师那分析dll的原理了吧。
经常看到有人求助:我的搜索栏什么也不能显示了,怎么办啊?
其实那是因为dll没有注册造成的。
只需要在开始——运行—然后注册两个dll然后重新启动就可以了,具体方法是:
regsvr32 vbscript
regsvr32 jscript
当你看到跳出个对话框,里面写着,vbscript 中的dllregister server成功的时候,说明已经注册成功了
什么?还要注册?或许你看到这里开始疑问了,这什么注册啊?是不是象进入一个论坛,需要注册一个帐号才能进入一样呢?
其实系统里面的dll是分为两类的。一类是需要注册的,一类是不需要注册的。
大多数都是通过命令regsvr32来注册的。而windows为了减少所调用的dll的数量,提升计算机的性能以及速度。通常只把几个重要的dll默认就注册了,不常用的dll需要你自己去注册。而注册之后,系统就可以调用他了,从而具有了相应的功能。
而当你认为你的计算机所调用的无用dll太多的时候,可以通过命令regsvr32 /u dll的名称来反注册。
有些朋友的爱机会出现这样的情况,在启动的时候,错误对话框中提示DLL文件丢失。这是因为在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“Systemini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。

1、安装后在您的系统上启动RemoteDll

2、默认情况下,“注入DLL” *** 作被选中。

3、选择注入方法,建议使用CreateRemoteThread。

4、现在通过点击“处理按钮”选择目标进程。这将显示所有正在运行的进程的详细信息。

5、进程选择后,你必须选择要注入的DLL。你可以在这里拖放DLL文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12612919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存