【问题标题】:What's the principle of LOADDLL.EXE?LOADDLL.EXE 的原理是什么?
【发布时间】:2011-04-14 01:20:43
【问题描述】:

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

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

【问题讨论】:

  • @halfdan,SO 是一个回答问题的地方,而不是为了名誉嫖娼,对吧?为什么不直接回答他的问题?

标签: dll reverse-engineering entry-point


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    有关IMAGE_OPTIONAL_HEADER 的更多信息,请访问here。而this 的论文仅适用于一般的 PE 知识。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-05-20
        • 2010-11-30
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多