有关DLL加载顺序的问题

时间:2015-06-14 15:45:15

标签: dll loader

正如我们所知,对于可执行文件的隐式链接DLL,在加载时 时间,它们将被加载器加载到内存中,并且 loader也会调用它们的入口点来初始化它们。 这是一个线性过程 - 它们是逐个加载的,并且是 逐个初始化。所以最重要的是订单, 订单会影响很多事情。

Q1 :初始化顺序可能与加载顺序不同,是 这是真的吗?

Q2 :导入表会影响加载顺序,这是真的吗?

Q3 :独立DLL的初始化顺序受到 导入表 - 可以首先初始化DLL,因为它出现 首先,这是真的吗?

1 个答案:

答案 0 :(得分:0)

“进程是在暂停状态下创建的 CREATE_SUSPENDED标志为CreateProcess。 Detours然后修改 应用程序二进制文件的图像在新进程中包含 指定的DLL作为其第一个导入。在这个过程中的执行是 然后又恢复了。执行恢复时,Windows进程加载程序 将首先加载目标DLL,然后加载任何其他DLL 应用程序的导入表,在调用应用程序条目之前 点“。

我在微软的文件中发现了这条重要信息 弯路。所以对于Q2和Q3,是的,这是真的。我会做更多的研究 关于这个话题。