Текущий архив: 2003.01.27;
Скачать: CL | DM;
Вниз
Вандальные юзеры Найти похожие ветки
← →
Format (2002-10-26 22:08) [0]Приветствую! Пишу прогу(и) типа клиенты-сервер для админства в комп. классе. И на всех машинах стоит FAR в надежде на то, что не найдутся умные сволочи (учереждение "обязывает"), которые догадаются с помощью него отрубать моего клиента в списке процессов (который в FAR"e).
Дак вот, к чему я это. Какие средства (программные) существуют для защиты от отрубания проги? (понятно, что 100%-ной защиты нет).
Удалять FAR отвергается, т.к. это уже почти сделано.
← →
Пиноккио (2002-10-26 22:47) [1]Может легче удалить данный плагин, чем сносить весь ФАР
Директория FAR\Plugins\ProcList
← →
Format (2002-10-27 00:38) [2]Да, легче. Просто фар там вообще не нужен.
Я немного неправильно повернул тему. Ведь это можно сделать не только фаром, такую прогу на тех же делфях можно накатать за пять минут. Я вообще о защите программ, от которых требуется висеть всё время в памяти (работать). Как, например, Explorer сам себя запускает после аварийного завершения?
← →
Alex-eraser (2002-10-27 01:27) [3]Есть один немного кривоватый способ:
в обработчике OnClose главной формы впиши
action:=caNone;
Перед этой сторокой можешь вписать что-нибудь вроде
showmessage("Убери руки от проги, СВОЛОЧЬ!!!");
← →
Эльф (2002-10-27 08:55) [4]2 Alex-eraser
Только что натворил подобную прогу. Против kill process в task manager не помогает ;)
← →
Senka (2002-10-27 09:48) [5]Попробуй вот енто только для Win98 работоает:
В файле Alt_Ctrl_Del_Nevid1.dpr пропиши:
program Alt_Ctrl_Del_Nevid1;
uses
Forms,
Windows,
Alt_Ctrl_Del_Nevid in "Alt_Ctrl_Del_Nevid.pas" {Form1};
{$R *.res}
var
ExtendedStyle : integer;
begin
Application.Initialize;
ExtendedStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
ExtendedStyle or WS_EX_TOOLWINDOW {AND NOT WS_EX_APPWINDOW});
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
А в файле Alt_Ctrl_Del_Nevid.pas вот это:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall;
external "KERNEL32.DLL";
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin //Hide
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin //Show
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);
end;
end.
Проги не будет в диспетчере задач, или я не так понял задачу прости...
← →
Pat (2002-10-27 10:13) [6]>Senka (27.10.02 09:48)
такую прогу на тех же делфях можно накатать за пять минут
Диспечер задач тут ни при чем :-)
>Format
Это делается немного по-другому. Идет обмен информацией между сервером и клиентом. Если определенное время ответ от клиента не приходит, а тачка пингуется - значит прога не работает (выключили, зависла..). Тогда приходит злой админ и говорит детям, что так делать нехорошо :-))
← →
RRoman (2002-10-27 10:39) [7]Два процесса одновременно отрубить невозможно (по крайней мере трудновато :)). Может поступить как обычно делается в таких случаях - пишется два процесса друг за другом следящие, пропадает один, другой его запускает и т.д.
← →
Anatoly Podgoretsky (2002-10-27 10:55) [8]А эти два твоих процесса суперскоростные, в состоянии отработать при вырубании друг за другом без паузы
← →
Tano (2002-10-27 11:00) [9]Как вариант решения проблемы вцелом - замаскировать имя под что-то стандартное (типа PowerProfile - нужно только для ноутбука и я его всегда убираю из загрузки).
Если дети просто все подряд выгружают, то лучше всего сделать как говорит RRoman, но тогда это не продвинутые, а отмороженные господа - сажай их в Pascal под DOS 8-(
Прога твоя наверно контролирует что-то, что любят скрывать :-)
← →
NiaSoft (2002-10-27 12:56) [10]>Два процесса одновременно отрубить невозможно (по крайней мере трудновато :)). Может поступить как обычно делается в таких случаях - пишется два процесса друг за другом следящие, пропадает один, другой его запускает и т.д.
Проверено что ФАР запросто вырубает два процесса подряд, и друг друга они запускать не успевают (хотя можно попробовать ставить приоритет реального времени для одного процесса который только ждет, однако в этом случае все будет зависеть от порядка убиения).
← →
Format (2002-10-27 16:10) [11]Senka (27.10.02 09:48) Так сделано уже сразу, иначе не видать бы мне клиента вообще!
Pat © (27.10.02 10:13) К моему сожалению, админ только я там один, а появляюсь я там раз в три дня. Но можно над этим подумать.
RRoman (27.10.02 10:39), Tano (27.10.02 11:00)
Тоже способ, но, опять же, на определённую аудиторию.
Мда... Не густо...
Всем спасибо.
← →
TTCustomDelphiMaster (2002-10-27 19:10) [12]Работает только в Win9x
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
ShellExecute(0, nil, PChar(Application.Exename), nil, nil, SW_SHOWNORMAL);
end;
← →
Геннадий (2002-10-27 19:26) [13]Я под WinME такое думал.
Скрыть прогу из CTRL-ALT-DEL/ALT-TAB. А в событии OnClose пишем WinExec(PChar(Application.ExeName)...)
Программка должна быть прописана в автозагрузки реестра. Если это возможно, то при завершении работы ОС - проверь есть ли ссылка на запуск программы в реестре. Если нет - восстанавливаем.
Под Win2K не знаю... может подойдёт?
← →
Koster (2002-10-28 07:21) [14]Win95/98? Ну так лезем в исходники bo2k и маскируем процесс путем перехвата ToolHelp функций. (там это вроде относительно просто сделано). И фиг кто процесс увидит, не то что выгрузит. Вариант проходит если прога загружается с самого начала, т.к. перехват реализован изменением таюлицы экспорта kernel32.dll
← →
Koster (2002-10-28 07:24) [15]Чуть не забыл, если у процесса есть окна то по ним можно узнать ProcessId. Тогда желательно перехватить функцию TerminateProcess и запретить сносить процесс (можно даже сообщение злое при этом показывать!) кстати вообще достаточно только этого..
← →
2:5071/66.666 (2002-10-30 12:12) [16]Хм... А почему никто про сервисы не вспомнил? Или там все-таки только 9х стоят?
← →
Reindeer Moss Eater (2002-10-30 12:30) [17]Защищать от локального юзера компьютер с win9x - бесполезно.
Какие бы волшебные и неубиваемые процессы вы ни придумали.
← →
sndanil (2002-10-30 19:00) [18]Как-то раз написал "неубиваемую" прогу следующим образом:
прога была отладчиком для всех процессов в виндовсе... соответственно при использовании на ней что-то типа TerminateProcess приводило к тому, что винда закрывала вместе с моей прогой и все остальные процессы так как они были дочерними...
← →
Reindeer Moss Eater (2002-10-30 19:27) [19]Для начала надо чтобы "неубиваемая прога" была запущена.
Например я загрузился в безопасном режиме.
← →
Slym (2002-10-31 06:04) [20]Почему бы не запихнуть весь код в ДЛЛ и не прицепить этот ДЛЛ к Експлореру? Процесс получается Експлорер и выгружать его бесмысленно :), он всеравно запустится :(...
В ддл на процесс аттач креатищъ окно, поток обработки сообщений, и отслеживаещъ 1 инстанцию (а то если експлореры запускаются каждый в своем потоке, то прога твоя тоже может N раз запустится)
Дерзай
← →
Slym (2002-10-31 06:09) [21]Да... аттачить длл к експлореру можно изменением таблицы импорта (самый надежный вариант "нет ДЛЛ - нет вам эксплорера") и если это для вас проблема то в реестре :)
← →
Alexec (2002-10-31 11:48) [22]Все это лажа, я год с этим бился и в итоге поставил 2000 винду, написал под нее прогу и все стало на мази.
← →
mad progman (2002-10-31 13:14) [23]Если стоит NT то тада сервис писать надо. Если 9х и подгружен Explorer то тада мона написать DLL которую будет подгружать сам Explorer и чтобы она отслеживала клиентский процесс, например спомощью мютекса.
Здесь как написа DLL:
http://delphi.mastak.ru/articles/dll_use/index.html
← →
DVM (2002-10-31 13:15) [24]делай ShutDown при завершении работы своей проги и всего делов то
А насчет explorera то он делает несколько попыток запуститься и если его все разы прибивают то он больше не запускается.
← →
Tano (2002-10-31 22:51) [25]2DVM: снятие процесса - далеко не всегда его корректное завершение (иначе задача сводилась бы к тривиальной)
← →
DOOMin (2002-11-05 13:49) [26]Если NT, то пишется сервис, который никто не прибьет (к вопросу о Shutdown на OnClose не прокатит, т.к. при KillProcess этого события не будет). А если 9х, то тут пролетала дока, о том как скрыть свой процесс от функции Списка процессов
← →
Filat (2002-11-15 10:26) [27]Я когда то работал в институте, тоже были проблемы, что юзера то проги поставят, то экран навернут, то ярлыки, в общем все как обычно.
Выход нашли, поставили poledit (Police Editor) от идёт с NT.
Всё было классно, но тоже через FAR можно убить.
На мой взгляд проще поставить 2к и не выёживаться, Делаешь контролёр домена, в нем заводишь юзеров, у каждого свои права, свои настройки и т.д..... Не панацея, но всё же.
Страницы: 1 вся ветка
Текущий архив: 2003.01.27;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.009 c