2015-06-14 3 views
0

Как известно, для неявно связанных DLL исполняемого файла при загрузке время они будут загружены в память загрузчиком, а загрузчик также вызовет их точку входа для их инициализации. Это линейный процесс - они загружаются один за другим и начинаются с нуля . Итак, самое главное - это заказ, заказ влияет на многие вещи.Вопросы о загрузке DLL

Q1: Порядок инициализации может отличаться от порядка загрузки, это Это правда?

Q2: На заказ на загрузку влияет таблица импорта, это правда?

Q3: Порядок инициализации независимых библиотек DLL зависит от таблицы импорта - Библиотека DLL может быть инициализирована первой, так как она первой, это правда?

ответ

0

«Процесс создается в подвешенном состоянии с CREATE_SUSPENDED флага к CreateProcess. Обходы затем изменяет изображения двоичного файла приложения в новом процессе, чтобы включить указанный DLL в качестве своего первого импорта. Выполнение в процессе затем возвращается . Когда выполнение возобновляется, загрузчик процессов Windows сначала загрузит целевую DLL, а затем любые другие DLL в таблице импорта приложения , прежде чем вызывать запись приложения . "

Я нашел это важное сообщение в документе Microsoft Обход. Так что для Q2 и Q3, да, это правда. Я сделаю больше исследований по этой теме.

Смежные вопросы