Вниз
Скачать: CL | DM;

Задержка выгрузки Dll   Найти похожие ветки 

← →
Sodom ©   (2002-10-07 11:15) [0]

Я внеряю длл с помощью хуков. Действую по такой схеме:
Пусть процесс A.exe - жертва в адресное пространство которого я внедряю некую D.dll. Я в процессе B.exe ставлю хук (Проца хука в некой DH.dll а адр-м пр-ве B.exe) на WH_GETMESSAGE и посылаю postmessage окну процесса A.exe, чтобы DH.dll подгрузилось в его адресное пространство. DH.dll как только оказывается в адр. пр-ве процесса A.exe загружает туда нужную мне D.dll, снимаю хук и B.exe завершается. Все работает как часы, вопрос следующий: По идее сразу после снятия хука система выгружает DH.dll из всех процессов в которые она подгружалась. Но на практике оказывается что DH.dll может сидеть в каком нибудь процессе еще секунд 30..50 после снятия хука. Вот эта задержка мне и непонятна. Кто нибудь может дать этому объяснение?


← →
Sodom ©   (2002-10-12 14:58) [1]

Странно, такой интересный вопрос, я думал разовьется "глобальная" дискуссия, а вы nil внимания.


← →
Xemax ©   (2002-10-12 16:22) [2]

Задай этот вопрос билу ;-))


← →
Cobalt ©   (2002-10-14 11:12) [3]

В какой конкретно ОС такой глюк?
А то, я слышал, что Какие-то винды(вроде как из серии НТ) не сразу вгыружали ДЛЛ-ку, а немного погодя. За это отвечал какой-то параметр реестра...


← →
Sodom ©   (2002-10-14 12:06) [4]


> Xemax ©
> Задай этот вопрос билу ;-))

Кто такой бил?


> Cobalt ©
> В какой конкретно ОС такой глюк? ...

Win 2000. Да я бы не сказал что глюк, так интересно стало почему?


← →
Василий2 ©   (2002-10-14 12:43) [5]

У меня такая же хрень была... Не знаю, правда, почему.....


← →
Xemax ©   (2002-10-14 14:12) [6]

>>>>Sodom © (14.10.02 12:06)
>Кто такой бил?
БИЛЛ ГЕЙТС


← →
Aleksey Pavlov ©   (2002-10-14 15:50) [7]

Не стоит путать DLL, которые подгружаются в память при загрузки системы (только в Win2k системах) и эффект DLL-ки оставшейся в памяти после её освобождения (т.е. когда число ссылок на неё становится равным 0).
Про первый вариант можно почитать в FAQ для Win2k, а про второй могу сказать следующее:
действительно, после того, как число ссылок на экземпляр DLL загруженный в физическую память стал равным 0 эта DLL должна быть выгружена из памяти (но где написано, что непременно сразу же? ;)
Дело тут в следующем: Microsoft таким образом решила увеличить быстродействие системы. Т.е. считается, что с немалой долей вероятности данная DLL может через короткий промежуток времени понадобится какой-то программе снова (к примеру, вы закрыли документ Word и открываете следующий) и что бы исключить накладные расходы на загрузку её в память (создания отображения) DLL остаётся в памяти некоторое время.
Работа этого механизма хорошо видна, когда, к примеру, повторно запускаешь (с малым промужетком времени) ресурсоёмкие приложения (3DMax, Photoshop и т.д.).



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
3-82651
Алик
2002-11-03 14:37
2002.11.25
Помогите с запросом


1-82760
Таня
2002-11-15 14:31
2002.11.25
строки


1-82798
Comp
2002-11-12 19:50
2002.11.25
Инсталляция


8-82878
Artem_V
2002-08-03 12:03
2002.11.25
Мультимедиа


6-82885
VIB
2002-09-28 15:51
2002.11.25
Удаленнй сервис




   Наверх