Форум: "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