| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > DLL в памяти |
| Автор: Kirgston 3.3.2009, 14:21 |
| Ребята. А как можно проверить "висит" ли в памяти моя длл или нет? И если нет то загрузить её опять? Заранее очень благодарен! |
| Автор: Akella 3.3.2009, 14:27 |
| Ты загружай, винда сама проверит. Если она загружена вернёт тебе её дискриптор или загрузит и вернёт дискриптор. |
| Автор: Kirgston 3.3.2009, 14:53 |
| Нет нет нет )))))) я имел другое. В ДРКБ нашел "убивалку" длл из памяти. А я просто не хочу чтобы против моей длл так пошли =) |
| Автор: cemick 3.3.2009, 15:15 | ||
|
| Автор: Kirgston 3.3.2009, 15:23 |
| о_О почему странное??? Если в ДРКБ есть "как убить" длл , а я хочу чтобы её не убивали =) Длл же привязывается к ехе. Хочется чтобы когда ехе завершалось, то и длл выгружалась, и никак иначе =) |
| Автор: SneG0K 3.3.2009, 15:32 |
| Даж не знаю как, но первая мысль (так, чтоб наверняка=)), ты убивай ддл-ку сам) и грузи ее снова) |
| Автор: Akella 3.3.2009, 15:36 |
почему? Добавлено @ 15:39 Я хозяин компа, я хозяин ОСи, я хочу выгрузить твою библиотеку из памяти, а она будет всяческих сопротивляться.... зачем мне такая программа со всем твоими библиотеками. Можно ещё предположить, что ты пытаешься написать вирус. |
| Автор: Kirgston 3.3.2009, 15:50 |
| Ребята ))))) так смешно просто я задаю много вопросов по безопастности и все думают что я вирусню делаю ))) . Честно скажу вирус каждый из нас написал ))) всегда при изучении программирования 80% людей думают "А вот надо написать вирус" . Я тоже так думал ))))) сказал - написал. Ну протестить то надо было где то! А под рукой только свой компютер... ну чтож... спасибо )))) после формата харда и угробленой фат таблицы всякое желание писать вредоносные программки отпало )))))) Так что не бойтесь это не вирь и не троян и т.д. Akella, да согласен. Ну так нажмите в программе на красный крестик! оО зачем убивать длл? ))) SneG0K, еммм да... вариант )))) но дело в том что длл же не просто "висит" в системе. А убивать и запускать ем...во первых будет ресурсов кушать много, если каждую секунду запускатся так, а ещё сама длл не хилая... там проверок много )))) Ребята. Или скажем чтобы при выгрузке длл чтобы мое приложение также вылетало. Как это можно сделать? |
| Автор: Yanis 3.3.2009, 16:13 |
| Слово «застр###шься» считается не очень приличным на этом форуме. |
| Автор: Kirgston 3.3.2009, 16:24 |
| Да я понимаю. Но на минутку представим что я делаю систему банкомата. Теперь представим... каждый человек подходит и снимает деньги... он не думает о безопасности. Приходит человек который хочет ограбить этот банкомат. И тут он выгружает мою длл из системы. Защита падает... он забирает себе деньги... после этого мы будем думать о этичности? )))) так кто же поступит не этично? Я когда грубо "ворвусь" в систему и не дам никому выгрузить длл из неё (пока не закроется главное приложение), или злоумышленник? Который заберет все деньги? Просто я хочу только одного =) чтобы посторонние процессы не влияли на мою длл. Читал что ехе файлу можно дать права системы и тогда закрыть его будет то ли не возможно, то ли просто сложно... вот мне бы что то такое для длл. Т.к. ребята. Нынче юзер всегда прав. И даже в тех местах когда у юзера руки из попы или это просто хацкер, то не прав в первую очередь программист которое это допустил. Ведь я думаю лучше скажем в поле для ввода цифр позволить вводить только цифры, чем написать красным цветом "Тут вводить ТОЛЬКО цифры!". Мы же знаем когда нибудь кто то введет букву... и получит еррор... и скажет "эта программа плохая!" . Всё это называется "краш тест" когда программу просто проверяют на устойчивость. Ведь я думаю лучше щас это исправить, чем сидеть и думать "упадет\не упадет" ... Я просто не люблю "hot fix" я стараюсь сделать программу так чтобы она на 99% была без всяких глюков и оплошностей. Ребята да даже не грубо внедрятся... а просто как то убивать главный процесс когда кто то лезет к длл. Так сделать можно? |
| Автор: cemick 3.3.2009, 17:15 |
| молодо-зелено.... HINSTANCE hinstDll = GetModuleHandle("MyLib"); // подразумевается расширение .dll if (hinstDll == NULL) { hinstDll = LoadLibrary("MyLib"); Только ты всеравно не сможешь уберечь твои dll... Да и вообще не твоя это забота, что кто то убивает dll(всеравно найдется другой способ обойти защитуу, причем менее затратный), а забота админов настройки защиты системы... |
| Автор: Akella 3.3.2009, 17:27 | ||
твоя программа подвисла, вместе с dll.... |
| Автор: SneG0K 3.3.2009, 17:31 |
| ты можеш например, не сопротивляться, а при вызове функции из длл проверять, не убита ли она... если убита, знач сказать пользователю, что кто-то или что-то выгрузило длл. и спросить:" А не загрузить ли ее снова?". Желательно еще с галоской запомнить) |
| Автор: Poseidon 3.3.2009, 17:43 | ||
|
| Автор: Kirgston 3.3.2009, 18:22 | ||||||
Да... я ещё новичок... а точнее чайник =) но стараюсь, учусь и т.д. просто для программирования надо не только желание, но и просто - время. Спасибо большое!!! Да не спорю. Против лома всегда есть второй лом. Жизнь такая =) . Просто я не могу сказать конкретно для чего это. Но это не для вирусов. А Админом является обыкновенный юзер... а местами (тонкий намек) - хацкер. Выгрузить ехе с диспетчера задач =) а он сам выгрузит и длл.
А у меня просто не стандартная длл ))))) это ещё одно "мини-приложение"
Динамически... длл.. а это как? Ну в принципе некая динамика там есть... оно не грузится с системой, а загружается вместе с моей программой, хотя моя программа не является для этой длл родительской =) в роли "родителей" выступает ещё одна программа, но к которой у меня доступа нету. При завершении моей программы длл "умирает". Вроде есть динамика... но чую что я опять не про то ))))) Если я как всегда не угадал, то дайте пожалуйста статейку про динамику ДЛЛ. Заранее очень благодарен! |
| Автор: Kirgston 3.3.2009, 19:17 | ||
Ребята. Пожалуйста подскажите чайнику )))
Тут писать имя длл как он назван счас в системе? Или как он скомпилирован? То есть в проекте с правой стороны я вижу имя будущей длл. Но после компиляции я же могу переименовать. Так что писать? |
| Автор: SneG0K 3.3.2009, 19:35 | ||
|
| Автор: Riply 3.3.2009, 19:50 | ||
Не "вшивать" имя в проект ? |
| Автор: Kirgston 3.3.2009, 20:29 |
Ну это само собой =) проверки и т.д. это я оформлю чуток иначе, как мне лучше ;) А вы бы не могли подсказать что надо писать под "майдлл.длл" ? Просто скажем при компиляции проекта с правой стороны вы указываете имя файла которое будет "светится" в диспетчере задач. Скажем вы назвали проект project1.exe . После компиляции вы хоть переименуйте файл в "блаблабла.ехе" , но он в диспетчере останется как project1.exe . Всё это я виду к чему... какое название туда писать? Название имени файла? Или то которое я даю во время компиляции? Заранее очень благодарен! Извините я вас не понял :( |
| Автор: Riply 3.3.2009, 20:43 |
Ну, раз на этапе компиляции имя неизвестно, то брать его откуда-то "из вне", а не записывать в проект намерво |
| Автор: Kirgston 3.3.2009, 21:00 |
| Извините вопрос отпал )))))) просто ещё в 2007ом . При компиляции вы давали имя файла и это имя висело в процессах. И никакое другое. А теперь я смотрю что если переименовать файл то и переименовывается процесс =) |