LOADDLL.EXE的原理是什么?

时间:2010-09-18 09:32:08

标签: dll reverse-engineering entry-point

它可用于在Windows中运行任意动态链接库,

怎么可能知道任意dll的入口点?

3 个答案:

答案 0 :(得分:1)

答案取决于您需要多少细节。基本上,它归结为:

  

DLL可以选择指定入口点函数。如果存在,只要进程或线程加载或卸载DLL,系统就会调用入口点函数。

     

[...] 如果您提供自己的入口点,请参阅DllMain功能。名称DllMain是用户定义函数的占位符。您必须指定构建DLL时使用的实际名称。

(摘自MSDN文章Dynamic-Link Library Entry-Point Function。)

基本上,可以在DLL中指定入口点,操作系统的DLL加载器知道如何查找它。

答案 1 :(得分:0)

IMAGE_OPTIONAL_HEADER(Windows机器上可移植可执行文件标题的一部分)包含AddressOfEntryPoint的RVA,该RVA由寻找要调用的入口点的程序(例如,加载程序)调用。

可以找到有关IMAGE_OPTIONAL_HEADER的更多信息herethis论文仅适用于普通的体育知识。

答案 2 :(得分:0)

“运行DLL”是什么意思? DLL不是普通程序,它们只是函数的集合。入口点本身通常除了初始化DLL中其他函数所需的内容之外没有太大作用。加载DLL时会自动调用入口点(您可以使用LoadLibrary执行此操作)。

如果要在加载DLL后调用特定函数,可以使用GetProcAddress获取指向所需函数的指针。