YoctoDefender и ВиБетаДьже ЮЭтаИт, терпеливо и безмолвно (почти) дожидаемся версий 1.0 ваших антивирусов.
Кстати, интересно, каким образом будет работать новый антивирус от Дефендера?
Как и обычный антивирус. В одной сигнатуре БД - MD5-hash нескольких сотен байт(не говорю сколько именно, а то вирусописатели еще узнают). Если байты найдены - вирус. Кстати, раньше писал, что хэш 500 байт, но теперь другое кол-во байт.
О, а если я добавлю в эти 500 байт кода какое-то новое действие, которое не повлияет на работу вируса, то хеш будет другим, эффект -- тем же, антивирус промолчит. Как быть?
* N*100 байт
В то же время, если сузить поиск, то под подозрение попадут многие безвредные коды.
Вы знаете, что такое хеш-сумма? Судя по вашим заявлениям, да. Но под одну хеш сумму подходит не одно, и даже не два значения, а куда больше. А какие "обычные антивирусы" работают с хешами?
Да ладно! "Обычные антивирусы" - я не так написал, я имел в виду байты. Вероятность того, что изменятся именно эти несколько сотен байт
ОЧЕНЬ, ОЧЕНЬ мала. Советую посмотреть пример антивируса на Си на сайте av-school.ru, подойдет для начинающего.
Уважаемый Йокто-, сами байты не изменяются, а их изменяет человек либо программа, для того же, чтобы изменилась хеш-сумма достаточно изменить один байт. Прежде чем ходить на сайты для раскрутки мистера Касперского и его команды, а затем раздавать советы, оказывается, можно прочитать всего лишь одну страничку Википедии (по-моему, здесь кто-то кичился тоннами прочитанной литературы?), а заодно узнать, что же такое MD5: http://ru.wikipedia.org/wiki/MD5
Там и примеры совпадений есть, и применение, в общем, всё что Вам нужно.
Вероятность того, что изменятся именно эти несколько сотен байт
ОЧЕНЬ, ОЧЕНЬ мала
А, может быть, в этом всё дело? В 6-ом классе, насколько я помню, теорию вероятности не изучают, ну вот и плюются направо и налево незнакомыми словами. Опять же, Википедия в помощь: http://ru.wikipedia.org/wiki/Теория_вероятности
Раз уж и толстые намёки так фигово действуют, придётся ткнуть носом:
I. Допустим, есть у меня следующий набор букв: "HSNOBB". Я шифрую его в md5 со своим набором символов. У меня выходит такое: 28f3ea09ea86c0db661310cf155aaaf2
И нахожу набор "BNWUBH", в котором тоже выйдет 28f3ea09ea86c0db661310cf155aaaf2.
II. Допустим, есть у меня следующий набор букв: "HSNOBB". Примем его за вредоносный код, где символы -- взаиморазделенные его части. В языке программирования, на котором написан этот вредоносный код, можно написать такой код "A", который вне зависимости от положения никогда не влияет на ход процессов/значения переменных и пр. Антивирус имеет хеш вредоносного кода "HSNOBB" -- это 28f3ea09ea86c0db661310cf155aaaf2. Но стоит вписать "A", получив, к примеру "HSNAOBB" и всё, копец котёнку, хеш этого вредоносного кода -- 720b856ce85b535d8d445f96625f6850.
II.I. Допустим, есть у меня вредоносный код. Он состоит из двух функций. Антивир его хеш знает. Стоит поменять названия переменных/знак/скобку -- уже не знает.
А теперь, познав свою ошибку, и приняв изначально очевидную неправоту, можешь смело отправляться учить простейшие алгоритмы, и больше не пытаться "начинать изучать математику с матанализа", оправдываясь своей гениальностью/успехами в учебе/словами учительницы/книгами, которые всё равно не понял. Для начала, конечно, не помешало бы вырезать злокачественную опухоль с самооценки и засунуть свои детские понты куда подальше.
Например, файл, в нём данные(20 мб), я беру оттуда несколько сотен байт, которые присуще только этому файлу. Внимание, вопрос: какие я байты взял из файла и поместил в БД? Если вы думаете, что лучше открыть в блокноте ехешник, скопировать оттуда "текст", вставить в БД, а потом искать InStr'ом в файле, то лучше вам помолчать - ничего не понимаете. Не правы еще в том, что говорите криптором зашифровать и всё. А распаковщики зачем существуют?!
Ещё один пример: тестовый вирус eicar, обычно он в виде текста "eicar" и всякие закорючки, если его зашифровать, то уверен, что ни один антивирус не поймет, что это за вирус.
А если по делу, не обращая внимания на детские визги, то:
Имеется байтовый массив A длины N и байтовый массив B длины M, где B=A[j+i]. j -- номер первого элемента переписываемого "фрагмента".
Вопрос: какие байты взяты из файла и помещены в БД?
Ответ: никаких, потому что пока они хранятся в массиве.
"Не правы еще в том, что говорите криптором зашифровать и всё."
Я как раз-таки пытаюсь втюхать в тебя, что криптор -- абсолютно нелогичный, ничем на свете не оправданный твой ход.
"А распаковщики зачем существуют?!"
Какие еще нафиг распаковщики?! Йокто-, ты вообще в курсе, о чем речь?
Решение задачи использует регулярные выражения, поиск подстроки и прочее, а не херню, которую ты нам успешно представил.
И если ты еще не в... не понял, что операции, которые производят над массивом символов, применимы к массиву байтов, а блокнот и экзешник тут не при чем, то у тебя действительно проблемы.
MegaDefender пишет:
Например, файл, в нём данные(20 мб), я беру оттуда несколько сотен байт, которые присуще только этому файлу. Внимание, вопрос: какие я байты взял из файла и поместил в БД?
Ты думаешь это вопрос?
Исходники твоего "антивируса" не видел только самый ленивый участник этой темы (типа меня). Поэтому любому интерисующемуся потребуется 12 минут чтоб распотрошить исходники и базу данных, определить о какой именно сотне байт идет речь, добавить туда один noop, после чего вирус перестанет определяться (если он конечно до этого определялся).