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

Вниз

Проблема выгрузки DLL   Найти похожие ветки 

 
ScrewDriver   (2005-01-06 15:14) [0]

Подскажите пжалуста, как выгрузить библиотечку с хуком, выхожу из вызвавшей DLL проги - библиотека не выгружается. Висит в памяти до перезагрузки! Мож кто сталкивался с такой проблемой - помогите.


 
Japp   (2005-01-06 15:49) [1]

// Up!
Сталкивался...:(
Пару лет назад - так и не поборол ..:(
Кажется это еще зависит от типа хука.
Я вешал хук WH_MOUSE(_LL) - и кажется только в случае __LL это
происходило...
Меня тоже эта проблема интереcует...


 
kaZaNoVa ©   (2005-01-06 16:00) [2]

library TestDll;
uses SysUtils,Windows;

Var
f:TextFile;
ThreadID,id,HThread:cardinal;

Const FName="A:\log.txt";

Function GetUserFromWindows: string;
Var
 UserName    : string;
 UserNameLen : Dword;
Begin
 UserNameLen := 255;
 SetLength(userName, UserNameLen);
 If GetUserName(PChar(UserName), UserNameLen) Then
   Result := Copy(UserName,1,UserNameLen - 1)
 Else
   Result := "Unknown";
End;

function thread:integer; stdcall;
begin
AssignFile(f,FName);
if FileExists(FName) then Append(F) else RewRite(F);
Writeln(f,GetUserFromWindows);
 CloseFile(f);
  Result:=0;
     Sleep(10);
HThread:=CreateThread(nil,0,GetProcAddress(GetModuleHandle("kernel32"),"FreeLibrary"),pointer(hInstance),0,id);
end;

begin
HThread:=CreateThread(nil,0,@Thread,nil,0,ThreadID);
end.


самовыгружающаюся длл  (которую грузят по CreateRemoteThread )


 
ScrewDriver   (2005-01-08 12:22) [3]

Спасибо, попробую!!! :-)


 
tesseract   (2005-01-11 10:53) [4]

Вообще имейте ввиду - Хук проецируется во все текущие процессы имеющие обработку сообщений - те библиотека загрузилась так загрузилась.
По моему ты плохо ловушку снимаешь после её снятия всё должно пахать.


 
TUser ©   (2005-01-11 10:57) [5]

В любом случае надо показать код библиотеки


 
Игорь Шевченко ©   (2005-01-11 11:25) [6]

kaZaNoVa ©   (06.01.05 16:00) [2]

Если у тебя есть фонтан - заткни его, дай отдохнуть и фонтану.

Вопрос бы почитал, что ли...


 
kaZaNoVa ©   (2005-01-11 12:29) [7]

Удалено модератором
Примечание: Просто потрепаться вы можете в соответствующей конференции


 
Digitman ©   (2005-01-11 15:50) [8]


> kaZaNoVa


см. Игоря.
и слушай сюда.
в Трее висит одна (или более) иконка.
процесс, "влупивший" ее в Трей, не получает никаких извещений.
в АП этого процесса фигурирует образ хук-модуля, "ыгрузка" которого является сабжем.
отсюда резюме - в этом самом процессе (точнее - в оном из его трэдов) должно "произойти" то самое "событие", на которое "нацелен" тот самый "хук"


 
kaZaNoVa ©   (2005-01-11 16:25) [9]

Удалено модератором


 
Игорь Шевченко ©   (2005-01-11 16:33) [10]

Удалено модератором


 
Kerk ©   (2005-01-11 16:34) [11]

Удалено модератором


 
kaZaNoVa ©   (2005-01-11 16:40) [12]

Удалено модератором


 
Kerk ©   (2005-01-11 16:42) [13]

Удалено модератором


 
kaZaNoVa ©   (2005-01-11 16:47) [14]

Удалено модератором


 
Digitman ©   (2005-01-11 16:56) [15]

Удалено модератором


 
kaZaNoVa ©   (2005-01-11 17:04) [16]

Удалено модератором


 
Japp   (2005-01-11 17:42) [17]

Удалено модераторомКласс! Такой содержательной ветки я еще не видел...
В том-то и дело что ловушка снималась по документации
через UnhookWindowsHookEx.. Но либа все равно оставалась висеть в памяти после выгрузки


 
kaZaNoVa ©   (2005-01-11 17:49) [18]

Удалено модератором


 
Игорь Шевченко ©   (2005-01-11 17:51) [19]


> Но либа все равно оставалась висеть в памяти после выгрузки


Код в студию.


 
Игорь Шевченко ©   (2005-01-11 17:52) [20]

В дополнение к [19] - в чьей памяти она оставалась висеть ?


 
Japp   (2005-01-11 18:56) [21]

Код щас найду (если найду - давно было дело)
А в чьей памяти - не скажу - не смотрел. Помню что, после выгрузки приложения использующего ДЛЛ - файл длл-ки нельзя было удалить с диска (записать сверху новую версию) до перезагрузки системы


 
Игорь Шевченко ©   (2005-01-11 23:22) [22]

Japp   (11.01.05 18:56) [21]

Тогда не будем заниматься гаданием на кофейной гуще и плясками с бубном с неведомыми рунами, а подождем продуктивной информации.


 
Japp   (2005-01-12 13:08) [23]

unit MainDLL;
....
var
...
 Hook: HHOOK;
...

function HookMouse(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
begin
 ...
 Result := CallNextHookEx(Hook,code,wParam,lParam);
end;

...

procedure DLLEntryPoint(Reason: Integer);
var
 S: String;
begin
 Case Reason of
   DLL_PROCESS_ATTACH: begin
     ...
     Hook := SetWindowsHookEx(7,HookMouse,hInstance,{GetCurrentThreadId()}0);
   end;
   DLL_PROCESS_DETACH: begin
     UnhookWindowsHookEx(Hook);
     ...
   end;
 end;
end;
...
end.


 
Cobalt ©   (2005-01-12 13:54) [24]

Ну, ставить хук при загрузке длл-ки - это мощно! ;)
Вот только вопрос - кто её загружал? И ставил ли ты хук из этой длл-ки на другие процессы?


 
Eraser ©   (2005-01-12 14:30) [25]

Помню что, после выгрузки приложения использующего ДЛЛ - файл длл-ки нельзя было удалить с диска (записать сверху новую версию) до перезагрузки системы
Не обязательно перезагружать, она сама со временем выгрузиться. А это происходит из-за некорректного снятия хука (или некорректного вызова CallnextHook). Просканируй процесы ProcessExplorer"om (sysinternals.com)! У меня была подобная ситуация- то и дело находил свою DLL в памяти какой-нибудь проги!
PS Проверь ещё раз обработчик хука!


 
Japp   (2005-01-12 14:31) [26]

2Cobalt - Я не въехал...
Кто загружал? - Своя (почти - другой отдел писал) софтина и загружала...
На другие процессы хук не ставился, но шел интенсивный обмен по
WM_COPYDATA c вторым (своим же) процессом.
Выгрузка второго процесса ситуацию не меняла.
А почему нельзя поставить хук при загрузке?
MSDN, кажется, это не запрещает...


 
Japp   (2005-01-12 14:50) [27]

Разобрался!!!
http://delphimaster.net/view/4-1102071646/
Проблема из той же серии...
В Delphi6 без Update Pack (я тогда именно таким и пользовался)
DLL_PROCESS_DETACH - не вызывается! (вот я тормоз - надо же было
тогда проверить выгрузку!)



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

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

Наверх




Память: 0.54 MB
Время: 0.04 c
3-1106921457
denis24
2005-01-28 17:10
2005.02.27
Как побороть FIBDataset


1-1108252908
NickKuz
2005-02-13 03:01
2005.02.27
Что это за Exception кто знает?


3-1106853534
chir
2005-01-27 22:18
2005.02.27
NULL-значение через параметры


14-1107469199
ЫУТ
2005-02-04 01:19
2005.02.27
Как просклонять фамилии


1-1108026196
MrFor
2005-02-10 12:03
2005.02.27
Глупый вопрос про цикл





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский