Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как можно перехватить событие закрытия программы [D7, WinXP]


Страницы:   1 2 3 4 5 6 7

Nemec ©   (2006-09-06 20:49:00) 

Здравствуйте господа! Пишу программу управления компьютерным классом, компьютер клиента должен работать строго определенное время (оплаченное), на компьютере клиента работает программа управляющая им. У пользователей права админов, чтобы могли сами ставить любой софт по сети. Можно ли как-нибудь перехватить попытку закрытия процесса из Диспетчера задач. Тогда можно будет предпринять определенные действия. Программа работает как сервис и как сервис ее не закроешь, но я бессилен против трех пальцев.
Заранее спасибо.


Ketmar   (2006-09-13 13:50:00) [81]

есть ещё туторы от HolyFather'а, где он в 10 примерах показывает написание драйвера, перехватывающего (в том числе и) ZwTerminateThread(). драйвер даже умеет общаться с user-mode запускалкой. просто, дёшево и сердито.
или, как вариант -- внедрять свою DLL в каждый процесс, где и перехватывать API открытия процесса/завершения процесса (благо, сервис работает с системного аккаунта, и права такие имеет).

зыж xShadow -- ты не тот ли xShadow, который с руткит.ком и автор Vanquish? %-)


DeadMeat   (2006-09-13 12:33:00) [82]

А как часто юзеры ставят у себя софт? Может все таки открывать на это время им машину или самому это делать, а потом в зад? ИМХО надежней варианта с правами я не вижу.


Elen   (2006-09-13 11:26:00) [83]


> Сергей Н.

статьи о перехвате функций на лету (Автор MS REM ) в hook_full.chm


Сергей Н.   (2006-09-13 11:22:00) [84]

> xShadow

Подскажите где можно просмотреть пример?


xShadow   (2006-09-13 10:49:00) [85]


> Сергей Н.

Для того чтобы обламать большенство менеджеров задач достаточно перехватить OpenProcess только грамотно нужно обрабатывать в своей программе.


Сергей Н.   (2006-09-13 10:08:00) [86]

Добрый день,
у меня похожая проблема - есть сервис (управление, типа "остановить", "пауза" запрещено), но процесс этого сервиса отображается в диспетчере задач и может быть легко от туда снят :(. Тут писали про антивирусы, но для меня так и осталось непонятным - как процесс сервиса "kavsvc" (антивирус Касперского) не даёт себя убить? Или фаервол Outpost - его процесс тоже просто не снять, сразу выдаётся ошибка "Отказано в доступе"! Скорее всего это обходится (методами описанными выше), но тем не менее непосвящённых это отпугнёт. Как реализовать подобное?


Ketmar   (2006-09-13 01:59:00) [87]

> [41] vidiv ©   (13.09.06 01:52)
понятно, что пристрелить можно любого. %-) вопрос в сложности сего действа.
в принципе, обладая правами администратора, можно даже в ring0 пролезть (правда, неясно зачем %-). тут вопрос в количестве гемороя -- если хватать "все-все" апи, то задолбёшься писать. и всё равно дырку найдут. %-)


vidiv   (2006-09-13 01:52:00) [88]

Всеравно убью все что угодно. Последний, самый сложный был нод.
Принцип простой: забираешь права на чтение EXE файла и убивает процесс - в итоге никто его не может заного запустить: отказано в доступе.


Ketmar   (2006-09-13 00:33:00) [89]

всё-таки, лучше руткит. ещё надёжней -- kernel mode driver с перехватчиком и ещё кое-что. это тоже снимается, конечно, но уже с чуть большим трудом. а лучше -- всё-таки не давать юзерам права админов. а то при помощи того же FAR'а и WinLogon пристрелить можно (сам проверял; получилось, к несчастью %-).


ph0sgen   (2006-09-13 00:22:00) [90]

Мне кажется проблему можно решить так:

к примеру имеем:
1. сервис, который управляет чем вам нужно(о чем собственно и речь)
2. DLL которая будет скрывать его присутствие в системе

сервис внедряет DLL во все сущесвующие процессы и продолжает работу.
DLL перехватывает CreateProcessW чтобы контролировать все будущие процессы, перехватывает FindNextFileW для скрытия файлов на диске и ZwQuerySystemInformation (из ntdll.dll) для скрытия в списках процессов.

для снятия всего этого предусматривается функция в сервисе, которой может управлять администратор (аля FreeLibrary).

ИМХО лучше из сервиса инжектировать процедуру, которая будет сообщать АХТУНГ в какой-нибудь explorer.exe, чтобы не светить сервис.

антивири молчат, юзеры и админ довольны и всем хорошо


Nemec   (2006-09-12 20:20:00) [91]

>xShadow
Спасибо за предложенную помощь.
Сама логика клиента у меня уже прописана, работает как сервис. Логику сервера подправлю на отслеживание сообщений от клиента, на предмет работы. Правда даже не знаю с какой стороны подойти к проблеме защиты самого клиента. Ясно одно надо запускать кого-то с кем вести диалог. Может прописать в DLL ловушку и при запуске любой проги запускать поток с опросом по таймеру, работает клиент или нет, но тогда вопрос:
  не будет ли комп топтаться на месте (тормозить), ведь программ в винде
  работает много. Помоги с выбором направления работы.

>Elen ©   (11.09.06 09:28) [36]
Спасибо за ссылку. Но материал большой, надо время, чтобы все это переварить. Тема для меня абсолютно новая.

PS Вот так пообщаюсь - глядишь поумнею!!!


xShadow   (2006-09-12 14:11:00) [92]


> Nemec
> как может помочь клиент-сервер?

Очень просто. Небольшой пример. Клиенты отправляют в сеть сообщение о том что они "живи". Сервер принимает из сети broadcast пакеты по udp протоколу и не получив ни одно пакеты в течении пары минут от компьютора можно идти с битой и бить по голове. Такое общение огранизовывается за 15 минут максимум.


>  правда скорей всего (раз ты такой опытный) ты напишешь
> прогу которая и это снесет!!!

Если один человек сделал, то другой завсегда разобрать сможет. (с)

Вообщем немного поэксперементировав могу сказать вывод или моё IMHO. Нужен комплекс клиент-сервер при чём клиент хитрый экзешник + длл.
Если что пиши помогу.


Elen   (2006-09-11 09:28:00) [93]


> Nemec ©

Не принимай близко к сердцу - [29] вполне подойдет для контроля (для начала). И если хочеш почитай статьи о перехвате функций на лету (Автор MS REM ) в hook_full.chm


Nemec   (2006-09-11 09:08:00) [94]

Да, считал что я далеко не дурак.
Зашел на этот сайт и понял, что очень сильно ошибался!!!


Elen   (2006-09-11 09:00:00) [95]


> Наиль ©

Креативная фантазия - это плюс
Но сложность - это минус


Наиль   (2006-09-11 08:55:00) [96]

Поправка к моему методу [22].
"Бессмертная" программа перед запуском самой себя, должна сделать копию своего Exe с новым именем и запустить эту копию. Тогда...
Плюс: Прежде чем в Far появится имя процесса, процесс с этим именем перестанет существовать.
Минус: Exe станет уязвим для удаления

Всё это (мой метод) фантазия - лишёная оснований.


Elen   (2006-09-11 08:47:00) [97]


> Nemec

Кажись  Alx  имел ввиду перехват сплайсингом, т.е. подменой сторонних процедур в других потоках своими. Для этого DLL лучше всего. Но это не так уж и просто.


Nemec   (2006-09-11 08:36:00) [98]

> Alx_ ©   (10.09.06 18:12)
Я понимаю внедрить DLL в свою программу, но как без ловушки перехватить события происходящие вне её?


Alx_   (2006-09-10 18:12:00) [99]

Nemec ©   (10.09.06 17:09) [29]
>xShadow - при вызове диспетчера задач ловушка отрубается!!!
Внедрять DLL можно и без использования хука.


Nemec   (2006-09-10 17:09:00) [100]

>xShadow - при вызове диспетчера задач ловушка отрубается!!!

>Anatoly Podgoretsky - как может помочь клиент-сервер?

Пока идея такова, делать на программе-сервере кнопку - "разблокировка клиента", по умолчанию на клиенте прога должна блокировать диспетчер задач и вырубать все проги указанные на сервере. Тогда по мере появления новых прог достаточно просто редактировать список запрещенных программ.
Также можно использовать идею "ychenick ©   (06.09.06 23:04) ", есть правда нюансы, спасти положение не сможет, но внимание администратора привлечет.

Какие будут советы в постановке самой задачи.

ЦЕЛЬ: защитить программу работающую на машине клиента от возможности снятия. Все остальное выше!


Страницы:   1 2 3 4 5 6 7

Наверх

Титульная страница Поиск, карта сайта Написать письмо