*Начало * Ответить * Статистика * Задать вопрос * Поиск * FAQ * * |
DotFix Forum / Вопросы программирования и исследования защит / антивирус |
Автор | Сообщение |
programmist Участник |
Дата: 22 Янв 2008 19:28 Скажите пожалуйста, можно ли с помощью средств visual basic создать антивирус? |
SafetyRU Участник |
Дата: 23 Янв 2008 18:23 Вопрос довольно простой на первый взгляд, но в двух словах на него не ответить. Если коротко, то так: недо-антивирус - написать можно, а полноценный - нет. |
programmist Участник |
Дата: 23 Янв 2008 18:30 [quote=SafetyRU] Вопрос довольно простой на первый взгляд, но в двух словах на него не ответить. Если коротко, то так: недо-антивирус - написать можно, а полноценный - нет. [/quote] Мне хотябы и неполноценный, лиш бы был антивирус, который своими руками создал, [quote=SafetyRU] но в двух словах на него не ответить [/quote] если в двух словах не ответить может кто - нибудь ссылку даст? Заранее всем спасибо |
SafetyRU Участник |
Дата: 24 Янв 2008 17:01 Для начала пару слов о себе: я являюсь программистом по специальности "компьютерная безопасность", так что этот вопрос напрямую относится ко мне. Постараюсь наиболее полно ответить на Ваш вопрос. Во-первых, интрумент написания. VB6.0 не способен обеспечить всех запросов, даже среднего, антивируса. Что должен делать антивирус? Работать в файлами, запущенными процессами и реестром - хотя бы это, а есть и много других наворов. Может ли VB хорошо работать с файлами? - нет, с тукстовыми - да, очень и очень хорошо, но вот с exe уже возникают трудности, да работает, но не так как хотелось бы. С процессами тоже не все ладно. Только пожалуй с реестром более-менее. Итог - VB не подходит для написания хорошего антивируса (я еще ничего не говорил о быстродействии - сами понимаете). Во-вторых, одному человеку написать хороший антивирус - почти нереально. Такие проги пишутся коллективом. Я знаю только один пример, когда в одиночку был написан антивирус - AVZ Олега Зайцева. Но и в этом случае не все ладно - AVZ был написан после чего Олег перешел в KasLab, как итог меньше времени стал уделять проге, и она стала морально устаревать, это ощущается уже сейчас. И Олег первоклассный вирусолог и программист. Да и AVZ написана не на VB. Ссылки давать, на мой взгляд, бесполезно в данной теме - слишком все быстро это развивается: я не думаю, что DrWeb выложит технологию своих знаменитых плавающих сигнатур. Исходники 15-летней давности на Ассемблере всречал, но они мало что могут дать. И наконец, хватит ли Ваших знаний для этого? Надо не только хорошо программировать, но и знать для этого все антивирусные и вирусные технологии... А например, написал недо-антивируса на VB - Safety AntiVirus, которого еще на школьной скамье. Сейчас я собрал своих коллег для этой задачи, если Вы непрочь присоединиться - напишите мне, посмотрим что можно придумать в данной ситуации. |
555 Участник |
Дата: 25 Янв 2008 21:00 SafetyRU а ты знаеш где этот код скачать можно? |
Admin Администратор |
Дата: 26 Янв 2008 15:37 Quoting: SafetyRU Может ли VB хорошо работать с файлами? - нет Юморист А как же по твоему я декомпиляторы и протекторы на VB пишу? Единственный минус антивируса на бейсике - очень низкая скорость. |
programmist Участник |
Дата: 27 Янв 2008 14:48 Все же почему то все затрудняются ответить на вопрос о создаии антивируса... |
SafetyRU Участник |
Дата: 27 Янв 2008 15:49 Шутим, стараемся.... Тем не менее VB плохо работает с файлами, но я не спорю. Исходники... Какие могут быть здесь исходники в принципе? Я ж говорил, ту прогу писал еще в 11 классе и то чисто на спор (в районной олимпиаде по информатике я с адептом другой школы делили в итоге 1 место, ну нас собрали и говорит мол "дополнительного тура не будет, так что напишите на VB по проге, у кого лучше, тот и победит" дали 2 дня, ну и написал что первое пришло в голову - прога в папке Windows искала скрипты и по эфристике искала скрипт-вирусы, это потом я её малость доделал... а принцип остался еще тот....) Повторюсь опять здесь надо знать методы детектирования тварей - если сигнатуры, то какие - контрольные суммы, с плавающей запятой или обычные; эвристика - для каждого типа вируса своя; поведенческий анализ... Ну и знать как пишутся эти самые вирусы. Напомню, что написание, распространение и применение вирусов - ПРОТИВОЗАКОННО! И конечно, свои уникальные идеи для нахождения вирусов. Вот кусочек кода открывающего скрипты как текстовые файлы и проверяющего этот скрипт классической эвристикой (набор эвристики, конечно не весь): Set R = fso.GetFile(BC7) Set txt = R.OpenAsTextStream(ForReading) R1 = txt.ReadAll txt.Close VBS = 0 'начальное значение счетчика b = 0 X1 = Len(R1) ' определяем длину текстовой строки For X = 1 To X1 ' обнаруживаем тварь! If ((Mid(R1, X, 7) = "GetFile") Or (Mid(R1, X, 7) = "getfile") Or (Mid(R1, X, 7) = "GETFILE")) And (K0 = 0) Then b = b + 1 K0 = K0 + 1 VBS = VBS + 0.5 End If If ((Mid(R1, X, 7) = ".Delete") Or (Mid(R1, X, 7) = ".delete") Or (Mid(R1, X, 7) = ".DELETE")) And (K1 = 0) Then b = b + 1 K1 = K1 + 1 VBS = VBS + 2 End If If (Mid(R1, X, 12) = ".CreateItem(") And (K2 = 0) Then b = b + 1 K2 = K2 + 1 End If Т.е. мы ищем в скриптах потенциально опасные команды, т.е. те, которые чаще всего встречаютсяв в вирусах. Нашли - счетчик увеличили, после проверки файла сверяем показатели счетчика, если этот показатель превысил определенный порог (здесь надо учитывать и побочные показатели, например, размер), то это вирус. Стоит отметить, что обычные скрипты он находит на "ура", с полной эвристикой скорость проверки - 10 файлов/cек, из 2500 проверенных файлов примерно 1 - ложное срабатывание, у AVIRA 7 ниже уровень детекта и больше ложных срабатываний при максимальной эвристике. Не стоит придираться к правильности построения кода - писал его давно. Но, как я уже говорил, есть масса методов, и только вместе они эффективны. Так же надо следить и за "прогрессом" вирусной индустрии, и за появлением новых зловредов, и новыми методами "прятанья" - те же новые версии упаковщиков. И самое, пожалуй, главное - где брать столько тварей? Допустим, у меня их только около 2000, а это мало! (Благо, когда стоял каспер, много нахватал - чего только не было!) Если у кого есть лишний вирус - шлите, буду очень рад ;), только пакуйте в архив, и пароль! "Почему никто не отвечает" ... Потому что это не только хорошее знание программирования... И по-моему я Вам ответил... |
programmist Участник |
Дата: 27 Янв 2008 16:00 Спасибо большое |
Admin Администратор |
Дата: 2 Фев 2008 17:51 * Поправил: Admin SafetyRU Както ты с файлами как в VBA работаешь Потому все и сложно у тебя. Чем не устраивает: sFile=FreeFile Open "C:\Test.txt" for binary As #sFile sData = Input(LOF(#sFile),sFile) Close #sFile Все Все содержимое файла в переменной sData |