Windows 如何执行*.dll文件

Windows 如何执行*.dll文件,windows,dll,Windows,Dll,我有一个DLL文件,我想在Windows上执行它。我从一个挑战网站获得了这个DLL文件,该网站声称DLL应该独立执行。.DLL文件不可执行,因为.EXE/.COM/.BAT文件是可执行的,所以我不确定你的意思 您可以使用Windows SDK附带的Dependency Walker应用程序来查询.DLL,并查看该文件导出了哪些函数。要运行DLL中的函数,请首先找出这些函数正在使用任何PE分析程序,例如。 然后与以下内容一起使用: dllname是dll文件的路径和名称,entrypoint是函数

我有一个DLL文件,我想在Windows上执行它。我从一个挑战网站获得了这个DLL文件,该网站声称DLL应该独立执行。

.DLL文件不可执行,因为.EXE/.COM/.BAT文件是可执行的,所以我不确定你的意思


您可以使用Windows SDK附带的Dependency Walker应用程序来查询.DLL,并查看该文件导出了哪些函数。

要运行DLL中的函数,请首先找出这些函数正在使用任何PE分析程序,例如。 然后与以下内容一起使用:


dllname是dll文件的路径和名称,entrypoint是函数名,可选参数是函数参数

您可以使用命令执行dll文件中定义的函数。您可以使用来探索可用的功能。

以下一系列步骤可能会有所帮助:

打开Windows资源管理器 在左上角,单击“组织” 选择文件夹和搜索选项 切换到“视图”选项卡 向下滚动并取消选中隐藏已知文件类型的文件扩展名 单击“确定” 现在找到dll文件 右键单击它并选择“重命名” 更改最后一个之后的扩展名。并将其更改为.exe
您不能执行DLL。您可以在DLL中执行函数,如其他答案中所述。尽管.EXE文件和.DLL文件在格式上基本相同,但.EXE的区别在于它包含一个指定的入口点,用于执行创建EXE的目的。dll实际上有一些类似的功能,但dll main的目的只是执行初始化,而不是实现dll的主要目的;这可能是因为它包含了各种其他函数


您可以执行DLL导出的任何函数,前提是您知道要执行哪个函数;一个EXE可能包含很多函数,但只有一个函数是专门指定的,只需运行它即可执行。

要运行.dll文件,请先找出它正在导出的函数。..dll文件将被执行 导出类别中指定的函数..要了解它导出的函数,请参阅FileAnalyzer 应用程序..它将显示PE导出类别下的导出功能..记下 函数名- 然后打开命令提示符,键入Rundll32 dllname,functionname dllname您的dll的名称 Functionname—在PE导出下找到的函数的名称
注意:确保您的命令提示符位置是dll文件位置

虽然许多人指出您不能直接执行dll,应该使用rundll32.exe来执行导出的函数,但下面是一个实际dll文件的屏幕截图,它与可执行文件一样运行:

虽然不能直接运行dll文件,但我怀疑可以使用WinAPI函数CreateProcess从另一个进程运行它们:


应该提到的是,由于完全可以像任何其他可执行文件一样运行DLL,因此长期以来一直被认为是一个安全问题。因此,有许多安全性改进和注册表黑客不再有ref链接,阻止在没有额外权限的情况下从常规用户空间运行DLL

作为一个很好的例子。我记得做过这些黑客,但因为我不再记得我到底做了什么。我再也不能在普通的用户shell环境中运行任何DLL,即使从GUI启动各种Win应用程序也可以


也就是说,我们应该明确地阅读和使用DLL。DLL是其他windows程序使用的共享库,而EXE是实际执行的文件,并且链接到DLL文件,以便它们可以使用DLL。两者都是相同的格式、可移植的可执行文件或windows中简单的机器代码格式。 换句话说,EXE包含入口点main,DLL包含库函数。。您不能执行只包含库函数的文件,您可以通过其他程序使用它们

但是仍然有像rundll32.exe这样的程序,它提供了DLL函数需要调用的入口点和一些最小框架。
我想说的一点是,你永远不能执行一个DLL文件,你可以通过EXE或其他程序提供一个入口点来使用它的代码。

那个DLL是邪恶的可能性有多大?根据假设,一些细节可以跳过。有效的假设,因为用户能够发布此问题并使用计算机和互联网,因此他应该知道这一点。单击鼠标右键并选择“重命名”,然后单击“确定”等。尽管问题本身包含“执行”一词,但它并不表示要将dll转换为exe,只需付出最小的努力。事情不是这样的,改变一个扩展,然后看着神奇的事情发生。执行意味着调用dll中的方法。这就是为什么我给出了-1.与上面相同的理由。目的是为了理解dll,而不是试图用魔术来摆脱dll
我想你显然误解了这个问题。它不是关于重命名文件DLL和EXE文件一样可执行。它们都是基于PE格式的,实际上只相差一位。这是我第一次看到CMD上的参数区分大小写,一定要小心!下面是一个示例:此行将锁定您用户:rundll32 user32.dll,lockWorkstation我收到一条错误消息rundll缺少条目:HelloWorld,用于我的函数HelloWorld
 RUNDLL32.EXE <dllname>,<entrypoint> <optional arguments>