我有一个DLL文件,想要在Windows上执行它。我从Challenge网站获得了这个DLL,该网站声称DLL应该独立执行。
答案 0 :(得分:36)
要在DLL中运行函数,首先要找出这些函数正在使用任何PE(Portable Executable)分析程序(例如Dependency Walker)。 然后将RUNDLL32.EXE与this syntax:
一起使用 RUNDLL32.EXE <dllname>,<entrypoint> <optional arguments>
dllname是dll文件的路径和名称,entrypoint是函数名,可选参数是函数参数
答案 1 :(得分:5)
您可以使用rundll命令执行DLL文件中定义的函数。您可以使用Dependency Walker来探索可用的功能。
答案 2 :(得分:2)
虽然很多人都指出你不能直接执行dll而应该使用rundll32.exe来执行导出的函数,这里是一个实际的dll文件的截图,就像可执行文件一样:
虽然你不能直接运行dll文件,但我怀疑可以使用WinAPI函数CreateProcess从另一个进程运行它们:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx
答案 3 :(得分:1)
DLL是其他Windows程序使用的共享库,而EXE是实际执行的文件,它们链接到DLL文件,以便它们可以使用DLL。
两者的格式相同,PE(便携式可执行文件)或Windows中机器代码的格式,用简单的文字表示。)
换句话说,EXE包含入口点(main),而DLL包含库函数。您无法执行仅包含库函数的文件,而只能通过其他程序使用它们。
但是仍然有像rundll32.exe这样的程序,它提供了该入口点和DLL函数所需的一些最小框架。
我要说的是,您永远无法执行DLL文件,而只能通过EXE或其他程序提供入口点来使用它的代码。
答案 4 :(得分:0)
.DLL文件在.EXE / .COM / .BAT文件是可执行的意义上是不可执行的,所以我不确定你的意思。
您可以使用Windows SDK附带的Dependency Walker应用程序来查询.DLL并查看文件导出的函数。
答案 5 :(得分:0)
您无法“执行”DLL。您可以在DLL中执行函数,如其他答案中所述。尽管.EXE文件和.DLL文件在格式方面基本相同,但.EXE的区别特征是它包含一个指定的“入口点”,可以执行创建EXE的操作。 DLL实际上有类似的东西,但“dll main”的目的只是执行初始化而不是实现DLL的主要目的;这是(大概)它包含的各种其他功能。
您可以执行DLL导出的任何函数,假设您知道要执行哪个函数;一个EXE可能包含很多函数,但只有一个是专门用来“运行”它来执行的。
答案 6 :(得分:0)
运行.dll文件。首先找出它正在导出的功能。所有文件都将执行 导出类别中指定的功能..要知道它是什么功能导出参考“filealyzer” 应用程序..它将显示“PE EXPORT”类别下的导出功能 功能名称 - 然后打开命令提示符,键入Rundll32 dllname,functionname (dllname - 你的dll的名字) (Functionname--在PE Export下找到的函数的名称) 注意:确保您的命令提示符位置是您的DLL文件位置
答案 7 :(得分:0)
应该指出,由于完全有可能像其他任何可执行文件一样运行DLL,因此长期以来一直将其视为安全问题。因此,已经进行了许多安全改进和注册表修改(很抱歉,不再具有ref-links),可以防止在没有额外特权的情况下从常规用户空间运行DLL。
一个很好的例子。我记得做过这些骇客,但由于我不再记得自己到底做了什么。即使从GUI启动各种Win应用程序也能正常工作,我再也无法在普通用户外壳环境中运行任何DLL。
也就是说,绝对应该读“ Dynamic-Link Library Security”和“ Best Practices to Prevent DLL Hijacking”。
答案 8 :(得分:-5)
以下一系列步骤可能会有所帮助:
dll
文件.
之后的内容)并将其更改为.exe