Приложение загружает мою библиотеку, а через некоторое время выгружает ее через FreeLibrary. Что можно сделать для того, чтобы dll осталась в памяти? Вызов LoadLibrary из самой dll не прокатывает.
понять и отпустить а если серьезно, все что угодно, перехватить FreeLibrary и возвращать TRUE когда попадается твоя база, можно из PEB вытереть свою запись, можно LdrAddRefDll вызвать
Squash Глобальное решение : надо внедрятся в другое место(по другому и правильно). Локальное, но может трудоемкое: выяснить почему делают free и пропатчить
Так... freyr Итак слишком много всего перехвачено, но как последний вариант... Антивири еще говняться начнут Как это сделать? Что-то не помогает... Может, флаги не те? С каким Flags вообще ее надо вызывать? valterg ... найти другую работу и заняться другим проектом. Мне известно, почему его делают. Что предлагаете патчить?
То есть? Загружать вторую длл, о которой приложению неизвестно? В принципе можно, но костылем ведь будет... Ну да, как-то так... Все равно костыль.
Squash При статической загрузке dll (через импорт) загрузчик в поле LoadCount структуры LDR_MODULE ставит -1, вследствие чего эту dll с помощью FreeLibrary выгрузить нельзя. Просто выставьте там это значение для своей dll.
Ezrah Если её подгузить в чужой процесс, то в своём процессе ничего не изменится, так что есть три варианта: 1) Патчить место вызова FreeLibrary (если оно известно). 2) Перехватывать FreeLibrary. 3) Писать в LoadCount -1. Третий вариант мне кажется наиболее "красивым".
приоткрою один маленький секрет ))))))) грузите длл своим приложением(DLL_PROCESS_ATTACH -> SetWindowsHookEx(WH_GETMESSAGE,.......бла-бла-бла), оно(длл) автоматом грузится во все остальные ехе. и потом в других приложениях при вызове FreeLibrary для вашей длл, будет аксес виялятиун.
gmer.exe etc(optional) -> показывает длл в процессе в процессе -> h=GetModuleHandle(ваша длл) -> FreeLibrary(h)=True -> аксес виялятиун -> спонтанные глюки в системе - explorer etc
Спасибо всем, проблема решена вызовом CoInitialize для каждого потока (дллка с ком ко всему прочему). qwe8013 Спасибо, буду иметь ввиду на будущее.