Форум: "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.037 c