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

Вниз

Вандальные юзеры   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.011 c
14-87038
r0ma
2003-01-10 16:53
2003.01.27
Для каких целей предназначен Delphi и чем он лучше других языков?


14-87102
Карлсон
2003-01-09 13:22
2003.01.27
как побороть гадов (ужо человеческих)


1-86888
Veles
2003-01-16 10:39
2003.01.27
Передача данных из Delphi в MS Word, что не так делаю ?


7-87177
Metallica
2002-07-29 20:31
2003.01.27
Как перехватить нажатие клавиш [Ctrl+Alt+Del], [Ctrl+Esc].


3-86676
seacat
2003-01-08 17:03
2003.01.27
Индикатор хода выполнения при запросе к БД





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