Пример #1
0
        private void Compile(object data)
        {
            int progress = 4;

            string outputName = Junk.RandomString(25) + ".exe";

            SetProgressBar(0, progress);
            SetStatus("Unzipping..");
            HackFile hackFile  = (HackFile)data;
            string   directory = string.Concat(Path.GetFileNameWithoutExtension(fileName), "/");
            char     encKey    = Junk.RandomString(1).ToCharArray()[0];

            hackFile.Unzip(directory, encKey);
            StringEnc.SetKey(encKey);

            SetProgressBar(1, progress);
            SetStatus("Randomizing and Encrypting..");

            string str1 = string.Concat(Path.GetFileNameWithoutExtension(fileName), "_R/");

            hackFile.RandomizeAllFiles(directory, str1);
            SetProgressBar(2, progress);

            SetStatus("Compiling..");
            string str2 = string.Concat(Path.GetDirectoryName(txtCompilerPath.Text), "\\");

            ProcessStartInfo processStartInfo = new ProcessStartInfo()
            {
                FileName = "cmd.exe"
            };

            string str3 = "/C ";

            str3 = string.Concat(str3, "cd ", str1, "&");
            str3 = string.Concat(str3, "\"", str2, "vcvars32.bat\"&");
            string str4 = str3;

            string[] strArrays = new string[] { str4, "\"", str2, "cl.exe\" ", txtCompilerArgs.Text };

            str3 = string.Concat(strArrays);
            if (!chkboxDebug.Checked)
            {
                processStartInfo.UseShellExecute       = false;
                processStartInfo.RedirectStandardInput = true;
                processStartInfo.WindowStyle           = ProcessWindowStyle.Hidden;
                processStartInfo.CreateNoWindow        = true;
            }
            else
            {
                str3 = string.Concat(str3, "&pause");
            }

            processStartInfo.Arguments = str3;
            // MessageBox.Show(str3);
            Process.Start(processStartInfo).WaitForExit();
            SetProgressBar(3, progress);
            SetStatus("Finishing up..");

            if (File.Exists(outputName))
            {
                File.Delete(outputName);
            }

            bool flag = false;

            if (File.Exists(string.Concat(str1, outEXEName)))
            {
                File.Move(string.Concat(str1, outEXEName), outputName);
                flag = true;
            }

            if (chkBoxDeleteFolders.Checked)
            {
                Directory.Delete(directory, true);
                Directory.Delete(str1, true);
            }

            SetProgressBar(4, progress);
            SetStatus("Done with " + safeFileName);


            if (!flag)
            {
                if (chkBox_PromptMsg.Checked)
                {
                    MessageBox.Show("Something went wrong when compiling the randomized source!", "Error");
                }
            }
            else
            {
                if (chkBox_PromptMsg.Checked)
                {
                    MessageBox.Show(string.Concat("File saved as: ", outputName), "Compiling has been completed.");
                }

                if (num_Copies.Value == 1)
                {
                    if (chkBox_PromptMsg.Checked)
                    {
                        DialogResult msgBox = MessageBox.Show("Would you like to run this right now?", "Question", MessageBoxButtons.YesNo);

                        if (msgBox == System.Windows.Forms.DialogResult.Yes)
                        {
                            processStartInfo = new ProcessStartInfo()
                            {
                                FileName = outputName
                            };

                            Process.Start(processStartInfo).WaitForExit();
                        }
                    }
                }
            }

            isCompiling = false;
        }