"Агрессия" и "агрессивный" хоть и однокоренные, но имеют несколько разное значение.
люди, абсолютно не имеющие представления о работе антивирусов, говорят(пишут) о каких-то глупостях.
Вот здесь-то ты погорячился, при том я не имею ни малейшего желания объяснять тебе, почему, т.к. ты и сам в курсе, просто аргументов у тебя, судя по всему, не оставалось.
Смотрел все ссылки и ничего полезного не нашел
Очевидно, ты даже не соизволил прочитать написанное там. Потому как минимум 2 статьи, которые могли бы расширить твои познания, там были: про Win.32.Friendly и про MD5. Ты же их не прочитал. И не надо спорить с фактами.
Я хочу, чтобы именно вы (oxygene) объяснили мне, какой способ правильнее(Только не надо давать ссылок).
Спасибо за такую честь, многоуважаемый Йокто-, но какой способ "правильнее" -- всё же зависит от требований к антивирусу, конечно, способы с хеш-суммами пролетают так или иначе (тем более, что сейчас их вообще не может существовать). В твоём случае уместен метод распознавания по словарю, который сравнивает не байты и не хеш-суммы, а структуру программы, выполняемые операции, закономерности, например, в константных строках (Был один гадкий вирус, который для размножения использовал php, для запуска -- javascript, так вот, единственный признак, по которому можно было его вычислить -- запись адреса сайта 16-ричкой, только с произовольным знаком вместо "%" и, соответственно, операция замены его на "%". Твои любимые InStr'ы, mid'ы и replace'ы в одиночку с таким не справятся. Моё упущение -- надо было сразу дать ссылку на то, что такое регулярные выражения и где они используются: http://ru.wikipedia.org/wiki/Регулярные_выражения
Прочитаешь -- многие вопросы отпадут, если не все.
Я всю википедию на тему вирусов и их анти- прочитал(в осн. на англ.)
Пролетают антивирусы, которые хэшируют весь файл, а не 100n байт! Вы поймите, что это не плохой метод! Вы, наверное, плохо видите, что на вашем же мониторе написано "хэш байтов", а не всего файла! Надоело, уже объяснять!
MegaDefender
сделай по шагам следующее:
1) Напиши хеллоуворлд с каким нить специфичным функционалом. пусть он например ищет файлы на диске через апи
2) Добавь его в свою базу. (здесь возникает спектр фич - у вб программ начало в принципе одинаковое, поэтому твои 100 байт могут легко сигналить на любой вб файл. но даже если это не так, то продолжаешь выполнять шаги)
3) возьми любой паблик криптор http://ifolder.ru/6590069 вот тут пачка
4) криптуешь свой хеллоуворлд вирус и проверяешь антивирусом.
5) Сообщаешь результаты
и не забудь еще проверить штуку - берешь исходный файл(назовем его vir.exe), закриптуй его одним криптором. полученный файл назови vir_crypted_1.exe. теперь тем же криптором закриптуй vir.exe и сохрани результат как vir_crypted_2.exe. ибо крипоры полиморфные и ты поймешь о чем шла речь... даже если ты сделаешь хэш для vir_crypted_1.exe он не будет работать для второго файла закриптованного тем же криптором.
Пролетают антивирусы, которые хэшируют весь файл, а не 100n байт! Вы поймите, что это не плохой метод! Вы, наверное, плохо видите, что на вашем же мониторе написано "хэш байтов", а не всего файла! Надоело, уже объяснять!
Зрение у меня действительно не лучшее, но на расстоянии от экрана вижу прекрасно, 100 байт -- грубо, 100 символов. Стоит вставить один пробел -- не та хеш-сумма, подставить код -- та же история... зачем мне повторяться? Всё уже сказано мной и не один раз. Дохлый номер. Опять же, иди читай про MD5!
Короче, получается, что надо опять сменить принципы работы сканера и БД?! Блин, третий раз. Придумаю
что-нибудь новое... байтов возьму 20-30. БД переделывать - месяц уйдёт.
да не работает этот принцип поиска для полиморфных вирусов. еще раз глянь как я проверял заражен ли файл вирусом или нет. там вообще нет байтовых масок. анализируются мнемоники(можно было и лучше сделать, но время жалко было убивать), наличие определенных команд. никаких хешей, ибо не работает этот принцип поиска. пойми это наконец...
ну суть одна - нада дизасмить код и анализировать поведение. мнемоники проще ибо для команды mov во всех ее вариациях слишком много вариантов опкодов и длин команды. мне надо было тока отследить факт работы со стеком, поэтому мнемоники вполне подошли.
хотя опять же зависит от качества полиморфа. бывает хватит и шаблонного поиска байтов. но просто сравнение байтов(а хэш по сути это и есть, просто задача хэша сократить длину проверямой последовательности, преобразовав ее в более короткую цепочку байт) не будет работать.