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

Вниз

Невидимые или неубиваемые приложения в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.009 c
8-40529
WMag
2003-06-13 02:14
2003.10.13
Распечатка tif файлов


7-40700
VmDeeP
2003-07-19 01:32
2003.10.13
Как узнать полный путь к файлу зная хендл процесса?


14-40676
_Alex_
2003-09-21 18:54
2003.10.13
Лицензирование программного обеспечения


14-40631
Johnmen
2003-09-24 14:26
2003.10.13
А любят ли программеры рыбу ?


3-40271
NorthMan
2003-09-22 18:56
2003.10.13
Через BDE следующий код работает:





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский