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

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

Как перехватить запуск любого приложения? И еще... [D6, Win95/98, WinME, Win2k, WinXP]


Страницы:   1 2

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]

Нужно. Вобщем програ которая мониторит запущенные процессы. Нужно для завода. Чтобы никто не играл. А умников которые эту прогу смогут отрубить не много но есть. Соотвественно надо прятатся. А отслеживать процессы хотел при запуске а не по листу процессов. Но раз никто не знает. Придется пока так. Я же не говорю так уж и прятаться чтоб никто не нашел. Требуется чтоб ничего с ней сделать нельзя было. Всмысле с процессом. Всмысел убить. А если удалят то злой админ из зарплаты вычтет :)


Страницы:   1 2

Наверх

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