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

Вниз

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

 
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 вся ветка

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

Наверх





Память: 0.52 MB
Время: 0.049 c
15-1173297215
Cerberus
2007-03-07 22:53
2007.04.01
Рипер CD дисков с возможностью сохранения в eACC+


2-1173093131
vtur
2007-03-05 14:12
2007.04.01
курсор мыши


3-1168515637
Alexander_K
2007-01-11 14:40
2007.04.01
Подключение к Екселю как к БД через ADO


11-1152721897
rainstuff
2006-07-12 20:31
2007.04.01
Побитовые операции...


5-1142439095
Alex603081
2006-03-15 19:11
2007.04.01
изменение/добавление свойств у стандартных компонентов





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