Современные решения

для защиты Windows приложений

и восстановления исходного кода
Автор: Чубченко Сергей. Дата публикации: 23.08.2004

Пишем сервис на Delphi


[Вступление]

Неплохо бы разобраться, что такое вообще сервис. Данный термин появился в NT системах и широкое распространение получил с выходом операционных систем Win2k и XP. Бесспорно преимущества сервисов над обычными программами ощутимы. Это и загрузка до загрузки обычных программ и большие привилегии и больший контроль над системой. Но главное - их нельзя выгрузить через Ctrl + Alt + Del, что стимулирует разработчиков создавать антивирусные мониторы и серверы баз данных именно в качестве сервисов. На то есть ряд причин. Во первых сервисы выполняются как бы незаметно для системы и пользователя, во вторых их блокировка возможна лишь через апплет администрирования панели управления, что не дает вредоносным программам выгружать эти сервисы средствами API функции. К примеру FireWall, работающий в качестве сервиса выгрузить из памяти практически невозможно, что оставляет меньше шансов вирусописателям на блокировку сетевых защит.

Зачем данные возможности могут пригодиться нам? Думаю, если Вы решили заняться написанием крупного проекта, то наверное уже придумали применение сервисам, но как использовать сервисы простым пользователям, да еще и с пользой? На этот вопрос я и постараюсь ответить.

[Цель]

В этой статье мы попробуем написать шуточную программу, которая при запуске компьютера будет выдавать сообщение о незарегистрированности операционной системы. Думаю применение ей найти будет не трудно, так как шутки любят все.

[Приступаем]

Писать сервис мы будем на Delphi. Почему? Да потому, что там уже есть все заготовки под создание сервисов в отличии от Visual Studio 6.0. Про .NET я пока не говорю, так как мало кто имеет на своем компьютере библиотеки для запуска .NET приложений, а тащить за программой 20 Mb библиотек - дело неблагодарное. С чего же нам начать? Да как обычно: "File" -> "New". Теперь самое интересное. В появившемся списке шаблонов следует выбрать "Service Application" и лицезреть заготовку для нашего будущего сервиса. Первым делом советую обратить внимание на свойства класса TService. Мы имеем возможность изменить следующий спектр параметров:

AllowPause - разрешить или запретить приостанавливать сервис.

Рекомендую установить значение в False, чтобы пользователи не смогли приостанавливать работу сервиса через панель администрирования.

AllowStop - также рекомендую установить в False,

так как останавливать сервис пользователям лучше не давать - это чревато тем, что нашу шутку быстро остановят.

Также есть возможности установить логин и пароль для увеличения привилегий, но так как мы не знаем пароль администратора компьютера, на который будем ставить шутку, то лучше эти параметры оставить пустыми.

Вот собственно и все основные параметры. Главное не забудьте установить имя сервиса в что-нибудь нейтральное, чтобы футку не так быстро можно было найти.

[Программирование]

Теперь разберемся с тем, какие компоненты мы можем применять. А их не так и много. Визуального ничего нам использовать нельзя по определению, так что будем использовать только события сервиса. Больше всего нас интересует событие OnStart, так как оно производится после загрузки сервиса. В него пропишем следующее:

procedure TService1.OnStart(Sender: TService; var Started: Boolean); var retval : int; begin retval := ShowMessage (’Операционная система ... установила, что Вы используете незарегистрированную копию системы, что противоречит лицензионному соглашению. Просим немедленно удалить операционную систему и ее дистрибутивы со всех носителей информации во избежании преследования со стороны правообладателя’); end;

Внушает? Думаю что шутка не у каждого вызовет смех ;) Вроде все. Компилируем.

[Проверим работу сервиса]

Проверять мы будем на машине друга-ламера (рекомендуется), так как такие друзья думаю есть у всех. Тут не все так просто. В автозагрузку сервис помещать нельзя, его необходимо инсталлировать специальным образом. Но, к нашей радости все не так сложно, достаточно запустить созданный нами сервис с ключом "/INSTALL" без кавычек. Удалить сервис через панель управления будет невозможно, так как все кнопки мы заблокировали. Но способ удаления все же есть и упомянуть о нем думаю будет нелишним. Для этого достаточно запустить EXE файл сервиса с другим ключом - "/UNINSTALL" также без кавычек.

[Заключение]

Дам Вам пару советов:
1. никогда не говорите друзьям-ламерам способ удаления сервиса
2. не используйте данные шутки на настоящих друзьях, так как это может подорвать дружественные отношения.

Вроде все, удачи

Комментарии

Добавил: Admin Дата: 03.09.2004

Жду комментарии

Добавил: FEUERRADER Дата: 04.09.2004

Прикольная статья. Я никогда сервисы не создавал на делфе. надо поробовать


Добавление комментария


Ваше имя (на форуме):

Ваш пароль (на форуме):

Комментарии могут добавлять только пользователи,
зарегистрированные на форуме данного сайта. Если Вы не
зарегистрированы, то сначала зарегистрируйтесь тут

Комментарий: