Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.13;
Скачать: CL | DM;

Вниз

Невидимые или неубиваемые приложения в Win2000   Найти похожие ветки 

 
Wistler ©   (2003-07-05 17:16) [0]

Доброго времени суток.

Нужно написать программу, которую юзеры не смогли закрыть из под win2000. Я вижу выход в следующем: либо спрятать его, что бы никто е нашел (в Win 9x это просто, а в 2000?) или как в последних версиях AVP: при попытке убить процес, AVP ругается и процес не закрывается.

Если кто знает доки, которые мне помогут или кто сталкивался с данной проблемой подкинет мыслишки, буду благодарен.


 
R4D][   (2003-07-05 17:22) [1]

>>Нужно написать программу, которую юзеры не смогли закрыть из под win2000.
Что ты имеешь в виду - окошко или в Task Manager"e?
Если в Task Manager"e, то это не тривиальная задача, то есть она решима, но только обходными путями. По идее Task Manager должен видить все и всегда, при любых условиях.


 
Wistler ©   (2003-07-05 17:45) [2]

В Task Manager"е.


 
Song ©   (2003-07-05 18:21) [3]

В w2k это (не возможность закрытия процесса) легко решается. А вот в XP уже не катит.


 
Morfein ©   (2003-07-05 19:49) [4]

Невозможность закрытия и невидимость - разные вещи...


 
Song ©   (2003-07-05 22:05) [5]

2Morfein © (05.07.03 19:49)
Читаем исходный пост:
Доброго времени суток.

Нужно написать программу, которую юзеры не смогли закрыть из под win2000. Я вижу выход в следующем:... ...буду благодарен.

Any questions?


 
Wistler ©   (2003-07-05 23:03) [6]

В общем я пишу прогу управления компьютерным клубом. В Win9x я эту проблему решил, а как здесь не знаю.
Song вопросы заключаются в том, с какой стороны к этой проблеме подойти, как это лучше сделать.
Регистрация приложения как системного не проходит, говорит, что нет функции RegisterServiceProcess (в Win98 есть).


 
Song ©   (2003-07-05 23:08) [7]

Нет процесс скрыть легко не получится. Возможно сделать так чтобы его нельзя было терминировать. Это легче. Пиши по мылу.


 
R4D][   (2003-07-06 11:03) [8]

Вопрос сокрытия процесса где-то на форуме уже обсуждался. Вот вкратце, варианты:
1) Перехватываешь NtQuerySystemInformation() и убираешь из списка свой процесс - по-моему наилучший вариант;
2) С помощью CreateRemoteThread/SetWindowsHookEx/ИЛИ_ЕЩЕ_ЧЕГО_НИБУДЬ_В_ЭТОМ_ДУХЕ подгружаешь в чужой процесс библиотеку, которая и выполняет основной код(свое главное приложение можешь закрыть) - насколько я понял для тебя этот вариант не катит.
В общем это дело не простое. Хотя вариант 2 полегче, чем 1. Тем более пример подгружения библиотеки с помощью CRT() описан у Рихтера. А вот насчет перехвата - есть статья на wasm.ru, но там естественно на ассемблере. В общем тебе решать.


 
Avenger[NhT]   (2003-07-06 12:23) [9]


> Song © (05.07.03 18:21)
> В w2k это (не возможность закрытия процесса) легко решается.
> А вот в XP уже не катит.

В Хр, тоже все очень хорошо скрывается...
моя прога во всяком случае...
мне кажется что нет ничего невозможного...

Но есть выход проще...просто отключить диспетчер задач...
это возможность операционки, в хр это даже есть через консоль!
Мелкософты всегда о нас заботятся :)


 
Song ©   (2003-07-06 12:33) [10]

Нет-нет, я о не о том, чтобы скрыть, а только о том, что когда пытаешь терминировать процесс он пишет "Невозможно завершить процесс".
Пришли исходник посмотреть, если можешь.


 
Avenger[NhT]   (2003-07-06 12:41) [11]

2Song
Чтоб "невозможно" было убить процесс диспетчером процесс надо запустить как сервис с правами LoacalSystem

и всеже если диспетчер запустишь с с правами системы, то его всеже убьешь...но как это сделать не все знают ;)

а через сторонние менеджеры(фар) убить вообще любой процесс можно, т.к. используется привилегии отладчика, но если у менеджера нет прав SeDebugPrivileges, то у него ничего не выйдет :)



 
Burmistroff   (2003-07-06 15:40) [12]

Можно поступить еще более экзотическим способом - перехватывать NtQuerySystemInformation, но не прятать свой процесс, а заменять его PID (скажем на 8). Тогда все его конечно же видеть будут, а вот закрыть - не смогут :)


 
Avenger[NhT] ©   (2003-07-06 16:30) [13]


> Burmistroff (06.07.03 15:40)
> Можно поступить еще более экзотическим способом - перехватывать
> NtQuerySystemInformation, но не прятать свой процесс, а
> заменять его PID (скажем на 8). Тогда все его конечно же
> видеть будут, а вот закрыть - не смогут :)

Опять же, только через стандартный менеджер...


 
Black_phoenix   (2003-07-07 07:33) [14]

> Wistler

Пиши на мыло , я делал такие програмы как ты . У меня есть 3 решение этого вопроса ! Договоримся


 
Игорь Шевченко ©   (2003-07-07 10:09) [15]

Burmistroff (06.07.03 15:40)

Дело в том, что NtQuerySystemInformation - не единственный источник получения списка процессов :)


 
Ghost_ ©   (2003-07-07 11:38) [16]

А компьютере в домене не управляются? Че огород-то городить?


 
Avenger[NhT] ©   (2003-07-07 13:54) [17]


> Игорь Шевченко © (07.07.03 10:09)
> Burmistroff (06.07.03 15:40)
>
> Дело в том, что NtQuerySystemInformation - не единственный
> источник получения списка процессов :)

Да и им пользуется в основном только стандартный диспетчер...
остальные юзают ToolHelp...наскока я знаю...


> Ghost_ © (07.07.03 11:38)
> А компьютере в домене не управляются? Че огород-то городить?

Я вот и говорю людям, что проще его нафиг отрубить...к томуже это делается административными утилитами...


 
Игорь Шевченко ©   (2003-07-07 15:52) [18]

Avenger[NhT] © (07.07.03 13:54)

А в ToolHelp откуда информация берется ? Оттуда же, там как раз и вызывается NtQuerySystemInformation, в NT-системах...


 
R4D][   (2003-07-07 18:20) [19]

>>Игорь Шевченко © (07.07.03 10:09)
А откуда еще???


 
Burmistroff   (2003-07-07 18:37) [20]

>Avenger[NhT]
Да нет. Не сможет закрыть ни одна программа, использующая NtQuery.... Из всех программ что я видел, не пользуются ntqsi (прямо или косвенно, через toolhelp) только qprocess.exe (в WinXP), и, соответственно только она (из тех программ, что я видел) сможет обнаружить и закрыть такой процесс.

Однако, как правильно подметил Игорь Шевченко, драйвер может вручную произвести энумерацию процессов используя PsActiveProcessesHead (по-моему так называется), при этом, естественно все процессы будут видны.


 
Сергей Енин   (2003-07-23 12:46) [21]


> Avenger[NhT] (06.07.03 12:41)
> 2Song
> Чтоб "невозможно" было убить процесс диспетчером процесс
> надо запустить как сервис с правами LoacalSystem


Остаются, правда, весьма веселые утилитки tlist и kill из поставки Win2k...
Первая вываливает полный список всех процессов, а вторая киляет любой из них...


 
Игорь Шевченко ©   (2003-07-23 18:32) [22]

Сергей Енин (23.07.03 12:46)

Только от учетной записи, обладающей соответствующими правами :)


 
Dimrix   (2003-07-28 16:54) [23]

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

С уважением, Дмитрий


 
ZZ ©   (2003-07-28 19:52) [24]

Как отключить клавиатуру и мышь? :)



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

Текущий архив: 2003.10.13;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.023 c
3-40266
Sam Stone
2003-09-22 16:38
2003.10.13
Variables


1-40407
Alexandr Bratunets
2003-09-30 08:43
2003.10.13
Как проверить существование файла.


14-40647
onix
2003-09-24 12:06
2003.10.13
Обратите внимание на проблему


7-40712
StanislavB
2003-07-19 08:32
2003.10.13
Сброс таблицы дескрипторов


1-40367
3APA3A
2003-09-30 11:54
2003.10.13
Проблема с ValueListEditor ом...