Delphi sevice - dotfix - портал розробки і захисту програм

Пишемо сервіс на 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. Не використовуйте дані жарти на справжніх друзів, так як це може підірвати дружні відносини.

Начебто все, удачі

Схожі статті