Дилдо для антивируса Михаил «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; |