Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.06;
Скачать: CL | DM;

Вниз

Выгрузка DLL   Найти похожие ветки 

 
AlexandrRya   (2003-01-15 22:56) [0]

Здрасте...
Проблемка моя в следующем: я внедряю библиотеку в експлорер и создаю нить, в которой создаю окно. Все идет нормально. В очереди сообщений на WM_DESTROY делаю FreeLibraryAndExitThread(...). После этого експлорер выдает сообщение о том, что инструкция по адресу xxxxx обратилась к памяти xxxxxx (адреса в обоих случаях совпадают) и закрывается.

Где что не так?
(Вообще-то делал на VC++)

<--------------------------------------->
Третий раз отправляю и не вижу в форуме :- (
(Opera 6)


 
Cobalt ©   (2003-01-16 00:53) [1]

Внедряешь-то через хук?
Вот и вынедрять - тоже.


 
AlexandrRya   (2003-01-16 01:03) [2]

Cobalt © (16.01.03 00:53)> В смысле?


 
Cobalt ©   (2003-01-16 19:23) [3]

То есть, нельзя выгружать ДЛЛ-ку, пока исполняется её код.
1)Ставь хук из своей длл-ки(из експлорера),( не загружая еще раз длл-ку)
2)закрываешь окно (из хука?)(типа, посылаешь сообщение ему),
3)заканчивается поток,
(все это время хук проверяет, скажем, файл в памяти, в который пишется номер этапа)
5) хук выгружает длл-ку, и снимает себя.
В результате, при заканчивании хука, система выгрузит и его длл-ку.


 
AlexandrRya   (2003-01-16 22:04) [4]

Thanks


 
paul_shmakov ©   (2003-01-18 04:59) [5]

а если нужно, чтобы внедренная.dll оставалась работать в эксплорере без проблем и после снятия хука, то нужно такой алгоритм реализовать:
1) загрузчик.exe ставит хук (функция-обработчик хука находится в перехватчик.dll)
2) перехватчик.dll благодаря хуку грузится в эксплорер, где из своего DllEntryPoint перехватчик.dll делает LoadLibrary("внедренная.dll")
3) внедренная.dll тоже загрузилась в эксплорер, создала поток и делает свое грязное (или чистое) дело
4) теперь загрузчик.exe снимает хук
5) хук снят и перехватчик.dll выгружается из эксплорера
6) а внедренная.dll так и осталась мирно и счастливо жить в контексте эксплорера до конца его дней. чтд! :)


 
Nick_N_A ©   (2003-01-18 05:09) [6]

Я часто пытался завершить процесс по разному, но часто это
приводило к разным табличкам, кроме, попробуй:
ExitProcess(GetCurrentProcess);- это помагало в приложении.
Может поможет ExitThead(GetCurrentThead); ?


 
AlexandrRya   (2003-01-19 20:40) [7]

paul_shmakov © (18.01.03 04:59)>
Именно так я и делал!



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

Текущий архив: 2003.03.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
7-17418
Fredericco
2003-01-04 15:09
2003.03.06
Передача строк в/из ДЛЛ.


14-17321
Makhanev A.S.
2003-02-15 21:41
2003.03.06
Обязательная регистрация. ЗА и ПРОТИВ.


14-17397
Труп Васи Доброго
2003-02-19 09:04
2003.03.06
Настройка IP сетей


1-17100
UDS
2003-02-25 18:34
2003.03.06
Как задать массив, если первоначально его длина неизвестна?


4-17429
kamik
2003-01-16 17:48
2003.03.06
Значки