![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Защита от TerminateProcess [D5, D6, NT4, Win2k, WinXP]
Sodom © (2002-12-14 10:29:00)Как мне защитить свой процесс от применения этой функции другим процессом? Т.Е. чтобы любой другой процесс не мог меня вырубить этой функцией.
alexteam (2002-12-20 10:53:00) [1]если пишеш прогу которая запускается при помощи autorun-a
то возможно поможет обработчик ontimer если в него вставить
функцию уничтожения процесса по HWND(в данном случае диспечер задач или как там его)
пиши что получилось alexteam@rambler.ru
AlexandrRya (2002-12-15 10:58:00) [2]Можно сделать так, чтобы твоего процесса не было. Не скрыть его перехватом NT(ZW)QuerySystemInformation, а чтобы его не существовало реально - т.е. создать свою нить в чужом процессе.
TankMan (2002-12-15 03:10:00) [3]Люди, а ктонибудь может подсказать, как можно перехватывать Апифункции из глобального хука, ... как писал Василий2... я думаю это будет намного надежней, хоть и больше гемороя с этим, но всетаки... может кто даст пример или укажет на литературу(не видел такой, просто)...
KPV-10k (2002-12-14 22:47:00) [4]Короче так как у тебя процесс должон работать под ядром НТ, то отбирай у него все права доступа (должно работать даже с правами гостя), но эта ф-ция не спасет от хитрых и злобных юзверей с правами SeDebugPrivelege, но есть способ обхода и этой бодяги... пишите может поделюсь... В)
А вот собственно и ф-ция (юзайте "на здоровье"):
function MadeProcessImmortal:Boolean;
Var
ACL : _ACL;
begin
Result:=False;
if (InitializeAcl(ACL, SizeOf(_ACL), ACL_REVISION)) and (IsValidAcl(ACL)) then begin
SetSecurityInfo(OpenProcess(PROCESS_ALL_ACCESS, False, GetCurrentProcessId),
SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, @ACL, nil);
Result:=True;
end;
end;
Song (2002-12-14 22:04:00) [5]:)
Rouse_ (2002-12-14 19:25:00) [6]> Song © (14.12.02 16:52)
Проверял, три глушит спокойно, на пяти начинает чертыхаться, причем очень сильно и в конце концов глохнет, просто я сам когдато реализовывал такую защиту, и пробовал (ради интереса) ее преодолеть, закончилось просто смешно, семь процессов следят чтобы работала основная прога, три процесса давят их изо всех сил :)) (кста им ведь еще время на запуск требуется, так что баланс как раз). В итоге комп почти не реагирует, так как идет тотальная война процессов :))
Желаю успехов
Василий2 (2002-12-14 18:22:00) [7]Song © (14.12.02 15:09)
А как она определять-то будет? По таймеру чтоли?
P.S> Помогите - http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1039769394&n=5
Song (2002-12-14 16:52:00) [8]2Rouse_ © (14.12.02 15:18)
Дело в том, что эта прога также не одновременно будет их убивать, а один за другим, поэтому если сделать постоянное наблюдение в потоке, надо ещё проверить кто кого :)
Cobalt (2002-12-14 16:26:00) [9]Sysinternals Process Explorer - "Найдется все!"
Rouse_ (2002-12-14 15:18:00) [10]> Song © (14.12.02 15:09)
Метод "Gorpher" :))
Действительно, просто и надежно, но завершить всетаки можно, написав программу которая будет отрубать все три процесса, и проверять их на повторный запуск
> Василий2 © (14.12.02 14:46)
А что за зверь такой? У меня только Starter стоит, он сервисов в упор не видит :((
Желаю успехов
Song (2002-12-14 15:09:00) [11]Запускать три процесса, каждый из которых будет "подстраховать" каждый следующиий. Завершить их будет все непросто.
Sodom (2002-12-14 14:57:00) [12]
> Василий2 © (14.12.02 14:46
> Написать перехватчика API вызовов (TerminateProcess в данном
> случае).
Перехватить API, это ясно. Гимора много. Может можно как нибудь проще?
Василий2 (2002-12-14 14:46:00) [13]Rouse_ © (14.12.02 14:16)
Такие проги как ProcessExplorer отрубают и сервисы!!!
Sodom © (14.12.02 10:29)
Написать перехватчика API вызовов (TerminateProcess в данном случае).
Rouse_ (2002-12-14 14:16:00) [14]> не запускать свой процесс.:))
Написать сервис?
Желаю успехов
Ketmar (2002-12-14 14:06:00) [15]не запускать свой процесс.
Satanas Nobiscum! 14-Dec-XXXVII A.S.