【发布时间】:2011-04-14 01:20:43
【问题描述】:
可用于在windows中运行任意动态链接库,
它怎么可能知道任意 dll 的入口点?
【问题讨论】:
-
@halfdan,SO 是一个回答问题的地方,而不是为了名誉嫖娼,对吧?为什么不直接回答他的问题?
标签: dll reverse-engineering entry-point
可用于在windows中运行任意动态链接库,
它怎么可能知道任意 dll 的入口点?
【问题讨论】:
标签: dll reverse-engineering entry-point
答案取决于您需要多少细节。基本上,归结为:
DLL 可以选择指定入口点函数。如果存在,系统会在进程或线程加载或卸载 DLL 时调用入口点函数。
[...] 如果您提供自己的入口点,请参阅 DllMain 函数。名称 DllMain 是用户定义函数的占位符。您必须指定构建 DLL 时使用的实际名称。
(取自 MSDN 文章 Dynamic-Link Library Entry-Point Function。)
所以基本上,入口点可以在 DLL 中指定,操作系统的 DLL 加载器知道如何查找。
【讨论】:
“运行 DLL”是什么意思? DLL 不是普通程序,它们只是函数的集合。入口点本身通常除了初始化 DLL 中其他函数所需的内容之外并没有做太多事情。加载 DLL 时会自动调用入口点(您可以使用 LoadLibrary 来执行此操作)。
如果你想在加载DLL后调用特定的函数,你可以使用GetProcAddress来获取你想要的函数的指针。
【讨论】: