Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #66, ИЮНЬ 2004 г.

Трепанация для почтовой мыши

Фленов Михаил

Xakep, номер #066, стр. 066-108-2


ErrorSeverity – что делать, если во время запуска произошла ошибка. Здесь можно указать одно из следующих значений:

- esIgnore продолжить выполнение;

- esNormal вывести сообщение, но продолжить работу;

- esSevere продолжить работу, если стартует конфигурация, которая уже стартовала удачно, или запустить конфигурацию, которая стартовала удачно;

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

В любом случае в системном журнале прописывается запись о происшедшей ошибке, но вот на экране нам отображать ничего не надо. Незачем пользователя смущать лишними сообщениями, иначе из-за мелкого бага он начнет раскапывать, что это за сервис у него глюкнул и зачем. Поэтому измени параметр ErrorSeverity на esIgnore. Системные журналы проверяют редко, а вот сообщение на экране упустить из виду просто нереально.

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

Перезагрузка

Dependencies – зависимости. Если дважды щелкнуть по этому свойству, то появится окно, в котором можно указать сервисы, от которых будет зависеть твой. Это значит, что все они должны будут запуститься раньше.

ServiceType – тип сервиса. Существует три типа:

- stWin32 стандартный оконный сервис, то, что нам и нужно;

- stDevice для драйверов устройств;

- stFileSystem драйвер файловой системы.

StartType – тип запуска сервиса по умолчанию. Здесь можно указать одно из следующих значений:

- stBoot используется оконный загрузчик, когда тип сервиса не stWin32;

- stSystem стартовать после инициализации системы;

- stAuto запускаться автоматически во время загрузки системы. Для зло-сервиса это идеальный вариант;

- stManual сервис стартует ручками;

- stDisabled отключено.

События

Самое вкусное прячется в событиях объекта TService. Давай взглянем, что тут у нас есть:

AfterInstall – генерируется после инсталляции сервиса.

AfterUninstall – генерируется после удаления сервиса.

BeforeInstall – генерируется после инсталляции сервиса.

BeforeUninstall – генерируется после удаления сервиса.

OnContinue – запуск после паузы.

OnPouse – сервис приостановлен.

OnShutdown – сервис остановлен на выключение.

OnStart – сервис стартовал.

OnStop – сервис остановился.

Какие события нам выбрать? На первый взгляд, зло-код должен находится в событии OnStart. Это верно, но не на все 100%, потому что злиться надо на два события: OnStart и OnInstall. Когда юзер инсталлирует сервис, мы уже можем просканить его диск и найти то, что надо, не дожидаясь нормального запуска сервиса. Именно так мы и поступим.

Старт-стоп

Уже сейчас можно скомпилировать проект и установить в систему получившийся сервис. Правда, он пока еще ничего не делает, но потренироваться с установкой можно. Чтобы проинсталлировать сервис, нужно скомпилировать проект (Ctrl+F9) и запустить программу с ключом /INSTALL. Чтобы удалить из системы, нужно выполнить прогу с ключом /UNINSTALL.

Назад на стр. 066-108-1  Содержание  Вперед на стр. 066-108-3