Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Вниз

Как перехватить запуск любого приложения? И еще...   Найти похожие ветки 

 
ReYka   (2002-06-28 12:19) [0]

SUBJ^. Например как это делает антивирус? И как наприсать приложение которое не видно по CTRL+ALt+DEL, ни в 2000 ни в 98 винде?
То что я подчерпнул из ФАК"a годится только для 9х.
И собственно Сабж? Как это делает антивирус? КАк перехватить запуск ЕХЕ файлов и получить имя файла?


 
Andrew_k   (2002-06-28 15:59) [1]

Вирусочек собрался накатать? :)))
Антивирусники писали свой драйвер, если ты гуру в асме - то это однозначно для тебя! А спрятаться от 2К сложно, видел исходники на сях - гемору полны штаны :)) А вот запретить доступ к своему процессу - как два пальца ... Ой! Простите, что-то не то... Как два байта переслать :))) Если сильно нужна помощь, пиши - помогу чем смогу.


 
ReYka   (2002-07-01 10:41) [2]

Да фигня. Я не вирус пишу. А программку типа монитора. Надо спрятатся от диспетчера задач или сделать так что мое приложение можно было завершить только при ваыключении копьютера.
Какие будут соображения? Ну неужели кроме своего драйвера других путей перехватить (и возможно запретить) запуск приложений нельзя?

Заранее благодарен.


 
Anatoly Podgoretsky   (2002-07-01 11:23) [3]

ReYka (01.07.02 10:41)
А зачем прятаться, нормальной программе-монитору это не нужно


 
ReYka   (2002-07-01 12:00) [4]

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


 
ReYka   (2002-07-01 12:02) [5]

Tо Anatoly Podgoretsky: Ты не ругайся, ты дело покажи. :)

Заранее благодарен.


 
Игорь Шевченко   (2002-07-01 12:14) [6]

Не проще ли через Local Policies запрещать запуск несанкционированных приложений ?


 
paul_shmakov   (2002-07-01 12:31) [7]

*нормально* отследить запуск процессов можно только с помощью драйвера.
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


 
ReYka   (2002-07-01 12:41) [8]

Tо Anatoly Podgoretsky: Ты не ругайся, ты дело покажи. :)

Заранее благодарен.


 
ReYka   (2002-07-01 12:43) [9]

Ой... нето написал. :)

Anatoly Podgoretsky, спасибо. Ед. человек который дело написал.
Спасибо.


 
@andrew   (2002-07-01 13:22) [10]

Я понимаю, что это кривизна м.б., но имей ввиду, что если ты хочешь перехватывать запуск exe-шников, то для твоей задачи мне кажется есть более простое решение: Есть в reg ключ, который и отвечает за то, что происодит когда user запускает exe файл. Его можно изменить так, чтобы при запуске любого exe-шника запускалась и твоя прога, которая бы записывала бы лог и выгружалась. Уверяю тебя: никто не подкопается. Еси интересно, то допишу.


 
Anatoly Podgoretsky   (2002-07-01 13:34) [11]

Пусть удаляет, но за свой счет.

Речь идет об работе в сети, и к тому же вот цитата
"по CTRL+ALt+DEL, ни в 2000 ни в 98 винде?
То что я подчерпнул из ФАК"a годится только для 9х."
Так вот никаких проблем в 2000 по сравнению с 9х нет, там есть понятия права, не администратор не сможет закрыть что не положено, а в 9х и 2000 в нагрузку должен существовать удаленный мониторинг, убрали программу - тревога. Технология клиент-сервер.

Удаление же программы из списка видимых однако чревато.


 
ReYka   (2002-07-01 13:35) [12]

Вот черт... Опять нето написал.

paul_shmakov, это тебе спасибо я хтел сказать... прокси глючит... вместе со мной.

А как на счет GetNameByIP только ассинхронно , есть примеры?
Не хочу чтобы программа глючила опрашивая компы. Читал, но ничего н епонял. Хотел бы пример глянуть рабочий.

то: paul_shmakov: Ужасно. И долго. Был бы пример. Чего нить сделал бы. Что на счет кривого способа. Что в нем кривого? Грубо говоря следить за процессами опрашивая каждую скеунду и при изменениях сообщять?

to: @andrew : Интересно. И главное что работало и под 9х и 2000

Заранее благодарен.


 
ReYka   (2002-07-01 13:40) [13]

ТО Anatoly Podgoretsky:
Так оно и есть. Работа в сети.
Пример такой:
1) Работает монитор на всех клиентах. (Если он виден, то его нельзя убить, если не виден, ... то и убить нельзя :))
2) Отслеживает запуск приложений и сообщяет об этом на сервер
3) Если сервер видит что это "бяка" (игруха к примеру) сообщяет админу или убивает.
4) Если клиент работает, а программа не отвечат то кричит об этом админу.

Вот такая штука.


 
@andrew   (2002-07-01 13:59) [14]

HKEY_CLASSES_ROOT\exefile\shell\command\default="%1" %*. Так вот именно этот ключ использует вирус типа Worm.Lentin.g, который заменяет эту строку на "некий путь\вирус.exe" %1 %*. Таким образом, при любой попытке запустить exe-шник, запускается Вирус.exe, который в свою очередь запускает (использую что-то вроде WinExec) ту прогу, которую юзер хотел запустить на самом деле. Ты можешь делать тоже самое. Чем это прикольно. Да тем, что твоя прога висит в процессах только в момент загрузки юзерского exe-шника, а потом благополучно выгружается, в отличии от Worm.Lentin.g :)


 
ReYka   (2002-07-01 14:02) [15]

Хммм... @andrew это будет работать и в 2000?


 
@andrew   (2002-07-01 14:04) [16]

Да, забыл!!!!! Будешь эксперементировать с этим ключом ни в коем случае не закрывай regedit. Ибо если написать, напр., в этом ключе calc.exe, то запуская любой exe-шник будет запускаться калькулятор :о)). А для того, чтобы поправить обратно, надо было бы запустить regedit и поправить, но вместо regedit тоже будет запуститься Калькулятор. :о)). Правда это можно обойти: переименовать файл в .com. Но кто об этом догадается? :о))


 
@andrew   (2002-07-01 14:05) [17]

>Хммм... @andrew это будет работать и в 2000?

Ага


 
@andrew   (2002-07-01 14:20) [18]

>Правда это можно обойти: переименовать файл в .com
Правда и на com есть такой же ключик, только \comfile\shell и т.д.


 
paul_shmakov   (2002-07-01 14:55) [19]

2 @andrew:
этот способ работает только если юзер будет запускать процессы из проводника, с помощью shell короче.
если же он будет запускать игры с помощью другой какой-либо программы, то соответственно ничего работать не будет.

хотя у этого способа огромный плюс - крайне простая реализация.

2 ReYka:

Что на счет кривого способа. Что в нем кривого? Грубо говоря следить за процессами опрашивая каждую скеунду и при изменениях сообщять?

это глючный способ. дело в том, что нет нормального 100% работающего и 100% безглючного способа перехвата вызовов api во всех работающих процессах обычным win32-приложением.

хотя здесь и необязательно api перехватывать. действительно, можно просто раз в несколько секунд получать список запущенных, если появляются вражеские - вырубать их, или сообщать администратору на сервер.

или даже можно еще проще - получать список окон, по их заголовкам определять, не появилось ли вражеских окон из ранее определенного списка. вражеские опять же вырубать.

т.е. в вашем случае можно малой кровью отделаться.


 
Anatoly Podgoretsky   (2002-07-01 15:07) [20]

ReYka (01.07.02 13:40)
Вот это правидьный подход к проблеме, а прятать неправильно, кусть убивает. Если еще добавить и пингование компьютера при убиении, то совсем хорошо. Если знания позволяют, то такой монитор должен быть оформлен серсисом.


 
ReYka   (2002-07-01 15:14) [21]

2 paul_shmakov: Ты прав. Спасибо. Нафига заморачиватся когда так все просто решается. Просто жалко пользователей которые будут сидеть за такой машиной :)

2 Anatoly Podgoretskу: Вполне возможно что так и будет. Но уже в дальнейщкм. Ведь все написано уже так. Я понял что то что я уже напиал будет работать. А проблем на голову искать.... чтоб все глючило.? Оно мно надо?. нет.
Тем более появляются люди которые готовы поучавствовать и помочь.

Спасибо всем.


 
paul_shmakov   (2002-07-05 20:32) [22]

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025252369&n=5


 
paul_shmakov   (2002-07-05 20:33) [23]

сорри :) не туда ссылку вставил :)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.008 c
3-13913
michael_b
2002-08-13 15:56
2002.09.05
Какое самое продвинутое CASE средство для InterBase


1-14072
djonny
2002-08-26 22:41
2002.09.05
Как работать с диалогом, находящимся в ресурсе.


4-14339
Марина
2002-07-05 14:44
2002.09.05
ShellExecute и ARJ.exe


4-14352
Goblinus
2002-07-03 17:08
2002.09.05
Помогите, <b>PLEASE</b>


14-14285
AlexAlex
2002-08-08 11:01
2002.09.05
Сервера приложений





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский