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

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

Убийство процесса


Страницы:   1 2

Out ©   (2006-11-16 09:24:00) 

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

Вопрос: Как отловить момент уничтожения процесса?


user51   (2006-11-17 11:45:00) [1]

у себя я сделал сервис(сервис назвал так чтобы юзер думал что это служебная программа типа igfxsvrc.exe) который считает время. он в свою очередь запускает из себя программу которая отображает количество бабок и соедененн с ней через сокет. юзера  сдуру убивают эту прогу. Сервис проверяет наличие  этой проги путем поиска окон, если ее нет то запускает заново. В свою очередь эта прога проверяет запущен сервис если нет то перезапускает его. Процессы можно также убивать из фара и тотала. А если юзера работают без прав администратора то сервис они никак не остановят.


BiN   (2006-11-16 20:58:00) [2]


> Чапаев ©   (16.11.06 19:26) [22]

А я уже собрался ему про настройку SACL-а процесса рассказывать...


Чапаев   (2006-11-16 19:26:00) [3]

> [21] BiN ©   (16.11.06 17:14)
Э... [10]. Человеку надо отслеживать пребывание юзер за компом. Единственное, что тут есть смысл программировать -- чтение системных логов...


BiN   (2006-11-16 17:14:00) [4]


> Чапаев ©   (16.11.06 13:00) [20]
>
> Да автор в очередной раз аудит изобретает... Хотя настройка
> аудита -- дело админское, а не программистское...

В данном случае администратору без программиста будет очень непросто настроить аудит доступа к процессу.


Чапаев   (2006-11-16 13:00:00) [5]

Да автор в очередной раз аудит изобретает... Хотя настройка аудита -- дело админское, а не программистское...


Elen   (2006-11-16 12:58:00) [6]


> Чапаев

О-о-о. Вот отсюда автору и нужно было начинать свой вопрос, типа - "Моя прога делает...! Что делать если ей приделают коньки и она их отбросит?"


Чапаев   (2006-11-16 12:49:00) [7]

> [17] Elen ©   (16.11.06 12:14)
Не, [4] говорит о некоем "перехвате из службы". А я бы писал службу, которая все нужные действия выполняет без всяких лишних программ...


Elen   (2006-11-16 12:14:00) [8]


> Не лучше ли простенький сервис сделать?

Дык я и не спорю. [4]. но и [14] тоже я применяю с успехом


Чапаев   (2006-11-16 12:06:00) [9]

> [15] Чапаев ©   (16.11.06 12:05)
он же и логоны отслеживать может...


Чапаев   (2006-11-16 12:05:00) [10]

> [10] Out ©   (16.11.06 10:55)
Такая программа работает даже у прошаренного полшьзователя. Аудитом бородатые сибирские хакеры называют сие. И не надо изобретать велосипед.


> ее диспетчер убрать позволит только админу.
Не лучше ли простенький сервис сделать?


Elen   (2006-11-16 11:34:00) [11]

Запусти свою прогу этой функцией : Укажи там екзешник и ее диспетчер убрать позволит только админу.

 
function CreateNoKillProcess(EXEprog:pchar):Boolean;
const
ACL_REVISION = 2;

begin
 result:=false;

// Èíèöèàëèçàöèÿ ñòðóêòóðû ACL (Access Control List)
//  ñëó÷àå óäà÷è ó íàñ áóäåò ACL, íå ñîäåðæàùàÿ íè îäíîãî ýëåìåíòà
// çàùèòû, ò.å. çàïðåùàþùàÿ äîñòóï ê îáúåêòó âñåì.
if not InitializeAcl(ACL,SizeOf(_ACL),ACL_REVISION)
 then; //ShowMessage('InitializeAcl'+#13#10+SysErrorMessage(GetLastError));

//  Ïðîâåðÿåì ACL íà êîððåêòíîñòü (íå îáÿçàòåëüíî)
if not IsValidAcl(ACL) then exit;

// Èíèöèàëèçàöèÿ ñòðóêòóðû SD (Security Descriptor)
// Ïîñëå èíèöèàëèçàöèè SD áóäåò ðàçðåøàòü äîñòóï ê îáúåêòó äëÿ âñåõ
if not InitializeSecurityDescriptor(@SD,SECURITY_DESCRIPTOR_REVISION)
 then ;//ShowMessage('InitializeSecurityDescriptor'+#13#10+SysErrorMessage(GetLastError));

// Äîáàâëÿåì ê îïèñàòåëþ áåçîïàñíîñòè íàø ACL
// Òåïåðü SD çàïðåùàåò äîñòóï âñåì
if not SetSecurityDescriptorDacl(@SD,true,@ACl,true)
 then ;//ShowMessage('SetSecurityDescriptorDacl'+#13#10+SysErrorMessage(GetLastError));

// Îïÿòü ïðîâåðêà íà êîððåêòíîñòü ñòðóêòóðû
if not IsValidSecurityDescriptor(@SD) then exit;

// Çàïîëíÿåì ñòðóêòóðó SA (Security Attributes)
ZeroMemory(@sa,SizeOf(sa));
sa.nLength:=SizeOf(sa);
sa.bInheritHandle:=false;
// Ññûëêà íà íàø äåñêðèïòîð áåçîïàñíîñòè
sa.lpSecurityDescriptor:=@SD;

// Íó è íàêîíåö, ñîçäàåì íîâûé ïðîöåññ ñ íîâûìè àòðèáóòàìè áåçîïàñíîñòè
ZeroMemory(@si,SizeOf(si));
si.cb:=SizeOf(si);
if not CreateProcess(nil,EXEProg,@sa,@sa,false,0,nil,nil,si,pinfo)
 then ;//ShowMessage('CreateProcess'+#13#10+SysErrorMessage(GetLastError));
result:=true

end;
//**************************************************************************


Out   (2006-11-16 11:24:00) [12]


> Так тебе нужно запретить убивать из диспетчера

Я бы рад, но... как ?!


Elen   (2006-11-16 11:15:00) [13]


> Out

Так тебе нужно запретить убивать из диспетчера


Сергей М.   (2006-11-16 10:59:00) [14]


> Out ©   (16.11.06 10:55) [10]


Представь себе - ты идешь по улице, и тебе неожиданно на голову падает кирпич.
Кирдык, как говорится, подкрался незаметно)
Вопрос на засыпку - сможешь ли ты ПОСЛЕ наступления кирдыка "родных и близких известить, что сын ваш больше не вернется" ?)


Out   (2006-11-16 10:55:00) [15]

Я наверное неправильно выразился... )
Работает программа, которая отслеживает время работы пользователя за компом. И если вдруг находится прошаренный пользователь способный прибить процесс этой программы через диспетчер задач, то программа, прежде чем покинуть бренную память компа, дожна написать об этом в лог-файл


Сергей М.   (2006-11-16 10:32:00) [16]


> Как отловить момент уничтожения процесса?


Точно так же как момент создания процесса - разницы тут никакой нет.

см.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1163174628&n=5


Орион   (2006-11-16 10:19:00) [17]

> [7] Elen ©   (16.11.06 10:17)

угу, вот только интересно, что же там за программа, ради которой нужно так извращаться :)


Elen   (2006-11-16 10:17:00) [18]


> Орион

Ну а других вариантов не знаю... кроме перехвата


Орион   (2006-11-16 10:15:00) [19]

> [5] Elen ©   (16.11.06 10:11)

бедная система...))


Elen   (2006-11-16 10:11:00) [20]


> программа писала время убийства в лог файл

-+1 сек. будет достаточно? если да то в таймере СнапШот процессов делать и сверять


Страницы:   1 2

Наверх

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