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

Вниз

Как выгрузить чужую DLL из памяти программным путем   Найти похожие ветки 

 
DSKalugin ©   (2004-11-02 17:26) [0]

Наблюдается глюк при установке фокспрошной программы. Она пишет несовпадение файла ресурсов/версий и подыхает. В памяти остаются невысвобожденные библиотеки. Я не могу удалить их с диска т.к. они заняты системой. Не хочется по 3 раза перегружаться пока установишь каждому программу.
Как выгрузить чужую DLL из памяти по имени файла?


 
Cobalt ©   (2004-11-02 19:56) [1]

Значит прога не подохла, раз файлы держит.
А кто держит - воспользуйся ProcessXP от SysInternals.


 
DSKalugin ©   (2004-11-03 13:43) [2]

ProcessXP показывает используемые ДЛЛ каждого процесса. Это верно, но выгружать их не позволяет. Разве что только сам процесс со своими всеми зависимыми делами.
Во первых речь о системах 9х, на NT такого не бывает. А там я удаляю программу Setup.exe путем ctrl+alt+del и "завершить задачу"
Выходит: процесса нет уже, а ДЛЛ висеть продолжает.

Вобщем ProcessXP тут совсем не причем. Я спрашивал про программный метод.


 
VMcL ©   (2004-11-03 21:59) [3]

>>DSKalugin ©  (03.11.04 13:43) [2]

Если исходный процесс - GUI, то в принципе попробовать можно, но боюсь доиграешься до BSOD или чего-нить такого.

1. Узнаёшь HInstance нужной DLL в чужом ВАП.
2. Внедряешь хуком свою DLL и передаешь ей HInstance из п. 1.
3. Будучи в уже в чужом ВАП с помощью своей DLL делаешь FreeLibrary(<ТойСамыйHInstance>).


 
kaZaNoVa ©   (2004-11-03 22:02) [4]

VMcL ©   (03.11.04 21:59) [3]
а методом CreateRemoteThread можно ?
я как-то пробовал ..   BSOD очень часто был ...  обидно ..


 
Игорь Шевченко ©   (2004-11-03 22:35) [5]

Если программа подыхает, то DLL в ее памяти не остается и на диске ей не держится.

Что-то в консерватории не так.


 
Cobalt ©   (2004-11-03 23:39) [6]

2 DSKalugin ©   (03.11.04 13:43) [2]
> Каждый человек имеет то, что сам заслуживает.
В качестве жеста доброй воли рекомендую прочесть мой пост ещё раз ;)


 
Игорь Шевченко ©   (2004-11-03 23:41) [7]

Извиняюсь, про 9x не прочел. Ищи в google/Яндекс по словам DLL Unloader


 
VMcL ©   (2004-11-04 07:49) [8]

>>kaZaNoVa ©  (03.11.04 22:02) [4]

>а методом CreateRemoteThread можно ?

Можно, но только в WinNT; в Win9x CreateRemoteThread не имплементирована.

P.S.
Почитать, от том, как "подмазываться" к чужим процессам, можно здесь:
http://www.podgoretsky.com/ftp/Docs/Classics/Richter/


 
DSKalugin ©   (2004-11-04 13:31) [9]

Вобщем я так понимаю проще перегрузиться ;-))


 
Cobalt ©   (2004-11-04 16:21) [10]

Проще запустить ProcessXP


 
kaZaNoVa ©   (2004-11-04 17:41) [11]

VMcL ©   (03.11.04 21:59) [3]
самый главный вопрос, как сделать:

> 1. Узнаёшь HInstance нужной DLL в чужом ВАП.

я когда экспериментировал - пробовал выгружать свою библиотеку (которую сам до этого загрузил) а как узнать Hinstance чужой DLL ?


 
Digitman ©   (2004-11-04 17:56) [12]


> kaZaNoVa ©   (04.11.04 17:41) [11]


на НТ-платформе - свободно.
куча способов - и документированных, и не очень)
а за маздай не скажу, не рассматривал вообще.


 
kaZaNoVa ©   (2004-11-04 18:10) [13]

Digitman ©   (04.11.04 17:56) [12]
для НТ - в какую стороны рыть ? (какую юзать функцию ?)


 
Игорь Шевченко ©   (2004-11-04 18:34) [14]

kaZaNoVa ©   (04.11.04 18:10) [13]

PSApi, Toolhelp


 
kaZaNoVa ©   (2004-11-04 18:38) [15]

Игорь Шевченко ©   (04.11.04 18:34) [14]
а ..  кажется понял - перебор длл  - да ?
ps я всегда Toolhelp юзаю ..  на PSApi у меня "аллергия" так как Toolhelp везде работает :))


 
VMcL ©   (2004-11-04 20:47) [16]

>>kaZaNoVa ©  (04.11.04 18:38) [15]

>так как Toolhelp везде работает

AFAIR, на NT 4 не работает.


 
kaZaNoVa ©   (2004-11-05 10:30) [17]

VMcL ©   (04.11.04 20:47) [16]
извиняюсь .. :)
я имел ввиду на 98,2000,XP,2003  ;)
про NT 3.5 , NT 4  ничего не знаю, так как не юзал ..


 
VMcL ©   (2004-11-05 10:48) [18]

>>kaZaNoVa ©  (05.11.04 10:30) [17]

>извиняюсь .. :)

Сам себя можешь извинять сколько хочешь :-)

>NT 4  ничего не знаю, так как не юзал

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

А на NT 3.5, по-моему, Win32-программы вообще не запустятся.


 
kaZaNoVa ©   (2004-11-05 11:24) [19]

VMcL ©   (05.11.04 10:48) [18]

> Зато пользователи твоего софта могут юзать и будут
> неприятно удивлены, когда увидят сообщение о том, что
> функция такая-то не найдена в библиотеке такой-то.

NT 4 по моему всё-таки так устарела, что уже почти негде не юзается .. :)


 
VMcL ©   (2004-11-05 12:05) [20]

>>kaZaNoVa ©  (05.11.04 11:24) [19]

Зря смайлы ставишь. Еще и как пользуются. Ну да ладно, моё дело предупредить...


 
kaZaNoVa ©   (2004-11-05 13:45) [21]

VMcL ©   (05.11.04 12:05) [20]
ясно .. про 98 слыхал ещё много на старых компах юзают .. но NT4 разве лучше 98 ?


 
Игорь Шевченко ©   (2004-11-05 14:09) [22]

kaZaNoVa ©   (05.11.04 13:45) [21]

Завязывай с оффтопиком. "Просто потрепаться вы можете в соответствующей конференции" (с)


 
ssergey   (2004-11-05 14:12) [23]

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


 
ssergey   (2004-11-05 14:16) [24]

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


 
ssergey   (2004-11-05 14:25) [25]

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



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

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

Наверх




Память: 0.5 MB
Время: 0.059 c
14-1101883869
GanibalLector
2004-12-01 09:51
2004.12.19
Расчет потребности в оборудовании


11-1084142128
Диман
2004-05-10 02:35
2004.12.19
Картинки в ListView


8-1095853051
Lord de Mon
2004-09-22 15:37
2004.12.19
Функция для проирования звуковых файлов


4-1099606582
jek_
2004-11-05 01:16
2004.12.19
WinExec


14-1101821971
AlexG
2004-11-30 16:39
2004.12.19
Великий демократический (крестовый) поход!





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