2015-06-14 100 views
0

如我们所知,对于可执行文件的隐式链接DLL,加载 时,它们将由加载程序加载到内存中,并且加载程序也会调用它们的入口点以初始化它们。 这是一个线性过程 - 它们被逐个加载,并且被 逐个初始化。所以最重要的是订单, 这个订单影响很多东西。有关DLL加载顺序的问题

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

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

Q3:独立的DLL的初始化顺序由 导入表的影响 - 一个DLL可以首先因为它似乎 第一,这是真的初始化?

回答

0

“的过程中与所述 CREATE_SUSPENDED标志给CreateProcess挂起状态创建。绕行随后修改的新过程中,应用程序二进制的 图像以包括所述 指定的DLL作为其第一个导入。执行的过程中当执行恢复时,Windows进程加载器 将在调用应用程序条目 点之前首先加载目标DLL,然后加载应用程序导入表中的任何其他DLL。

我在Microsoft Detours的文档中发现了这条重要信息。所以对于Q2和Q3,是的,这是真的。我将在这个主题上做更多的研究 。