Страница 5 из 5 6. Некоторые замечания Вообще-то, можно также получить исходный текст макроса, декомпилировав p-code или exe-code. Профессиональные вирусологи именно так и делают, а потом анализируют алгоритмы макровирусов по декомпилированному и "очищенному" исходнику, в котором все "разложено по полочкам", отсутствуют лишние пробелы, пустые строки, комментарии и "заковыристые" имена переменных. Кстати, Весселин Бончев даже опубликовал несколько лет назад статью, в которой с веселым изумлением обратил внимание общественности, что в процессе подобного анализа вирусологи фактически СОЗДАЮТ НОВЫЕ ВЕРСИИ ВИРУСОВ, и поэтому вполне могут быть за это посажены за решетку (особенно с учетом законопослушного до идиотизма западного менталитета). Ну а мы будем просто смотреть на "авторский" текст. Наличие вирусов в исходнике можно заподозрить, встретив методы Export/Import и/или OrganizerCopy. Также имеет смысл встревожиться, обнаружив методы типа AddFromFile, InsertLines, ReplaceLines и т.п., которые позволяют формировать текст копии макроса из отдельных строк. В принципе, этот процесс очень несложно автоматизировать. Кроме того, пора бить тревогу, если исходник выглядит "страшненько", например, как вот этот фрагмент знаменитого (среди вирусологов) полиморфного макровируса PolyMac (он же Chydow): ... Do Until F0cKAuGp3 > 48 F0cKAuGp3 = "F0cKAuGp3" + 8 : Loop: yMpAoI8 = yMpAoI8 + "@$qєfZ@" + Chr$(16) + "@{fZ3_Fq__zZSl" dpXaGhl5hvB8 = 7 : uTB5Xjcrdxv6 = 9 Nlqmq1xRKFCPt3 = 0 : zwdbIKu4BTCmSP1 = J5 + rpFYZ6 Do Until Nlqmq1xRKFCPt3 > 38 Nlqmq1xRKFCPt3 = Nlqmq1xRKFCPt3 + 5 : Loop Do While uTB5Xjcrdxv6 < 41 uTB5Xjcrdxv6 = uTB5Xjcrdxv6 + 3 ...
| Автоматизировать процесс распознавания такого рода заразы можно, лишь эмулируя исполнение p-code или exe-code и декодируя таким образом "тушку" вируса. "Но это уже совсем другая история". ЗаключениеЕще раз обращаю внимание читателей, что данная статья - не справочник, но побуждение к собственным исследованиям. Дабы избежать некоторой порции упреков, спешу сообщить, что для решения некоторых рассмотренных выше задач я знаю более быстрые и мощные методы и алгоритмы. Но в статье были рассмотрены простые "заменители" для этих алгоритмов и методов, которые, тем не менее, позволили бы в итоге все-таки решить задачу. Удачно ли у меня получилось - решать Вам. Кстати, я не буду сильно возражать, если компетентныме читатели начнут критиковать меня конструктивно, т.е. сами поделятся интересными сведениями на эту тему. Выражаю признательность участнику проекта "антивирус Stop!" А. Каримову, в беседах с которым родились (и, надеюсь, будут продолжать рождаться) все мои статьи, посвященные исследованиям формата документов MS Word. Вот пока и все. Благодарю за внимание. |