Прямой доступ к макросам в документах MS WORD - Некоторые замечания
ОГЛАВЛЕНИЕ
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.
Вот пока и все. Благодарю за внимание.