Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

AppInit_Dll - механизм работы.


Страницы:   1 2

Riply ©   (2008-07-04 23:41:00) 

Здравствуйте !
Подскажите, пожалуйста, каким образом подгружаются библиотеки из AppInit_Dll ?
Интересует не как подгрузить с помощью ключа, а сам механизм.
Например, один из вариантов:
Создается Suspended процесс.
В нем создается нить, загружающая Dll-ку.
Процесс будится.
Но это домыслы, а как все реализовано "на самом деле" ?


Riply   (2008-07-05 14:54:00) [21]

> [1] Игорь Шевченко ©   (05.07.08 13:38)

Спасибо.


Игорь Шевченко   (2008-07-05 13:38:00) [22]


> а сам механизм.


Сам механизм прост - LoadLibrary.

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

В процессе выполнения DllEntryPoint выполняются какие-либо действия. В частности, одним из действий в DllEntryPoint у user32.dll является сканирование ключа реестра AppInit_Dll и загрузка всех перечисленных в нем Dll в память процесса (и вызов их инициализации).

Если приложение не использует user32.dll, то никакие AppInit_Dll в его адресное пространство не загрузятся (например, в SMSS.EXE ничего не загружается, а вот в WinLogon.EXE - загружается)

На самом деле все немного хитрее происходит, но суть примерно такая.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо