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

Вниз

Как выгрузить чужую 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 вся ветка

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

Наверх




Память: 0.52 MB
Время: 0.023 c
1-1101998231
denis24
2004-12-02 17:37
2004.12.19
TWordApplication


3-1100614292
CHTR
2004-11-16 17:11
2004.12.19
Не могу вытащить картинку из BLOB поля


1-1102334162
tytus
2004-12-06 14:56
2004.12.19
Можно ли в ListBox-e сделать итем редактируемым?


14-1101655076
tw
2004-11-28 18:17
2004.12.19
Заставка


14-1101728392
КаПиБаРа
2004-11-29 14:39
2004.12.19
А зачем все время ИМХО приписывать?