Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #72, НОЯБРЬ 2006 г.

20 вистов и пуля

ДРОЗДОВ АНДРЕЙ AKA SULVERUS

Спецвыпуск: Хакер, номер #072, стр. 072-038-2


ServicesToRun = new ServiceBase[] { new Service1() };

Это и есть главная служебная функция. Теперь создадим класс, который будет выполнять функцию антивирусного сканнера. Для того чтобы показать больше возможностей .NET, мы будем размещать наш класс в отдельной сборке, которую будем докомпилировать на ходу (Just-in-Time) и работать с ней. Для операций с файлами и службой нашей сборке понадобятся пространства имен System.IO. Для работы с файлами в .NET Framework'e используется класс File. На мой взгляд, такой объектно-ориентированный подход довольно удобен, поскольку он заметно облегчает написание приложений и гораздо удобнее, чем Windows API. После создания проекта надо добавить в него ссылку на динамически загружаемую сборку, в которой будет лежать класс с функциями антивирусного сканнера (назовем ее «AVExample»), затем добавить в код строку use AVExample для того, чтобы получить доступ к классу. Если просто использовать функции из сборки, то служба будет автоматически завершаться, значит, нужно вызывать функции, используя потоки. Чтобы создать поток и запустить сканнер, нужно создать новый объект класса Thread и присвоить его параметру Target Void метод из нашей сборки (о самой сборке речь пойдет дальше). Весь этот код должен «висеть» на событии OnStart() для сервиса. Рассмотрим код:

Создание потока с вызовом сборки

using AVExample;

//...

protected override void OnStart(string[] args)

{

Thread ScanT = new Thread(new ThreadStart(AVExample.FileCheck.scan));//создаем и запускаем поток

ScanT.IsBackground = true;

ScanT.Name = "ConfScanner";

ScanT.Start();

}

По многочисленным рекомендациям компании Майкрософт код методов не должен храниться в самой службе. Он должен находиться в сборках, поэтому в нашем случае сама служба - это, на данный момент разработки, пара строк кода (скоро строк станет гораздо больше). Приступим к созданию антивируса :).

[антишпион своими руками.]

В последнее время многие вирусы прописывают в hosts.conf свои данные для того чтобы запутать пользователей. Например, весной 2006 года по сети ходил вирус, который прописывал в host.conf ссылки на поисковики и переводил эти запросы на сайт хакера, вымогая таким образом кровно заработанные деньги у пользователей (одну мою подругу так развели на 100 WMZ: она заплатила за разблокировку яндекса, мейл.ру, гугла и рамблера, по 25 за каждый поисковик!). Я же, как и все читающие наш журнал, желаю пользователям исключительно добра и хочу их обезопасить их от Сетевых злоумышленников. Для защиты от такого рода нападения как раз хорошо использовать службу.

Создаем сборку, в ней пишем класс AVExample. Алгоритм работы сканера прост: при установке программы получить дату последней записи в этот файл, сохранить ее, проверять файл host.conf на предмет изменений, в случае изменений заменить файл на рабочий host.conf. Единственной сложностью такого решения является то, что программа может столкнуться с вирусом и не сможет заменить файл (по причине того, что в этот момент файл будет использоваться другим процессом), поэтому после обнаружения программа должна прождать 60 секунд и затем переписать файл. Вот так будет выглядеть реализация этого алгоритма:

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