![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перехватить запуск любого приложения? И еще... [D6, Win95/98, WinME, Win2k, WinXP]
ReYka © (2002-06-28 12:19:00)SUBJ^. Например как это делает антивирус? И как наприсать приложение которое не видно по CTRL+ALt+DEL, ни в 2000 ни в 98 винде?
То что я подчерпнул из ФАК"a годится только для 9х.
И собственно Сабж? Как это делает антивирус? КАк перехватить запуск ЕХЕ файлов и получить имя файла?
paul_shmakov (2002-07-05 20:33:00) [1]сорри :) не туда ссылку вставил :)
paul_shmakov (2002-07-05 20:32:00) [2]http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025252369&n=5
ReYka (2002-07-01 15:14:00) [3]2 paul_shmakov: Ты прав. Спасибо. Нафига заморачиватся когда так все просто решается. Просто жалко пользователей которые будут сидеть за такой машиной :)
2 Anatoly Podgoretskу: Вполне возможно что так и будет. Но уже в дальнейщкм. Ведь все написано уже так. Я понял что то что я уже напиал будет работать. А проблем на голову искать.... чтоб все глючило.? Оно мно надо?. нет.
Тем более появляются люди которые готовы поучавствовать и помочь.
Спасибо всем.
Anatoly Podgoretsky (2002-07-01 15:07:00) [4]ReYka (01.07.02 13:40)
Вот это правидьный подход к проблеме, а прятать неправильно, кусть убивает. Если еще добавить и пингование компьютера при убиении, то совсем хорошо. Если знания позволяют, то такой монитор должен быть оформлен серсисом.
paul_shmakov (2002-07-01 14:55:00) [5]2 @andrew:
этот способ работает только если юзер будет запускать процессы из проводника, с помощью shell короче.
если же он будет запускать игры с помощью другой какой-либо программы, то соответственно ничего работать не будет.
хотя у этого способа огромный плюс - крайне простая реализация.
2 ReYka:
Что на счет кривого способа. Что в нем кривого? Грубо говоря следить за процессами опрашивая каждую скеунду и при изменениях сообщять?
это глючный способ. дело в том, что нет нормального 100% работающего и 100% безглючного способа перехвата вызовов api во всех работающих процессах обычным win32-приложением.
хотя здесь и необязательно api перехватывать. действительно, можно просто раз в несколько секунд получать список запущенных, если появляются вражеские - вырубать их, или сообщать администратору на сервер.
или даже можно еще проще - получать список окон, по их заголовкам определять, не появилось ли вражеских окон из ранее определенного списка. вражеские опять же вырубать.
т.е. в вашем случае можно малой кровью отделаться.
@andrew (2002-07-01 14:20:00) [6]>Правда это можно обойти: переименовать файл в .com
Правда и на com есть такой же ключик, только \comfile\shell и т.д.
@andrew (2002-07-01 14:05:00) [7]>Хммм... @andrew это будет работать и в 2000?
Ага
@andrew (2002-07-01 14:04:00) [8]Да, забыл!!!!! Будешь эксперементировать с этим ключом ни в коем случае не закрывай regedit. Ибо если написать, напр., в этом ключе calc.exe, то запуская любой exe-шник будет запускаться калькулятор :о)). А для того, чтобы поправить обратно, надо было бы запустить regedit и поправить, но вместо regedit тоже будет запуститься Калькулятор. :о)). Правда это можно обойти: переименовать файл в .com. Но кто об этом догадается? :о))
ReYka (2002-07-01 14:02:00) [9]Хммм... @andrew это будет работать и в 2000?
@andrew (2002-07-01 13:59:00) [10]HKEY_CLASSES_ROOT\exefile\shell\command\default="%1" %*. Так вот именно этот ключ использует вирус типа Worm.Lentin.g, который заменяет эту строку на "некий путь\вирус.exe" %1 %*. Таким образом, при любой попытке запустить exe-шник, запускается Вирус.exe, который в свою очередь запускает (использую что-то вроде WinExec) ту прогу, которую юзер хотел запустить на самом деле. Ты можешь делать тоже самое. Чем это прикольно. Да тем, что твоя прога висит в процессах только в момент загрузки юзерского exe-шника, а потом благополучно выгружается, в отличии от Worm.Lentin.g :)
ReYka (2002-07-01 13:40:00) [11]ТО Anatoly Podgoretsky:
Так оно и есть. Работа в сети.
Пример такой:
1) Работает монитор на всех клиентах. (Если он виден, то его нельзя убить, если не виден, ... то и убить нельзя :))
2) Отслеживает запуск приложений и сообщяет об этом на сервер
3) Если сервер видит что это "бяка" (игруха к примеру) сообщяет админу или убивает.
4) Если клиент работает, а программа не отвечат то кричит об этом админу.
Вот такая штука.
ReYka (2002-07-01 13:35:00) [12]Вот черт... Опять нето написал.
paul_shmakov, это тебе спасибо я хтел сказать... прокси глючит... вместе со мной.
А как на счет GetNameByIP только ассинхронно , есть примеры?
Не хочу чтобы программа глючила опрашивая компы. Читал, но ничего н епонял. Хотел бы пример глянуть рабочий.
то: paul_shmakov: Ужасно. И долго. Был бы пример. Чего нить сделал бы. Что на счет кривого способа. Что в нем кривого? Грубо говоря следить за процессами опрашивая каждую скеунду и при изменениях сообщять?
to: @andrew : Интересно. И главное что работало и под 9х и 2000
Заранее благодарен.
Anatoly Podgoretsky (2002-07-01 13:34:00) [13]Пусть удаляет, но за свой счет.
Речь идет об работе в сети, и к тому же вот цитата
"по CTRL+ALt+DEL, ни в 2000 ни в 98 винде?
То что я подчерпнул из ФАК"a годится только для 9х."
Так вот никаких проблем в 2000 по сравнению с 9х нет, там есть понятия права, не администратор не сможет закрыть что не положено, а в 9х и 2000 в нагрузку должен существовать удаленный мониторинг, убрали программу - тревога. Технология клиент-сервер.
Удаление же программы из списка видимых однако чревато.
@andrew (2002-07-01 13:22:00) [14]Я понимаю, что это кривизна м.б., но имей ввиду, что если ты хочешь перехватывать запуск exe-шников, то для твоей задачи мне кажется есть более простое решение: Есть в reg ключ, который и отвечает за то, что происодит когда user запускает exe файл. Его можно изменить так, чтобы при запуске любого exe-шника запускалась и твоя прога, которая бы записывала бы лог и выгружалась. Уверяю тебя: никто не подкопается. Еси интересно, то допишу.
ReYka (2002-07-01 12:43:00) [15]Ой... нето написал. :)
Anatoly Podgoretsky, спасибо. Ед. человек который дело написал.
Спасибо.
ReYka (2002-07-01 12:41:00) [16]Tо Anatoly Podgoretsky:Ты не ругайся, ты дело покажи. :)
Заранее благодарен.
paul_shmakov (2002-07-01 12:31:00) [17]*нормально* отследить запуск процессов можно только с помощью драйвера.
win9x/me: vxd может получать уведомления CREATE_PROCESS о создании процесса, посылаемые VWIN32.
nt/2k/xp: похожая функциональность обеспечивается недокументированной функцией PsSetCreateProcessNotifyRoutine из NTOSKRNL. она позволяет зарегистрировать свою callback-функцию, которая будет вызываться при создании новый процессов.
если самому драйвер писать сложно, то можно поискать уже готовые, наверняка кто-нибудь уже реализовывал. к нему должен быть api, доступный для вашего приложения-монитора.
можно обойтись вообще без драйверов, глобально перехватывая вызов CreateProcess во всех работающих процессах. но это очень кривой способ.
по поводу скрытия своего процесса:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1014992279&n=2
Игорь Шевченко (2002-07-01 12:14:00) [18]Не проще ли через Local Policies запрещать запуск несанкционированных приложений ?
ReYka (2002-07-01 12:02:00) [19]Tо Anatoly Podgoretsky:Ты не ругайся, ты дело покажи. :)
Заранее благодарен.
ReYka (2002-07-01 12:00:00) [20]Нужно. Вобщем програ которая мониторит запущенные процессы. Нужно для завода. Чтобы никто не играл. А умников которые эту прогу смогут отрубить не много но есть. Соотвественно надо прятатся. А отслеживать процессы хотел при запуске а не по листу процессов. Но раз никто не знает. Придется пока так. Я же не говорю так уж и прятаться чтоб никто не нашел. Требуется чтоб ничего с ней сделать нельзя было. Всмысле с процессом. Всмысел убить. А если удалят то злой админ из зарплаты вычтет :)