Прямой доступ к макросам в документах 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.

Вот пока и все. Благодарю за внимание.