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

Вниз

Убийство процесса   Найти похожие ветки 

 
Out ©   (2006-11-16 09:24) [0]

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

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


 
Сергей М. ©   (2006-11-16 09:42) [1]


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


Убийство себя самой что ли ?


 
Elen ©   (2006-11-16 10:02) [2]


> Out

Хуком на WM_DESTROY.


 
Орион ©   (2006-11-16 10:05) [3]

> [2] Elen ©   (16.11.06 10:02)

ты уверена, что при убивании процесса через таскменеджер будет отослано WM_DESTROY?


 
Elen ©   (2006-11-16 10:09) [4]


> Орион

Не совсем. Ну тогда перехватом из службы ;)


 
Elen ©   (2006-11-16 10:11) [5]


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

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


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

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

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


 
Elen ©   (2006-11-16 10:17) [7]


> Орион

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


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

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

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


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


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


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

см.
http://delphimaster.net/view/4-1163174628/


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

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


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


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


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


 
Elen ©   (2006-11-16 11:15) [12]


> Out

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


 
Out ©   (2006-11-16 11:24) [13]


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

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


 
Elen ©   (2006-11-16 11:34) [14]

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

 
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;
//**************************************************************************


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

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


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


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

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


 
Elen ©   (2006-11-16 12:14) [17]


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

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


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

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


 
Elen ©   (2006-11-16 12:58) [19]


> Чапаев

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


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

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


 
BiN ©   (2006-11-16 17:14) [21]


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

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


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

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


 
BiN ©   (2006-11-16 20:58) [23]


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

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


 
user51   (2006-11-17 11:45) [24]

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



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

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

Наверх




Память: 0.53 MB
Время: 0.056 c
11-1151607749
parovoZZ
2006-06-29 23:02
2007.04.01
На чём отобразить рисунок?


11-1152408034
Scrage
2006-07-09 05:20
2007.04.01
KOL и MCK


15-1173445639
oldman
2007-03-09 16:07
2007.04.01
Как хорошая идея становиться кривой...


4-1163520543
savva
2006-11-14 19:09
2007.04.01
реализация Callback вызова из DLL: не выходит каменный цветочек..


2-1173673766
купт
2007-03-12 07:29
2007.04.01
Как свернуть окно программы после запуска