Как создать вирус? компьютерные вирусы. как сделать вирус-шутку

Введение

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

В данной статье будет рассмотрен процесс написания простого вируса, заражающего исполняемые файлы формата PE (Portable Executable) EXE. Также напишем программу-доктора, которая ищет в указанной директории и во всех поддиректориях файлы, зараженные нашим вирусом.

Данная самораспространяющаяся программа не содержит в себе никакого вредоносного кода, но ее с легкостью можно дописать до вполне боевого вируса. Поэтому хочу заметить, что ВСЕ ПРИВЕДЕННОЕ В ЭТОЙ СТАТЬЕ МОЖЕТ БЫТЬ ИСПОЛЬЗОВАНО ТОЛЬКО В УЧЕБНО-ПОЗНАВАТЕЛЬНЫХ ЦЕЛЯХ. Автор не несет никакой ответственности за любой ущерб, нанесенный применением полученных знаний.

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

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

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

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

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

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

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

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

Хулиганская версия

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

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

Кстати, именно эти «скучающие» ребята доставляют наибольшее количество работы вирусными аналитикам антивирусных лабораторий, так как ежедневно выпускают десятки тысяч новых вирусов по всему миру.

Ищем адреса API-функций

Следующая проблема состоит в поиске этих самых адресов. Но для начала нужно найти адрес библиотеки kernel32.dll в памяти, т.к. самые необходимые функции находятся именно в ней. Если нам потребуется использовать функции из других библиотек, мы просто используем LoadLibrary и GetProcAddress, которые находятся в kernel32.dll.

Существует множество методов поиска базы kernel32, один из которых — использование механизма структурной обработки исключений SEH (Structured Exception
Handling).

SEH представляет собой цепочку обработчиков — ячейки памяти, в которых содержатся адреса на процедуры обработки исключений. Эта цепочка начинается с fs:0000 и заканчивается последним обработчиком, который содержит значение 0FFFFFFFFh. Ну и что это нам дает? А то, что адрес последнего обработчика — это и есть адрес kernel32.dll в памяти.

Итак, дельта-смещение мы определили. Приведем теперь код поиска базы kernel32:

Здесь мы сканируем память (с того адреса, который мы только что получили) на наличие сигнатуры MZ (4D5Ah). Если она присутствует, значит, все сделано верно. Далее по смещению 3Ch находится смещение начала PE-заголовка. Сравниваем значение 2х байтов по этому смещению на сигнатуру PE (5045h) (на случай, если мы чисто случайно попали на ту область памяти, где нам встретились символы MZ). Если значение этих байт равно PE, то kernel32.dll несомненно найдена.

Теперь рассмотрим некоторые поля PE-заголовка, необходимые нам:

Чтобы найти адрес необходимой нам API-функции в kernel32, нам нужно добраться до секции экспорта этой библиотеки. По смещению 78h от начала PE-заголовка находится RVA адрес этой секции. Но не забудем, что нам нужен не RVA, а VA. Для этого нужно сложить этот RVA со значением Image Base (адрес в области памяти, куда файл проецирован системой). Тогда мы получим реальный адрес секции экспорта.

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

Теперь нам нужно получить адрес таблицы экспорта из секции экспорта. Рассмотрим некоторые интересные нам поля секции экспорта:

Первое поле содержит базу ординалов функций. Второе поле содержит число указателей на имена. Третье поле содержит RVA таблицы экспорта. Эта таблица содержит адреса экспортируемых функций (их точки входа) или данных в формате DWORD RVA (по 4 байта на элемент). Четвертое поле — RVA таблицы указателей на имена. Последнее поле — RVA на таблицу ординалов. Для доступа к данным используется ординал функции с коррекцией на базу ординалов (Ordinal
Base).

Итак, теперь мы знаем адрес таблицы имен и адрес таблицы адресов всех функций библиотеки kernel32.dll. Чтобы найти адрес конкретной функции, мы должны сравнить ее имя с каждым именем в таблице имен экспортируемых функций, и если очередное сравниваемое имя совпало с искомым, мы смотрим в таблицу ординалов по соответствующему индексу и извлекаем таким образом адрес функции. Далее нам этот адрес остается где-то сохранить (в нашем случае – в стеке) для дальнейшего использования и перейти к поиску адреса другой нужной нам функции и так далее.

Чтобы не хранить в коде вируса имена функций (ведь они бывают иногда длинные), нам достаточно хранить 4-байтовые хеш-значения имен. Заодно и при просмотре тела вируса в HEX-редакторе не бросаются в глаза имена функций, содержащиеся в коде вируса:

А при поиске нужной нам функции мы будем сравнивать не имена, а хеш-значения имен (подсчитав предварительно это значение для каждой нужной нам функции). Т.е., допустим, что мы нашли какое-то имя в таблице имен kernel32. Вычисляем хеш-значение этого имени и сравниваем это значение с искомым из нашей таблицы хешей HashTable. Если совпадают – значит, нашли. Если нет – ищем
дальше:

Но как нам вычислить заранее хеш-значение определенного имени? Для этого я написал небольшую программку на Visual C++ с ассемблерной вставкой, ссылку на которую можно найти в конце статьи (с исходником).

После выполнения приведенного кода адреса всех функций будут находиться в стеке:

Общая структура вирусного кода

Все вышесказанное было лишь прелюдией в процессе написания нашего вируса. Теперь начнется самое интересное. Будем писать вирус на MASM. Почему я отдаю предпочтение этому пакету? Просто он мне нравится.

Напишем общий файл main.asm, который будет включать отдельные части кода:

В файле start_code.inc содержится весь приведенный ранее код по определению дельта-смещения, поиску базы kernel и адресов функций. Содержимое остальных файлов будет ясно из дальнейшего изложения. Но в любом случае в конце статьи есть ссылки с полностью рабочими примерами и исходниками.

Смотря на этот код, можно задать как минимум два вопроса:

  • зачем нам макрос szText?
  • зачем подключать библиотеку kernel32.lib и вызывать функцию ExitProcess перед начальной меткой?

Хитрый макрос позволяет нам не хранить текст в переменной, а сразу заталкивать его адрес в стек перед вызовом какой-либо функции, имеющей одним из своих параметров текстовую строку. Например, в функцию
LoadLibrary:

Что же касается вызова функции ExitProcess, то здесь проблема кроется в системах старше Windows XP (Win9x\Me\NT\2000). При попытке запустить код без такого вызова программа попросту не запускалась в перечисленых системах. Причем молча. Скорее всего, это связано с тем, что в данных системах загрузчик не хочет загружать программы без секций импорта. Не будем отвлекаться от нашей темы, поскольку исследование данного вопроса выходит за рамки этой статьи.

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

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

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

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

Как проводится лечение гриппа у детей?

Противовирусные препараты для детей от гриппа

противовирусных лекарственных средств

Название препарата Механизм действия Как принимать
Препараты первого ряда — считаются наиболее эффективными.
Ремантадин На ранней стадии заболевания подавляет размножение в основном вируса гриппа А после его проникновения в клетки слизистой оболочки дыхательной системы. Назначается с возраста одного года в виде 0,2% сиропа, с семи лет — в таблетках.  
Арбидол Действует на вирусы гриппа А и В, подавляя их размножение. Также усиливает выработку в организме интерферона (белка, обладающего противовирусной активностью) и умеренно улучшает работу иммунной системы. Назначается внутрь в капсулах или таблетках до еды, начиная с трехлетнего возраста.    
Тамифлю и Занамивир Действуют на грипп А и В, подавляя активность нейраминидазы в их оболочке, которая способствуют высвобождению зрелых вирусов из инфицированных клеток дыхательных путей. По статистике при применении этих препаратов с первых дней заболевания в 40% случаев происходит значительное улучшение состояния больных и сокращение периода болезни, в 50% — понижается частота развития осложнений. Тамифлю   Назначается с возраста одного года. Применяется внутрь вне зависимости от приема пищи, но его переносимость лучше при приеме во время еды.  Занамивир   Назначается с возраста пяти лет в виде ингаляций с использованием прилагаемого ингалятора. 
Препараты второго ряда, действующие против большего количества разновидностей вирусов: вирусов гриппа, возбудителей ОРВИ и других.
Виферон — синтетический препарат интерферона Действия интерферона:

  • Защищает клетки организма от проникновения вирусов.
  • Запускает в клетках процессы, благодаря которым тормозится размножение вируса.
  • Нарушает выход вирусных частиц из зараженной клетки.
  • Умеренно стимулирует работу иммунной системы.
Препарат выпускается в виде свечей и вводится ректально — в прямую кишку.   Применяется у детей с периода новорожденности, в том числе и у недоношенных детей.  
Гриппферон и Амиксин Способствуют выработке интерферона в организме. Механизм действия такой же, как и у Виферона. Амиксин назначается детям старше семи лет однократно в сутки на 1,2 и 4 день применения.  Гриппферон для лечения гриппа применяется в каплях для носа.
Гроприносин (Изопринозин)
  • Блокирует размножение вирусов.
  • Стимулирует активность некоторых клеток иммунной системы — макрофагов, которые захватывают и переваривают вирусы, бактерии и чужеродные частицы.
  • Улучшает работу иммунной системы в целом.
Назначается внутрь после еды в таблетках, начиная с трехлетнего возраста, в сиропе — с одного года.  

На заметку! Длительность приема противовирусных препаратов при неосложненном течении гриппа обычно составляет 5 дней, при тяжелом течении — до 8-10 дней. Если необходимо более продолжительное лечение, врач принимает решение индивидуально в каждом конкретном случае

Важно принимать противовирусные препараты через равные промежутки времени

Борьба с симптомами общей интоксикации

Рекомендуется обильное питьеаллергииЖаропонижающие и обезболивающие средстваУ детей разрешены к применению только препараты на основе парацетамолаВ тяжелых случаях внутримышечно вводится литическая смесь, АнальгинаПоказания для введения:

  • Температура выше 39°С.
  • При температуре до 38°С: возраст до трех месяцев, имеются сведения о возникновении ранее судорог на фоне повышенной температуры тела, наличие тяжелых хронических заболеваний.

Важно! У детей не применяется ацетилсалициловая кислота, а также препараты на ее основе (Амидопирин, Аспирин). Поскольку она вызывает развитее большого количества осложнений — например, синдрома Рейе (острое воспаление головного мозга и быстрое накопление жира в печени)

Лечение поражения дыхательных путей

Для борьбы с мучительным сухим кашлемпротивокашлевые препаратыПри влажном кашле АмброксолДля восстановления дыхания через нос

Лечение тяжелых форм гриппа и его осложнений

Важно! Дозировки всех лекарственных средств, применяемых для лечения гриппа у детей, рассчитывает врач согласно возрасту и/или весу ребенка, а также с учетом наличия у него сопутствующих заболеваний. Кроме того, только доктор определяет кратность приема препаратов и решает вопрос о длительности лечения в зависимости от тяжести течения заболевания

Добавить комментарий

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

Adblock
detector