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

Дилдо для антивируса

Михаил «Horrific» Фленов

Хакер, номер #096, стр. 096-126-4


- DeleteService – удаляет сервис. Параметр только один и это хэндл удаляемого сервиса.

- EnumDependentServices – перечисляет все сервисы, которые зависят от указанного. Таким образом можно вычислить зависимости.

- GetServiceDisplayName – определяет дружественное имя сервиса, которое можно увидеть в оснастке служб.

- EnumServicesStatus – перечисляет все установленные сервисы из базы данных и возвращает для каждого из них текущее состояние.

Реакция

При работе с SC-менеджером нужно быть очень внимательными, потому что результат наступает не мгновенно. Если запустить пример, который ты найдешь на диске, и программно остановить сервис Messenger, то можно увидеть, что в оснастке «Сервисы» служба сообщений будет некоторое время недоступна, так как система будет останавливать сервис, обновлять базу данных и т.д.

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

Напутствие

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

Программное отключение сервисов лишний раз подтверждает тот факт, что защиты в окнах просто не может быть, особенно если юзер работает под правами админа. Любая зло-программа может незаметно вырубить эту защиту и уничтожить компьютер бедного пользователя. Виноват останется все тот же бедный юзер, но что он может сделать в Windows Home Edition?

Остается только пожелать тебе удачи. Надеюсь, скоро увидимся.

Листинг 1

var

servicemanager, service:Cardinal;

ss:SERVICE_STATUS;

begin

// Открываем менеджер сервисов

servicemanager:=OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);

// Открываем сервис Messenger

service:=OpenService(servicemanager, 'Messenger', SERVICE_ALL_ACCESS);

// Проверяем на ошибочки

if service=0 then

begin

ShowMessage('Ошибка');

exit;

end;

// Останавливаем Messenger

ControlService(service, SERVICE_CONTROL_STOP, ss);

// Закрываем сервис

CloseServiceHandle(service);

end;

Назад на стр. 096-126-3  Содержание