Как сделать свой антивирус на батнике

Добавил пользователь Morpheus
Обновлено: 05.10.2024

с изучения компьютера и информатики. иначе не будешь знать куда атакуют вирусы и как это происходит.
потом программирование.
и лет через 10-15 сможешь написать самый простенький антивирь.

Ничего сложного - так Аваст сделали. Проверяем исполняемый файл на запаковку. Если файл запакован - визжим.

Ух ты и замахнулся . Но у меня есть рецепт берешь 1 кг хлорки и разводишь в 1 литре воды антивирус убойный все вирусы сдохнут

Зачем это делать? В антивирусе главное - поддержка. Поддержка осуществляется командами высококвалифицированных специалистов. Да, можно наговнокодить поисковик по сигнатурам, который будет срабатывать на 40 незапакованных вирусов, но от него толку не будет.

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

** Гуру (3703) Вы девушка, или мужик, под женским именем? Наверное второе, поскольку настоящие девушки, подобное не пишут.

Наверное каждый хватал вирусы и прочую нечисть, которая распространяется на флэшках при помощи autorun.inf . Лично меня, на работе, уже достало бороться с этой нечистью. Есть идея некоторого противоядия этой эпидемии средствами .bat .
Неплохой способ, а именно создание в корне флэшки папки с именем autorun.inf, внутри которой находится папка с неправильным именем (F\autorun.inf\usb..), позволяет многократно снизить риск заражения. Конечно же это не панацея, но весьма действенный способ.
Суть идеи такова, что бы автоматизировать при помощи нашего, к примеру, USB.bat, следующие действия:

1) Удалить уже существующий на флэшке настоящий autorun.inf , а так же, если имеется, то и autorun.inf созданный вирусом (что сложнее).
2) Отключить автозапуск на всех дисках.
2) Создать в корне флэшки директорию autorun.inf, с вложенной в нее папкой с неправильным именем.
3) Сделать наш USB.bat с поведением, подобным поведению вирусов, но в благих целях. Т.е. сделать так, что бы USB.bat постоянно висел в процессах и "заражал" все вставленные в ПК флэшки. Желательно, что бы он и дальше переносился на флэшках, "заражая" другие ПК. Правда с последним пунктом наверное будет сложно, т.к. autorun.inf на флэшке уже не будет. Хотя, можно наверное сделать некий исполняемый файл c иконкой папки и именем "Мои документы", который бы и запускал наш USB.bat .

Пример, в котором USB.bat снимает со всех файлов, имеющих в названии autorun., атрибуты "скрытый", "системный", "только для чтения" и удаляет их, после чего создает на флэшке директорию autorun.inf и помещает в нее папку с неправильным именем usb.. , далее директории autorun.inf присваиваются новые атрибуты "скрытый" и "системный":

attrib -s -h -r autorun.*
del autorun.*
mkdir "\\?\%~d0\autorun.inf\usb..\"
attrib +s +h %~d0\autorun.inf

Кому интересно, высказывайте свое мнение. Вносите предложения и конечно помогайте в написании )) Заранее благодарен за Вашу помощь и участие!

Естественно, это требует широких сетевых каналов, мощных многопроцессорных
систем и еще кучу всего. Словом, без солидных финансовых вложений тут никак не
обойтись. Однако никто не заставляет нас создавать сервис планетарного масштаба
и, если постараться, можно вполне уложиться в бюджет $2000 или даже меньше. Нам
потребуется интернет-канал с безлимитным тарифом, чтобы злые люди не кинули нас
на входящий трафик, который будет весьма значительным. В качестве компьютера
вполне подойдет машина с процессором Core2Duo и парой гигабайт оперативной
памяти. О проблемах с лицензированием антивирусов мы поговорим в одноименной
врезке, а пока отметим, что никаких особых программистских навыков не
понадобится. Подойдет любой язык (Си, Perl, PHP) и минимальный опыт работы с CGI
(пользуясь случаем, хочу порекомендовать библиотеку CGIC).

Virus-total изнутри

На этом, собственно говоря, возможности virus-total'а и заканчиваются. Это
создает большие проблемы: во-первых, далеко не все антивирусы имеют консольные
версии, а, во-вторых, даже те, что имеют, поведением зачастую радикально
отличаются от полноценных GUI-версий. В чем легко убедиться, сравнив результаты
сканирования большой коллекции вирусов локальным способом и через virus-total –
сравнение будет отнюдь не в пользу virus-total'а.

Маленькие секреты больших серверов

При попытке реализации вышеописанной модели неизбежно всплывут проблемы
удручающе низкой производительности. Но мы не боимся трудностей и начнем щемить
проблемы одну за другой. Первое и очевидное. Как показывает статистика,
различные пользователи преимущество проверяют одни и те же файлы, как правило,
принадлежащие Windows или популярным программным пакетам. Чтобы сократить
накладные расходы, рекомендуется подсчитывать контрольную сумму файла перед его
проверкой и, если такой файл уже проверялся ранее, выдавать уже готовые
результаты сканирования, сохраненные в базе данных. На первый взгляд, в
реализации данного алгоритма нет ничего сложного, но тут притаилось немало
подводных камней. Вот только наиболее актуальные:

Также крайне желательно реализовать опцию, позволяющую пользователю выбирать
режим сканирования с эвристикой и без (чего не сделано на virustotal). Эвристика
представляет собой довольно затратную по времени и ресурсам ЦП операцию, но
далеко не все пользователи доверяют полученным результатам и хотят видеть имя
конкретного вируса (если он есть), а не расплывчатое предупреждение, обычно
ругающееся на упаковщик/протектор, которым обработан честный файл. С другой
стороны, вирусописателям совершенно неинтересно сканирование по базе (так как
только что написанного вируса там заведомо нет) и они предпочли бы задействовать
только эвристику, экономя тем самым ресурсы нашего сервера. Так почему бы не
пойти им навстречу?

Закачка больших файлов предоставляет серьезную проблему, имеющую несколько
решений. Самое простое (и глупое) – установить верхний предел закачиваемого
файла в пару мегабайт (или около того), чуть-чуть умнее: лимитировать суммарный
размер всех файлов, закачанных за сутки с одного IP (но тут возникает проблема
определения IP, поскольку очень часто мы будем видеть не IP пользователя, а IP
прокси сервера провайдера). Полезно рекомендовать пользователям сжимать файлы
перед отправкой zip'ом или другим популярным архиватором для уменьшения нагрузки
на канал или делать это автоматически на клиентской стороне специальным скриптом.
Наконец, за сканирование больших файлов можно взимать деньги, но об этом мы
поговорим чуть позже, а пока продолжим тему оптимизации.

И совсем не помешает прикрутить к нашему сервису утилиту вроде PEiD,
определяющую тип и версию упаковщика/проектора (правда, довольно часто
ошибающуюся). И опционально реализовать распаковку набором статических
распаковщиков, работающих намного быстрее тех, что встроены в антивирусы. Тут
есть один подводный камень – хотя 99% вирусов распознаются по распакованному
дампу, некоторые, особо ленивые, сотрудники антивирусных компаний включают в
базу сигнатуры упакованного файла и после распаковки он перестает опознаваться
как вирус. Однако, учитывая, что распакованный файл прогоняется через легион
антивирусов, вероятность ложно-негативного срабатывания стремится к нулю.

Зарабатываем деньги лопатами

Мир жесток и все в нем упирается в деньги. На голом энтузиазме никой
онлайновый сервис долго не продержится, поэтому приходится разрабатывать не
только программный код, но и жизнеспособную бизнес-схему. Рассмотрим возможные
источники дохода. Первое – рост посещаемости нашего сайта. На посещаемости, как
известно, можно нехило заработать, особенно, если мы, например, продаем
собственные защитные комплексы, предлагаем услуги по пен-тестингу и т.д.
Онлайновый сервис привлекает клиентов намного активнее любых баннеров и,
главное, привлекает именно тот контингент, который нам нужен, следовательно,
возросшие объемы продаж покроют все расходы на поддержку и обслуживание
серверов, отплату трафика и т. д.

Третье – взимать деньги непосредственно с самих пользователей. Хочешь подолгу
стоять в очередях и сканировать файлы не больше чем … мегабайт? Пожалуйста,
пользуйся нашим сервисом бесплатно! Хочешь иметь определенные привилегии – будь
добр заплатить. Главное, выбрать удобную схему оплаты. Здесь вам не Америка,
здесь климат (финансовый) иной. Кредитные карты имеют единицы, электронные
системы платежей только начинают набирать популярность. Зато практически каждый
IT-специалист – владелец сотового телефона, а значит, можно воспользоваться
микро-платежами через SMS либо потребовать от клиента сообщить номер карты
универсальной оплаты (перечислив заданную сумму на счет, который он может
расходовать, когда пользуется нашим сервисом). Как показывает практика, сотовые
платежи приносят наибольшую отдачу, поскольку телефоны распространены
повсеместно, а сам процесс оплаты требует минимум телодвижений, и (что
немаловажно) клиент практически ничем не рискует. А вот с кредитными картами все
намного сложнее и есть риск, что нечестный оператор снимет с них совсем не ту
сумму, какая ожидалась. Тоже относится и к микро-платежам через SMS. Гарантий,
что снимут 150 рублей, а не 450, у клиента нет никаких.

А что в итоге?

Разумеется, в статье охвачены далеко не все проблемы, с которыми неизбежно
столкнется всякий, попытавшийся воздвигнуть подобный онлайновый сервис. Но
задача выполнена – мыщъх предоставил вполне законченную, отлаженную и
работоспособную схему, которая скоро будет запущена в промышленную эксплуатацию.



Полную версию статьи
читай в майском номере
Хакера!

Юридические проблемы лицензирования

Пользовательские соглашения (EULA) на коммерческие антивирусы не разрешают
использовать их в онлайновых сервисах без заключения специальных контрактов, что
вообще-то логично. Однако не стоит думать, что всякий контракт обязательно
связан с необходимостью выплаты дополнительных отчислений. Вовсе нет! Достаточно
проявить надлежащий дипломатический подход!

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

А что мелкие бренды? Они, конечно, понимают, что сравнение с конкурентами
будет не в их пользу. Тут есть один очень интересный момент. Мелкие антивирусные
компании страдают хронической нехваткой свежих вирусов, которые попадают к ним в
последнюю очередь, и потому онлайновый сервис, автоматически отсылающий уже
детектируемые конкурентами вирусы – для них прекрасное средство пополнения
вирусных баз и продвижения в различных рейтингах. С мелких брендов можно даже
взимать плату за каждый новый для них вирус, и большая вероятность, что платить
они согласятся!

Короче говоря, лицензионные проблемы – это и не проблемы вовсе. А вот разных
проволочек – предостаточно и нужно заранее быть готовыми к тому, что нас будут
перебрасывать от одного ответственного лица (которое ничего не решает) к
другому, третьему, и так по цепочке… Это уже издержки цивилизации, против
которых не попрешь.

Проблемы конфиденциальности

Идея первая (тупая до безобразия) – наплевать на все приличия и отсылать
файлы в антивирусные центры независимо от состояния каких-то там галочек.
Главное: создать у пользователя иллюзию, что его конфиденциальность строго
блюдут, ну а что происходит на самом деле, он все равно не узнает. Ну… до тех
пор, пока тайное не станет явным и не разразится скандал, идущий совсем не на
пользу нашему ресурсу.

Идея вторая – поддерживать эту опцию только для пользователей, открывшим у
нас счет. Кстати, это представляет собой нехилую мотивацию для оплаты услуг,
особенно с учетом того, что о конфиденциальности в основном беспокоятся
корпоративные пользователи, привыкшие платить за услуги (в отличие от домашних
юзеров, тяготеющих к халяве вне зависимости от стоимости полнофункционального
аккаунта).

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

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

Создание .bat файла с помощью блокнота

Шаги по созданию будут следующими

Ваш файл .bat готов: если его запустить, будут автоматически выполнены все перечисленные в файле команды (при условии отсутствия ошибок и необходимости прав администратора: в некоторых случаях может потребоваться запускать файл bat от имени администратора: правый клик по файлу .bat — запустить от имени администратора в контекстном меню).

Запуск bat файла от имени администратора

Существуют и другие способы сделать bat файл, но все они сводятся к написанию команд по одной команде в строке в текстовый файл в любом текстовом редакторе (без форматирования), который затем сохраняется с расширением .bat (например, в Windows XP и 32-битной Windows 7 вы даже можете создать файл .bat в командной строке с помощью текстового редактора edit).

Запуск программ в файле bat и другие базовые команды

Чаще всего бывают следующие задачи: запуск программы или нескольких программ из .bat файла, запуск какой-то функции (например, очистка буфера обмена, раздача Wi-Fi с ноутбука, выключение компьютера по таймеру).

Для запуска программы или программ используйте команду:

Если путь содержит пробелы, возьмите весь путь в двойные кавычки, например:

После пути к программе можно также указать параметры, с которыми она должна запускаться, например (аналогично, если параметры запуска содержат пробелы, возьмите их в кавычки):

Примечание: в двойных кавычках после start по спецификациям должно указываться имя командного файла, отображаемое в заголовке командной строки. Это необязательный параметр, но при отсутствии этих кавычек выполнение bat файлов, содержащих кавычки в путях и параметрах может пойти неожиданным образом.

Еще одна полезная возможность — запуск другого bat файла из текущего файла, сделать это можно с помощью команды call:

Переданные параметры при запуске можно прочитать внутри другого bat файла, например, мы вызываем файл с параметрами:

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

Т.е. для каждого параметра мы используем его порядковый номер со знаком процента. Результатом в приведенном примере будет вывод в окно команд всех переданных параметров (команда echo используется для вывода текста в окно консоли).

По умолчанию, окно команд закрывается сразу после выполнения всех команд. Если нужно прочитать информацию внутри окна, используйте команду pause — она остановит выполнение команд (или закрытие окна) до нажатия любой клавиши в консоли со стороны пользователя.

Иногда, перед выполнением очередной команды нужно подождать некоторое время (например, до полного запуска первой программы). Для этого можно использовать команду:

При желании, вы можете запустить программу в свернутом виде или развернутом видео с помощью параметров MIN и MAX перед указанием самой программы, например:

Для закрытия окна команд после выполнения всех команд (хотя, обычно оно и так закрывается при использовании start для запуска), используйте команду exit в последней строке. В случае, если консоль все равно не закрывается после запуска программы, попробуйте использовать такую команду:

Примечание: в данном команде, если пути к программе или параметры содержат пробелы, могут быть проблемы с запуском, которые можно решить так:

Читайте также: