Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Вниз

Уведомление DLL_PROCESS_DETACH   Найти похожие ветки 

 
The Scorpion   (2004-12-13 18:17) [0]

Создал DLL и подгрузил в чужой процесс с помощью ловушки.Код DLL изменяет таблицу импорта процесса.При завершение моего приложения необходимо восстановить таблицу импорта ,это сделать не получается , DLL не получает уведомление DLL_PROCESS_DETACH . Пожалуйста ,подскажите как решить эту проблему.


 
DeadMeat ©   (2004-12-13 19:54) [1]

Кстати тоже заметил, что в Delphi 6, DLL_PROCESS_DETACH не приходит. Читал, что это глюк Borland-a и исправляется добавлением определенных строк в System.pas кажись. Но вот перекомпилировать его у меня не получилось...

---
...Death Is Only The Begining...


 
The Scorpion   (2004-12-13 20:35) [2]

У меня Delphi 7. Уведомление DLL_PROCESS_DETACH работает нормально , но не при данных условиях.


 
Leonid Troyanovsky ©   (2004-12-13 20:38) [3]


> The Scorpion   (13.12.04 18:17)  
> Создал DLL и подгрузил в чужой процесс с помощью ловушки.Код
> DLL изменяет таблицу импорта процесса.При завершение моего
> приложения необходимо восстановить таблицу импорта ,это
> сделать не получается , DLL не получает уведомление DLL_PROCESS_DETACH


На дельфи 6 нужен update 2.
Или пользовать секцию finalization модуля (unit).

--
С уважением, LVT.

ЗЫ Это тоже из курсовой?


 
Leonid Troyanovsky ©   (2004-12-13 20:43) [4]


> The Scorpion   (13.12.04 20:35) [2]
> У меня Delphi 7. Уведомление DLL_PROCESS_DETACH работает
> нормально , но не при данных условиях.


Каких условиях?

Библиотека с ловушкой выгружается из процесса не в момент
UnhookWindowsHook, а при обработке очередного события.

--
С уважением, LVT.


 
The Scorpion   (2004-12-13 20:45) [5]

Он самый. Не совсем понял как секции finalization заставит что то выполниться(восстановит таблицу импорта) в чужом процессе?


 
Leonid Troyanovsky ©   (2004-12-13 20:57) [6]


> The Scorpion   (13.12.04 20:45) [5]
> Он самый. Не совсем понял как секции finalization заставит
> что то выполниться(восстановит таблицу импорта) в чужом
> процессе?


Если у тебя D7 в использовании finalization нет нужды.
А, вообще, код из finalization должен выполняться
тем потоком, который выгружает библиотеку.
Как, скажем, то, что выполняется в begin..end.

--
С уважением, LVT.


 
The Scorpion   (2004-12-13 21:22) [7]

Все таки ,как же решить поставленную проблему?


 
Leonid Troyanovsky ©   (2004-12-13 21:29) [8]


> The Scorpion   (13.12.04 21:22) [7]
> Все таки ,как же решить поставленную проблему?


Хук поставлен на WH_GETMESSAGE?
Пошли зацепленному потоку условленное сообщение,
по которому он восстановит таблицу.
Естественно, до снятия хука/завершения своего приложения.

--
С уважением, LVT.


 
The Scorpion   (2004-12-13 21:33) [9]

"А, вообще, код из finalization должен выполняться
тем потоком, который выгружает библиотеку."
Библиотека выгружается при уничтожение ловушки , наверное основным потоком моей программы .Как из своей программы произвести указанные действия ,не представляю.


 
Leonid Troyanovsky ©   (2004-12-13 21:54) [10]


> The Scorpion   (13.12.04 21:33) [9]
> "А, вообще, код из finalization должен выполняться
> тем потоком, который выгружает библиотеку."
> Библиотека выгружается при уничтожение ловушки , наверное
> основным потоком моей программы .Как из своей программы
> произвести указанные действия ,не представляю.


Библиотека выгружается:
а) при снятии ловушки в чужом адресном пространстве
потоком, на который установлен хук (зацепленным потоком)
в порядке, который я описывал ранее.
б) при выгрузке библиотеки из своего процесса, т.е.
откуда хук был установлен - потоком его установившим.

Секция finalization выполняется выгружающим его потоком.

--
С уважением, LVT.


 
Leonid Troyanovsky ©   (2004-12-13 21:57) [11]


> Leonid Troyanovsky ©   (13.12.04 21:54) [10]

> б) при выгрузке библиотеки из своего процесса, т.е.
> откуда хук был установлен - потоком его установившим.

Фу-ты. Потоком, вызвавшим FreeLibrary.
Sorry.



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

Форум: "WinAPI";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.042 c
14-1105435700
Ozone
2005-01-11 12:28
2005.01.30
Как узнать модель телефона.


1-1105639172
Fin
2005-01-13 20:59
2005.01.30
Showmessage???


3-1103802934
ShotGuN
2004-12-23 14:55
2005.01.30
Как добавить несколько строк одновременно?


1-1106066237
GanibalLector
2005-01-18 19:37
2005.01.30
ООП


3-1104246356
Belkova
2004-12-28 18:05
2005.01.30
Копирование БД и монопольный доступ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский